如何评价DeepSeek发布梁文锋署名论文,提出「条件记忆」及Engram记忆检索架构?有哪些亮点?

先来个总结,DeepSeek这篇论文就是想解决这个问题:把“计算/推理”(Computation)和“记忆”(Memory)拆分开。一看到“记忆”我们现在的第一印象是解决上下文问题,但是这个不是,这个研究是解决的 Transformer 的“原生记忆”缺失。

现在主流的MoE是通过条件计算来增加模型容量。但DeepSeek这次提出了一个互补的视角:语言任务本质上包含两类不同的子任务:组合推理和知识检索,那为什么不给模型加一个专门的"查表"机制呢?

目前的 LLM(特别是 MoE)通过“条件计算”(Conditional Computation)来扩展容量,但实际上模型是在用昂贵的神经网络计算去“模拟”知识检索过程。而Engram 引入了一个独立的、低成本的 “条件记忆” 模块,让模型拥有了原生的、O(1) 复杂度的查表能力(Lookup)。

它不再强迫神经网络去“死记硬背”所有静态模式,而是把这部分任务卸载给更擅长存储的查表结构,我们来举个例子:

比如说现在的大模型要记住"蒙古海军司令"这种实体,要从浅层开始通过多层Attention和FFN逐步组合特征。论文里引用了一个2024年的研究展示了识别一个常见的多token实体需要消耗好几层网络,并且说这本质上是在用昂贵的计算去重建一个静态的查找表。

所以Engram的方法就是把这种静态的、局部的、高度刻板的模式(比如人名、公式化表达)直接用O(1)的查表操作解决掉,而把宝贵的网络深度留给真正需要推理的部分。

这时候它们就开始对经典的N-gram embedding进行改造了:

把输入的文本切成各种长度的 n-gram,然后把这些片段映射到一个巨大的哈希表(Hash Table)里。

这个绝对又是邪修的操作了,它不是让模型去“算”这个词的向量而是直接去“查”,或者可以说是又加了一层动态的embedding。

输入进来 -> 切片 -> 哈希映射 -> 查表拿到向量

这个过程的复杂度是 O(1),不管数据量多大查表速度基本不变。在模型进行预测时不仅看Attention和FFN计算出来的结果,还会去Engram表里查一下:“这个上下文我以前见过没?”如果见过就把查到的向量融合进去。

这样一来那些高频出现的短语、固定搭配、事实性知识,直接查表就完事了。模型原本的层(尤其是浅层网络)就能从繁重的记忆任务中解脱出来,专心去搞更深层的逻辑推理和泛化。

这就是github上面这个架构图要展示的内容,我觉得论文里面的这张图更能说明这个架构和流程

具体怎么细节,比如提取2-gram和3-gram作为后缀、融合阶段用了context-aware gating,后还加了个短的depthwise causal conv扩大感受野等等这些细节我及不废话了,因为看一遍原始论文要比任何人讲的都明白。而且现在这个还没开放源代码,只是放了个论文,在没有任何源代码的情况下谈细节都是白扯。

上面说了加一层embedding,如果保持参数不变那么这个embedding要多大呢?

所以论文里面说了一个Sparsity Allocation问题:给定固定的参数预算和计算预算,怎么在MoE专家和Engram记忆之间分配容量?

他们定义了allocation ratio ρ ∈ [0,1],表示把多少不活跃参数分给MoE,它们公国实验发现了一个稳定的U型曲线:

  • ρ=100%是纯MoE baseline
  • ρ≈40%时性能已经能和纯MoE持平(5.7B模型只用46个专家,9.9B模型只用43个)
  • 最优点在ρ≈75-80%,这时候validation loss比纯MoE降低0.0139

就是论文里的这个U型曲线说明两个极端都不行:全MoE的话模型缺dedicated memory,得浪费计算去重建静态模式;全Engram的话又缺conditional computation capacity,动态推理能力受损。两者确实是结构互补的。

其他的指标提升我就不复制了,不过可以总结的是长文本表现很亮眼。不过Engram只是个静态查表,为什么对推理帮助这么大?好像论文说的也不是特别明白。

最后总结,这是一个思路清晰,可以说是DeepSeek又对MOE进行魔改了,MoE的routing依赖runtime hidden states,但Engram的retrieval index只依赖input token sequence,在forward pass之前就能算出来。

训练时用All-to-All通信可以embedding表shard到多卡,总memory capacity和加速器数量线性scaling。

推理时则可以prefetch-and-overlap。因为知道下一个Engram lookup需要哪些index,可以异步从host memory (DRAM)通过PCIe取embedding,用前面几层的计算时间来mask通信延迟。

而且Engram 表是在推理阶段是稀疏且只读的。 也就是说这个巨大的Embedding表(可能几百GB甚至TB级)根本不需要全塞进HBM(高带宽显存)里!论文里也提到了,这部分参数可以卸载到 内存(RAM) 里。因为查表对计算要求极低,普通内存的带宽完全扛得住。这样我们就用相当于是在内部给模型挂了知识库。

而且别忘了Engram理论上是有实时更新能力的,想让模型学会一个新知识,是不是直接更新Engram表就行了,这可比lora微调可快多了。虽然论文里主要讲预训练但这个后面的工作想象空间太大了。

DeepSeek走的这条路子非常清晰:极致的稀疏化。

  • MoE 是计算的稀疏化(每次只激活一部分专家)。
  • Engram 是存储的稀疏化(只检索相关的记忆片段)。

把这两个结合起来很可能就是 DeepSeek V4 的雏形。这种架构一旦跑通我们可能会看到模型在参数量暴涨的同时推理成本却能控制在极低的水平。

未来的大模型,可能是一个“小而精”的推理核心,外挂着一个可随时更新的“大而全”的Engram记忆库。

原始链接: https://www.zhihu.com/question/1994233409871050526/answer/1994354520864600584
侵权请联系站方: [email protected]

相关推荐

换一批