| ResearchAudio · Directory of Listings | 2026 edition · arXiv 2601.07372 |
|
| ALLOCATION |
listings 01 to 09 |
UNPLUG |
|
|
DeepSeek Unplugged Its Memory Module. TriviaQA Kept 29 Percent.
The Engram paper behind the 196 billion parameters that sit next to DeepSeek-V4.1-Flash. Read as a directory: the facts have an address, and the address is the last three tokens.
|
| Listing · DeepSeek-V4.1-Flash · from the model card |
552B backbone parameters, the transformer with its experts |
196B Engram conditional memory, a lookup table, read on demand |
8B / 16B activated per token, prefill and decode |
| Three numbers, two kinds of parameter. The paper below is the reason the second number can live in host RAM or on an SSD while the first one stays on the GPU. |
|
|
see also: mechanism, listing 02. Stance: this is the architecture note for a model you can already call.
The paper is Conditional Memory via Scalable Lookup, from DeepSeek-AI and Peking University. Version 1 went up on January 12, 2026. Version 2, the one this issue reads, went up on July 12, 2026. The last name on the author line is Wenfeng Liang, DeepSeek's founder. Code is at github.com/deepseek-ai/Engram.
The claim: Mixture-of-Experts made computation conditional. Nothing in a Transformer made memory conditional. Every time a model recognises a fixed phrase, a name, an idiom, a code identifier, it rebuilds that phrase through attention and feed-forward layers, which the authors call simulating a lookup with compute. Engram adds the lookup. Recent tokens become an address. The address hits a table. The row comes back in constant time.
Where it landed: the DeepSeek-V4.1-Flash model card lists a 552B backbone and a separate 196B Engram memory, with 8B activated at prefill and 16B at decode. The weights on Hugging Face total about 763B. So the number you quote for this model depends on whether you count the table.
|
| How the lookup works | listing 02 |
see also: a telephone directory. Surname first, then the street, then the number.
Six steps, all deterministic until the gate.
| # | step | what the paper does |
| 1 | Compress the tokenizer | A fixed map folds token IDs that mean the same thing: Apple, apple, a leading space, accents. The 128k DeepSeek-V3 vocabulary shrinks 23.43 percent. The biggest merge folds 163 whitespace variants into one key. |
| 2 | Form the address | For each position, take the last 2 and the last 3 compressed tokens. Those two suffix N-grams are the address. No 1-grams, the plain embedding already covers them. |
| 3 | Hash it eight ways | Each N-gram goes through 8 multiplicative-XOR hash heads into tables of prime size. Eight heads so one collision does not poison the row. The pieces concatenate into a 1280-dim memory vector. |
| 4 | Gate it with context | The current hidden state is the query, the retrieved row supplies key and value. A sigmoid over their normalised dot product gives one scalar in (0,1). If the row contradicts the context, the scalar goes toward zero. |
| 5 | Smooth and add | A depthwise causal conv (kernel 4, dilation 3, SiLU) widens the receptive field, then the result is added to the residual stream. Conv weights start at zero, so training begins from an exact identity. |
| 6 | Place it twice | In the 27B run the module sits at layers 2 and 15 of 30. Layer 2 is the sweet spot the ablation found: one round of attention is enough to make the gate meaningful, and it is still early enough to spare the bottom layers the phrase-rebuilding work. |
One consequence of step 2 is worth holding onto. The address is the token sequence itself, not the hidden state. The model knows every Engram row it will need before the forward pass starts. That single property is what listing 07 is built on.
|
| The allocation law | listing 03 |
see also: the U-shape. Stance: this is the paper's cleanest result and it holds at two compute budgets.
Fix total parameters and FLOPs per token. Now decide how much of the inactive budget goes to routed experts and how much to Engram rows. The paper calls the expert share rho and sweeps it at two budgets, 2e20 and 6e20 FLOPs, keeping total-to-active at roughly 10 to 1.
| rho (expert share) | what the model looks like | val loss, 9.9B |
| 100% | Pure MoE. 99 experts at 9.9B, 106 at 5.7B. No table. | 1.7248 |
| 75 to 80% | The optimum. A fifth to a quarter of the sparse budget becomes lookup rows. Same location at both budgets. | 1.7109 |
| about 40% | 43 experts at 9.9B, 46 at 5.7B. The paper reports loss comparable to pure MoE, so more than half the experts were replaced by rows without a measurable penalty. | comparable |
| toward 0% | Memory with almost no conditional compute. Loss climbs. The authors are explicit: memory cannot replace computation here. | worse |
The gap at the optimum is 0.0139 in validation loss. Small in absolute terms, but it costs nothing in FLOPs, and pure MoE sits on the wrong side of it. A second experiment holds a 3B backbone fixed and grows the table from 258 thousand slots to 10 million (about 13B added parameters). Loss falls as a straight line in log space across the whole range. The table is a scaling knob that costs no compute.
|
|
see also: Table 1 of the paper. Same tokens, same data sequence, same 3.8B active, same 26.7B total.
MoE-27B has 2 shared plus 72 routed experts, top-6. Engram-27B cuts routed experts to 55 and spends the freed 5.7B on the table, so rho lands at 74.3 percent, inside the band from listing 03. Both train on 262B tokens. Engram-40B keeps the same backbone and grows the table to 18.5B.
| benchmark | MoE-27B | Engram-27B | delta | Engram-40B |
| Validation loss | 1.634 | 1.622 | -0.012 | 1.610 |
| MMLU, 5-shot | 57.4 | 60.4 | +3.0 | 60.6 |
| CMMLU, 5-shot | 57.9 | 61.9 | +4.0 | 63.4 |
| BBH, 3-shot | 50.9 | 55.9 | +5.0 | 57.5 |
| ARC-Challenge, 25-shot | 70.1 | 73.8 | +3.7 | 76.4 |
| CCPM (Chinese classical poetry), 0-shot | 79.6 | 87.1 | +7.5 | 87.7 |
| PopQA (long-tail facts), 15-shot | 19.2 | 19.4 | +0.2 | 21.2 |
| HumanEval, 0-shot | 37.8 | 40.8 | +3.0 | 38.4 |
| MBPP, 3-shot | 46.6 | 48.2 | +1.6 | 46.2 |
| MATH, 4-shot | 28.3 | 30.7 | +2.4 | 30.6 |
Two things the table says that the abstract does not. The largest single gain is on Chinese classical poetry matching, 7.5 points, which is the purest memorised-phrase task in the suite, and the smallest is PopQA, 0.2 points, the long-tail fact benchmark where a lookup table should shine. A 3-gram over compressed tokens is a phrase memory, not a fact store. Second, the 40B model with three times the table loses to the 27B on HumanEval, MBPP and MATH (red cells), and on C3, which is not shown. The authors call it under-training and note the loss gap was still widening at the end of the run. Hold that explanation loosely until someone trains it longer.
|
| The unplug test | listing 05 |
see also: Section 6.3 and Figure 6. Stance: this is the result the rest of the issue hangs on.
The authors zeroed the module's output at inference, backbone untouched, and re-ran the benchmarks. They warn the test is noisy because the network never trained without its table, so they report the two ends of the spectrum.
| task family | share of score retained with Engram off | example |
| Factual knowledge | 29 to 44 percent | TriviaQA 29% |
| Reading comprehension | 81 to 93 percent | C3 93% |
Read the two rows together. Cut the wire to the table and the model forgets most of what it knew, but still reads a passage put in front of it almost as well as before. The facts moved into the rows. The reasoning stayed in the backbone. That is a cleaner division of labour than anything an MoE router gives you, because a router's experts are not legible as "the knowledge" and "the logic".
Two interpretability probes point the same way. LogitLens shows the Engram model's early layers produce distributions closer to its final answer than the baseline's do. CKA alignment on named entities shows representations at layer 5 of Engram-27B line up with roughly layer 12 of MoE-27B. The authors' reading: the table does the first seven layers of phrase assembly, so the network behaves as if it were deeper. The paper's own example is the entity "Diana, Princess of Wales", which a standard model resolves one layer at a time from Wales, to a title, to the person, by layer 6.
|
| Long context, controlled | listing 06 |
see also: Table 2. Stance: the control is unusually honest, the headline row is the weaker of two.
Both 27B models got the same YaRN extension to 32k, 5,000 steps, 30B tokens. The twist is which Engram checkpoint goes in. The 46k-step checkpoint has the same pre-training loss (1.63) as the finished MoE at 50k, so any gap after extension belongs to the architecture, not to a stronger starting model.
| RULER at 32k | MoE-27B (50k) | Engram (46k, iso-loss) | Engram (50k) |
| Multi-query NIAH | 84.2 | 97.0 | 97.0 |
| Variable tracking | 77.0 | 87.2 | 89.0 |
| Frequent words extraction | 73.0 | 98.6 | 99.3 |
| Single NIAH | 100.0 | 97.6 | 99.3 |
| Common words extraction | 4.5 | 4.3 | 5.9 |
The authors' explanation is that local dependencies go to the table, so attention has capacity left for global context. The table supports that on multi-query retrieval and variable tracking. It also shows two things the abstract skips: the baseline wins single-needle retrieval at 100.0 against 97.6, and common words extraction is a wreck for every model in the table, under 6 percent across the board. An early-stopped Engram at 41k steps, 82 percent of the baseline's compute, still matches the baseline's long-text perplexity and beats it on RULER.
|
| The table leaves the GPU | listing 07 |
see also: Section 6.4, Table 4. Stance: measured on dense backbones, with a note on what that leaves out.
Because the address is known before the forward pass, the rows can be fetched while the first block computes. The authors put a 100B-parameter Engram table in host DRAM, inserted it at block 2 of a dense model, and ran a nano-vLLM harness on an NVIDIA H800 with 512 sequences of 100 to 1,024 tokens.
| configuration | tokens per second | cost of the table |
| Dense-4B, no table | 9,031.62 | base |
| Dense-4B plus 100B Engram in host memory | 8,858.28 | 1.9 percent |
| Dense-8B, no table | 6,315.52 | base |
| Dense-8B plus 100B Engram in host memory | 6,140.02 | 2.8 percent |
A hundred billion parameters that never touch HBM, at a throughput cost under three percent. Traffic per step scales with rows activated, not table size, so the table can keep growing. The design section goes further: N-gram hits are Zipfian, so hot rows can sit in HBM, warm rows in DRAM, the long tail on NVMe. The benchmark above did none of that and sent every row over PCIe.
Two caveats. The test backbones are dense, chosen to avoid expert-parallel traffic, so a production MoE serving stack competes for the same PCIe and interconnect. And the latency window is one block wide because the table sits at layer 2, exactly where the modelling ablation wants it. The hardware wants it deep, the loss wants it shallow, and the paper picks shallow.
What shipped follows the design, not the benchmark. Unsloth's V4.1-Flash guide runs the 196B table from SSD and says the production model addresses N-grams of up to four tokens, one more than the paper's three. The community GGUF builds pass a flag that pins the Engram weight tensor to CPU RAM and loads it lazily. The paper's memory hierarchy is already a command-line option.
|
| Corrections and gaps | listing 08 |
see also: everything above. Stance: what I checked and could not make line up.
| a | The abstract and introduction report MMLU +3.4. Table 1 reads 57.4 to 60.4, which is +3.0, and Section 4.2 says +3.0. The abstract figure does not match the paper's own table. |
| b | The 262B-token runs are small by production standards. V4.1-Flash's gains from its 196B table are not published as an ablation anywhere I could find, so the 27B deltas are the evidence, and they do not transfer automatically to a 552B backbone trained on tens of trillions of tokens. |
| c | The gating visualisation in Section 6.5 picks the most interpretable of 8 gate scalars per token (4 branches times 2 layers). The paper says so in a footnote: not every branch encodes an interpretable pattern. The heatmap is a curated view. |
| d | Prior work exists and the paper says so: hash embeddings (2017), OverEncoding, SCONE, N-Grammer, and ByteDance's UltraMem line. The novelty claimed is the iso-parameter, iso-FLOPs comparison plus mid-network placement for prefetching, not the idea of a hashed N-gram table. |
| e | The four-token N-gram and SSD offload for V4.1-Flash come from Unsloth's and NVIDIA's model documentation, not from DeepSeek's own card text, which I could not fetch directly. Treat those two details as secondary-source. |
|
| What it changes for you | listing 09 |
see also: your next model card. Stance: three practical readings, the third labelled as mine.
Parameter counts now need two columns. A 748B number for V4.1-Flash and a 552B number are both defensible. When you compare models, ask which column the table is in, and whether active parameters are quoted at prefill or decode. The paper's own metric for this is P sparse, the parameters you carry but do not compute, and Engram rows are the cheapest P sparse there is.
Local and edge serving math changes. Memory-class parameters do not need HBM. A model with a quarter of its weights in an N-gram table can run on a card that holds the backbone, with the table on the host or on disk, at a cost the paper measures in low single digits. Unsloth is already shipping that recipe for V4.1-Flash. Watch for the same split in the next open releases from other labs.
Knowledge might become addressable. This one is my inference, not the paper's claim. Facts collapsed to 29 percent when the table was unplugged, and every row has a deterministic address computed from tokens alone. That is the precondition for editing a model's knowledge by rewriting rows instead of fine-tuning weights, the thing ROME and MEMIT tried to do to feed-forward layers. The paper cites that literature and stops there. If anyone demonstrates row-level editing on an Engram model, that will be a bigger story than the benchmark table.
|
| arXiv 2601.07372, abstract page, v1 Jan 12 2026, v2 Jul 12 2026 |
| Full HTML of v2, Tables 1 to 6, Sections 3, 5, 6, Appendices A and C |
| deepseek-ai/Engram on GitHub |
| deepseek-ai/DeepSeek-V4.1-Flash on Hugging Face |
| NVIDIA NVFP4 card, 552B backbone, 8B prefill, 16B decode, 196B Engram |
| NVIDIA NeMo AutoModel notes on V4.1-Flash, sharded Engram memory |
| Unsloth, run V4.1-Flash locally, Engram on SSD, four-token N-grams |
| mHC: Manifold-Constrained Hyper-Connections, the multi-branch backbone Engram is fused into |
Every number above was read from the paper's v2 HTML or the linked model documentation. Deltas were recomputed from Table 1. Where a figure comes from a third party, the listing says so.
|
| ResearchAudio.io | end of listings |
|
|