DeepSeek Engram 论文解读:存算分离的架构创新

DeepSeek 团队最近放出的这篇关于 Engram 的论文,非常有意思。它不像那些单纯堆参数、刷榜单的报告,而是实打实地在架构层面动了刀子。我看完整篇论文,最直观的感受是:他们试图打破 Transformer 长期以来”算力通吃”的局面,把”记忆”这件事从繁重的计算中剥离出来。
我们目前的 LLM 架构,无论是 Dense 还是 MoE,其实都存在一种隐性的算力浪费。模型在处理输入时,并不区分这是需要逻辑推理的复杂问题,还是仅仅需要死记硬背的固定搭配。对于”白日依山尽”接”黄河入海流”,或者”亚历山大”接”大帝”这种几乎没有变数的内容,模型依然要动用深层的注意力机制和前馈网络去逐层计算。这就像是让爱因斯坦去算小学加减法,能算对,但极其奢侈。
DeepSeek 提出的 Engram 模块,本质上就是一本挂在模型身上的”超级字典”。它的核心逻辑是查表(Lookup),而不是计算。当数据流经这个模块时,系统会对输入的 N-gram 进行哈希映射,直接在一个巨大的嵌入表中找到对应的向量。这个过程是 $O(1)$ 的,不消耗 GPU 的核心算力,只消耗显存或内存。
这种设计直接把”死知识”和”活思维”拆开了。传统的 MoE 架构里,专家网络(Experts)既要负责记知识,又要负责搞推理。引入 Engram 后,那些固定的事实、短语、成语被外挂的字典接管了。原本负责这部分工作的 MoE 专家被解放出来,可以全神贯注地去处理逻辑、因果和复杂的长文本依赖。
这就解释了论文中一个反直觉的实验结果:引入 Engram 后,模型提升最大的反而不是知识问答类任务,而是数学、代码和逻辑推理任务。因为大脑不需要再分心去背字典了,算力被集中到了真正的”思考”上。这在架构设计上被称为”有效深度”的增加,原本用来做特征重构的浅层计算,现在被查表代替,模型实际上变得更深了。
Engram 的介入方式非常讲究,并不是简单地把查出来的结果覆盖上去。论文提出了”上下文感知门控”(Context-aware Gating)。你可以把它理解为一个判官,它会拿着查字典得到的向量,去跟当前模型的隐藏状态比对。如果上下文吻合,就放行融入;如果查出来的东西虽然匹配字面但在这个语境下不通,门控就会把它拦截掉。这保证了模型既能利用先验知识,又不会被死板的记忆带偏。
在具体的部署位置上,DeepSeek 选择了第 2 层和第 15 层。第 2 层的插入是为了”抢跑”,在信息处理的初期就注入全局概念,省去模型自己拼字组词的功夫;第 15 层的插入是为了”校准”,在模型理解了大概文意后,提供更精准的消歧义信息。
关于这个字典怎么学,这里有个很硬核的细节。Engram 的查表索引是基于哈希的,这是死的,不需要学。但表里的内容(Value 向量)是活的,是参与反向传播的。训练时,如果模型发现查出来的向量不好用,梯度会顺着链路流回字典,直接修改对应位置的数值。久而久之,这个随机初始化的表就被训练成了一个高浓度的知识库。
从工程落地的角度看,Engram 的潜力比模型效果本身更大。因为查表是确定性的,不需要等待前一层的计算结果。这意味着我们可以在 CPU 内存里存一个几百 GB 甚至 TB 级别的超大字典,在 GPU 计算之前就异步把需要的向量预取出来。这直接绕开了 GPU 显存的瓶颈,让低成本扩展模型参数成为可能。
这种”存算分离”的思路,很可能是未来大模型架构演进的一个重要分支。它告诉我们,与其无脑堆叠昂贵的计算单元,不如回头看看计算机科学最古老的智慧:用空间换时间。
待补充:论文中关于 Engram 在长文本(Long Context)训练中的具体 Loss 曲线对比图;不同参数规模下 MoE 与 Engram 的最佳配比数据表。