来源:市场资讯

(来源:刘聪NLP)

今天给大家分享知乎好友@大狗狗是狼 的一个回答内容(我做了部分补充),DeepSeek V4为什么没有采用自家的Engram技术?

知乎link:https://www.zhihu.com/question/2031512824917267006/answer/2032519034411987107(已授权)

V4的技术报告里有一句很容易被滑过去的话,未来方向,包含条件记忆模块。

打开网易新闻 查看精彩图片

而这个sparse embedding modules对应的论文,就是《Conditional memory via scalable lookup: A new axis of sparsity for large language models.》

打开网易新闻 查看精彩图片

条件记忆就是Engram。

1月发的论文,4月V4发布,过了快三个月,代码也开源了。所有人都以为V4会用上,结果没有。

PS:因为没明说,所以那些command+f 或者 ctrl+f 没找到 engram 正常,狗头

要搞清楚这件事,得从V4面对的最原始的问题开始。

Transformer做长上下文有一个结构性的麻烦。注意力机制的计算量随序列长度平方增长,上下文每翻一倍,算力翻四倍。128K到100万token,理论上是60多倍的算力增长。V4要支持百万token上下文,这个问题绕不开。

他们想到的办法是压缩。把多个token的KV条目合并成一个,然后只对合并后的条目做注意力计算。

CSA把每4个token的KV压缩成一个,再做稀疏选择,只挑一部分条目参与计算。HCA做得更激进,每128个token的KV合并成一个,不做稀疏选择,但序列长度被压缩了上千倍。两套结构交替叠加,再配合滑动窗口保局部细节。两套结构都用共享KV的多查询注意力来减少内存占用,加上分组输出投影和部分旋转位置嵌入。

最终百万token下单token推理FLOPs降到了V3.2的27%,KV Cache砍到10%。

打开网易新闻 查看精彩图片

但注意力改了之后,残差流的信号传播开始出问题。

残差连接的作用是让信息从浅层传到深层,每一层接收上一层处理过的结果,同时保留一份原始输入。模型越深,信号经过的变换越多,越容易失真。传统残差连接在几十层的网络里还能应付,但V4的规模更大,层数更多,残差流经过太多变换之后数值开始不稳定。

字节Seed的HC方案,把残差流从一维拆成多条并行通道,通道之间用矩阵混合。相当于给残差流增加了一个新的维度,让信息可以走多条路并行传递。理论上是好的,但DeepSeek实际堆多层的时候发现,纯HC在超深层训练时数值会漂,梯度说崩就崩。

他们后来给混合矩阵加了一个约束,让它变成双随机矩阵,行和列的和都等于1。这个约束保证了信号在通道之间传递时不会被放大也不会被缩小,数值稳定性就稳住了。这就是mHC。

打开网易新闻 查看精彩图片

残差和注意力都改了,优化器也暴露出问题。

AdamW在万亿参数规模上收敛慢,而且需要存一阶矩和二阶矩,显存占用翻倍。V4换成了Muon,用Newton-Schulz迭代来近似二阶信息,不需要存完整的二阶矩阵,收敛速度比AdamW快。但Muon的预条件计算本身也需要额外的显存和计算开销。

到这里V4的核心架构改动就齐了。三个改动互相依赖:混合注意力改了attention层,mHC改了残差连接,Muon改了优化器。每一个改动都要在32T token的预训练数据上验证稳定性。

训练框架等于在重构。

然后才是Engram要进来的问题。

Engram要解决的是另一种浪费。

Transformer把推理和记忆混在同样的参数里,一个简单的知识检索也要过几百层神经网络。比如问模型”巴黎的首都是哪里”,它不是在检索已有的知识,而是在用注意力机制和FFN一层一层算出这个答案。为了记住琐碎的事实知识,模型被迫越做越大,算力被大量消耗在静态模式的重构上。

打开网易新闻 查看精彩图片

Engram的做法是把固定的、局部的语言模式从神经网络里剥离出来,存成一张N-gram嵌入表。输入token先经过一个压缩层,把语义相同的不同写法归一化,比如Apple和带空格的apple和全大写的APPLE被合并成同一个ID,这样词汇量减少了大约四分之一,N-gram的语义覆盖率就提高了。然后提取后缀N-gram,用多头哈希查到嵌入向量。

论文里用了8个独立的哈希头,碰撞概率极低。查到的嵌入向量过一个上下文感知的门控,用当前隐藏状态和检索到的记忆算一个标量门控值,如果记忆和上下文冲突就抑制掉。最后经过一个因果卷积注入残差流。论文里Engram插在第2层和第15层。

打开网易新闻 查看精彩图片

这张表在推理时可以放到主机内存里,因为查找索引只取决于输入token,不需要等中间层计算结果,可以提前预取。利用前几层的计算时间窗口,异步通过PCIe拉取下一层需要的嵌入向量,实现通信和计算重叠。论文测出来这种预取方式的开销在百分之几以内。

但训练的时候这张表必须在GPU显存里,因为要算梯度。论文的方案是把表分片到多张GPU上,用All-to-All通信拿活跃行。也就是说训练时不但享受不到主机内存卸载的好处,还要额外背跨GPU通信的开销。

V4同时换了Muon优化器,训练显存本就已经紧张。AdamW要存一阶矩和二阶矩让显存翻倍,Muon虽然不用存完整二阶矩阵,但预条件计算本身也有开销。Engram这张表加上对应的优化器状态,在万亿参数规模上的额外负担不是加几张卡能解决的。

embedding这一步如果用Muon训练时显存消耗会过大,在V4-Pro这种1.6万亿参数的模型上,每一张GPU上的HBM都在极限调度。

打开网易新闻 查看精彩图片

而且Engram和mHC的关系也很紧。论文里Engram直接嵌在mHC的多分支架构上,嵌入表和Value投影在所有分支间共享,每个分支有独立的Key投影做门控。这意味着Engram要跑起来,mHC必须先到位。而mHC在V4里本身就是个新东西,刚搞定数值稳定性。再往上叠Engram,训练不稳定的风险成倍增加。

还有一个scaling的问题。Engram的实验是在比较小的规模上做的,论文的训练FLOPs预算在10的20次方量级,模型参数量在百亿级别。从27B到V4的1.6万亿,差了快60倍。

打开网易新闻 查看精彩图片

小规模上All-to-All通信不是问题,到了万卡集群,通信开销、与MoE路由的交互、分布式训练稳定性,这些论文里描述了但没在大规模上实测的东西,都会变成实际的工程挑战。论文提到了多级缓存策略利用N-gram的Zipfian分布,高频模式放HBM,常见模式放DRAM,长尾模式放SSD,但这些在万亿参数规模上的实际效果需要验证。

V4技术报告把Engram列在未来方向,留给V5。选择是先把三条主战线跑通万亿规模,等mHC稳住了,混合注意力把长上下文效率提上去了,Engram才能作为一个独立的新维度叠加到一个稳固的架构上。

打开网易新闻 查看精彩图片

到那时候查算分离才算完整。计算交给MoE和注意力机制,记忆交给Engram。Transformer不用再什么都自己算,可以有一个外挂的记忆库。