Mixture-of-Storage Capacity Scaling
A single memory block limits online capacity and trainable memory parameters; Mixture-of-Storage expands it into independent experts with shared addresses and separate dense routers for writes and reads.
What it is
- Memory experts MoS expands one memory block into multiple independent memory experts, each with its own memory state and expert-specific parameters.
- Two routers, shared addresses Every expert shares the same set of learned addresses, but separate routers decide how information is stored and how memories are used for reading.
- Weighted read fusion Each expert produces a read result, and utilization routing weights those results into the final memory output.
Why it matters
The design increases online memory capacity and trainable memory parameters while allowing writing and reading to distribute differently. Because routing is dense, all experts participate in memory computation.
Before getting into the moving parts, here is the short version: Mixture-of-Storage takes one memory block and turns it into several independent memory experts. Every expert is involved, but writing into memory and reading from it get separate routing decisions. That is a way to grow both the stored state and the trainable memory machinery without making one route do two jobs.
-
Capacity: A single memory state is one place to keep information. MoS adds an expert dimension, so the layer maintains multiple independent states. The canonical example is the memory state itself: expert one has its own state, expert two has another, and so on. This is not just extra labels on a shared notebook; the states are distinct. Each expert also has its own hyper-memory parameters. What makes the experts useful rather than simply duplicated?
-
Different jobs: The system needs to decide both where new information goes and which stored information contributes to the current read. I find it helpful to think of those as filing and lookup: you can file a note in one set of places and consult a different mix later. The analogy stops at the point that these are learned, dense routes, not a person choosing folders by hand. The same pre-attention hidden states go to every expert and both routers, but storage and utilization have separate router projections. So the question is: how can two decisions refer to the same experts without being identical?
The answer is shared addresses with separate projections. Think of the addresses as common names for the experts; the storage and utilization routers each learn how to use those names. Both produce probabilities across the expert dimension, and both use dense routing, so every expert participates in memory computation. In everyday terms, both filing and lookup can refer to the same shelves, but they need not favor the same shelves. What happens after each expert has done its own read?
Each expert produces its own memory-attention result, and the utilization route weights those results into the final read. On the write side, experts produce their own keys, values, and storage controls, including erase, write, and log-decay terms; storage routing distributes storage across the experts. The paper's available text names these operations, but the displayed equations are not present in the supplied page text, so I won't invent their exact form. The key intuition is that reads are fused from expert outputs while storage remains expert-specific. What do you gain, and what are you paying for that flexibility?
You gain more independent memory states and separate control over reading and writing. The cost is that dense routing involves every expert in the memory computation, rather than saving work by skipping experts. I like the clean separation of filing from lookup; the tradeoff is that scaling the expert count also scales the participating memory machinery.
Read the deep dive
Why People Wanted It
A native memory block has a capacity problem: if you want more online memory state and more trainable memory parameters, simply asking one block to do more does not create independent storage. The real question is how to expand memory without making each token choose only one expert or forcing reads and writes to use the same routing decision.
Mixture-of-Storage (MoS) answers by expanding a native memory block into parallel memory experts. Every expert participates, while separate dense routers decide how information is written and how existing memory is read.
The Core Move
Give each expert its own memory state, give the two routers a shared set of expert addresses, and let their distinct routing probabilities control storage and utilization. The paper gives the architecture and its equations in the surrounding text, but the displayed formulas are missing from the available page text; so no more detailed formula is reproduced here.
Why Experts Expand the Memory State
Now the version for readers who want more of the machinery: the state is not just a wider single memory; it gains an explicit expert axis. In MoS layer , expert has dynamic state . Each expert also has independent hyper-memory parameters. The same pre-attention hidden states are supplied to all experts and to both routers, so specialization comes from expert-specific memory and routing rather than different input streams.
That distinction matters: an expert is an independently maintained memory participant, not merely a label attached to one shared state. What determines which parts of the input each independent state receives?
Why Shared Addresses Still Allow Different Routes
Here is the part that gets technical: the routers share a trainable matrix of expert addresses, but use separate projection matrices for utilization and storage. Each router projects the common input into the address dimension and computes probabilities with softmax along the expert dimension. The addresses therefore give both routers a common semantic set of experts, while their separate projections let them assign different probabilities.
This is dense routing, not sparse top-choice dispatch: all experts participate in memory computation. The probabilities determine how information is read from and written into the experts. Sharing addresses does not mean sharing the routing decision. Why should reading from memory use a different mixture from writing to it?
Why Reads Fuse While Writes Stay Expert-Specific
Now the deeper operational detail: each expert independently performs the native memory-utilization procedure and produces its own memory-attention output. MoS forms the final token-level memory attention by weighted read fusion using the utilization routing probabilities. On the storage side, each expert independently produces its memory key, value, erase gate, write gate, and log-decay using expert-specific parameters; storage routing controls the distribution of storage across experts.
So the design keeps the read combination explicit while preserving separate expert states and storage controls. The source pages identify these quantities and operations, but their displayed equations are absent in the available text, so the exact fusion and update equations are not stated here. What does this buy—and what does it cost to keep every expert involved?
Minimal Causal Code
This sketch shows the routing separation and state ownership, not the paper's omitted equations or a complete native-memory update. The update placeholder is deliberately visible rather than pretending to specify details absent from the page text.
# h: shared pre-attention hidden state
# addresses: trainable expert address matrix
# route_u and route_s: separate router projections
u = softmax((h @ route_u) @ addresses.T, dim=-1) # utilization
s = softmax((h @ route_s) @ addresses.T, dim=-1) # storage
read = 0
for e in range(num_experts):
expert_read = native_memory_read(h, state[e])
read = read + u[..., e:e+1] * expert_read
for e in range(num_experts):
expert_controls = expert_specific_storage_controls(h, e)
state[e] = native_memory_update(
state[e], expert_controls, storage_weight=s[..., e:e+1]
)
What You Gain, and What You Lose
You gain multiple independent memory states and expert-specific hyper-memory parameters, with dense routing that lets both storage and utilization draw on every expert. Shared addresses provide a common expert representation, while separate router projections let writing and reading distribute differently.
You also pay for expanding the memory state and running every expert in the memory computation: unlike sparse MoE routing, MoS does not skip non-selected experts. And the two-router design introduces distinct storage and utilization routing decisions rather than one shared route. It is a capacity-and-control tradeoff, not a free increase in memory.
MoS gives memory more independent places to store information, then lets separate dense routers decide what to write and what to read.