本文由 无忆研习社 整理发布,深入剖析DeepSeek最新论文《Conditional Memory via Scalable Lookup》的核心技术原理与实现细节。
前言:一场悄然发生的架构革命
2026年1月12日,DeepSeek在元旦发布mHC(流形约束超连接)论文之后,再次抛出一枚重磅炸弹——Engram架构。这篇论文的作者阵容堪称豪华,DeepSeek创始人兼CEO梁文锋、北京大学王选计算机研究所的赵东岩和张辉帅教授均位列其中。
与其说Engram是一个新模型,不如说它是对大语言模型架构设计理念的一次根本性反思。当整个AI行业都在追逐更大的算力、更多的参数时,DeepSeek团队选择了一条截然不同的道路:通过引入"条件记忆"这一全新的稀疏维度,让模型在降低计算量的同时反而获得更优的性能。
无忆研习社将通过本文,为你完整呈现Engram架构的技术全貌。无论你是AI从业者还是对前沿技术感兴趣的爱好者,相信这篇文章都能让你对"条件记忆"这一概念有全面而深入的理解。
一、问题的根源:Transformer为什么需要条件记忆
1.1 稀疏性已成为智能系统的核心设计原则
在正式介绍Engram之前,我们需要先理解一个关键背景:稀疏性(Sparsity)已经成为现代大语言模型不可或缺的设计理念。
在大模型领域,稀疏性最成功的实现就是MoE(Mixture of Experts,混合专家模型)。MoE的核心思想非常优雅——在处理不同的Token时,只激活不同的参数子集。打个比方,就像一家大型医院有许多专科医生,当病人来看病时,不需要所有医生同时出诊,只需要根据病症找到对应的专家即可。这种机制让模型可以在不显著增加计算量的前提下,实现参数规模的大幅扩张。
DeepSeek-V3、GPT-4等前沿模型都采用了MoE架构,这已经成为构建超大规模语言模型的事实标准。
1.2 语言信号的异质性问题
然而,MoE解决的只是"条件计算"的问题。DeepSeek团队敏锐地发现,大语言模型本质上是在处理高度异质性的信号。
什么是异质性?简单来说,人类语言中既包含需要深度逻辑推理的复杂结构,也包含大量相对静态的知识片段,比如:
- 静态知识:人名(亚历山大大帝)、地名(银河系)、固定短语(威尔士王妃)、专有名词等
- 动态推理:逻辑推导、因果分析、创意生成等需要上下文理解的任务
问题来了:现有的Transformer架构并没有为这两种任务设计独立的处理通道。
1.3 昂贵的"记忆重建"代价
现有的大模型在处理"亚历山大大帝"这样的固定短语时,并不能像人类那样直接从记忆中提取。相反,它被迫通过深层的神经网络计算来"模拟"记忆检索的过程。
这就好比你每次想起自己家的地址时,不是直接从大脑的记忆区调取,而是要通过复杂的逻辑推导重新计算一遍。这显然是极其低效的。
DeepSeek团队在论文中明确指出:现有的大模型不得不在早期层中通过昂贵的计算来重建静态知识,从而浪费了宝贵的模型深度。那些本可以用于复杂推理的神经网络层,却被用来做简单的"背诵"工作。
二、Engram的核心理念:条件记忆
2.1 什么是条件记忆
基于上述观察,DeepSeek团队提出了一个与"条件计算"互补的全新稀疏维度——条件记忆(Conditional Memory)。
条件记忆的核心思想可以用一句话概括:依赖于稀疏的查找操作,为固定的知识检索提供静态嵌入表示。
用更通俗的话来说,Engram就是给Transformer加了一个"外接的记忆库"。当模型需要处理静态知识时,不再通过神经网络计算去"重建",而是直接通过查表的方式获取。
这种查找操作的时间复杂度是 (O(1))——常数时间,几乎不消耗计算资源。
2.2 条件计算 vs 条件记忆
为了帮助大家更好地理解,无忆研习社整理了一个对比表格:
|
维度 |
条件计算(MoE) |
条件记忆(Engram) |
|
核心机制 |
根据输入动态选择激活的专家 |
根据输入直接查找静态嵌入 |
|
适合的任务 |
需要动态推理的复杂任务 |
静态知识、固定模式 |
|
时间复杂度 |
依赖于专家数量和路由计算 |
(O(1)) 常数时间 |
|
参数利用 |
通过路由选择部分参数激活 |
通过哈希查找特定嵌入行 |
两者不是替代关系,而是互补关系。这是Engram设计的精髓所在。
2.3 N-gram的现代化复兴
Engram的技术根基来自经典的N-gram模型。N-gram是自然语言处理领域最古老、最成熟的技术之一,它通过统计连续N个词的共现概率来建模语言。
但传统N-gram有两个致命问题:
- 参数爆炸:如果词表大小是V,那么N-gram的参数量是 (V^N),指数级增长
- 语义稀疏:不同大小写、不同形态的同一个词被当作完全不同的实体
DeepSeek的贡献在于,他们通过一系列现代化的技术手段——分词器压缩、多头哈希、上下文门控、多分支集成等——将N-gram这个"老古董"改造成了能够在现代LLM中高效运行的条件记忆模块。
三、Engram的技术架构详解
3.1 分词器压缩(Tokenizer Compression)
这是Engram的第一个关键技术。
普通的分词器会把"Apple"、"apple"、"APPLE"这些单词当成完全不同的Token。但从语义角度来看,它们其实指的是同一个事物。这种冗余会大大降低N-gram记忆的密度和效率。
Engram通过预计算一个投影层,对词表进行了"清洗":
- 大小写统一:全部转换为小写
- Unicode规范化:处理各种编码变体
- 语义合并:将形态相似的Token映射到同一个规范形式
经过这番处理,一个原本包含128K个Token的词表,实际上只剩下77%的有效Token。有23%的Token ID被合并了。这让N-gram记忆的信息密度得到了显著提升。
举个例子,假设我们要查询"The Apple Inc."这个三元组(3-gram):
- 压缩前:需要单独存储"The"+"Apple"+"Inc."、"the"+"apple"+"inc."、"THE"+"APPLE"+"INC."等多种变体
- 压缩后:所有变体统一指向同一个规范化的记忆槽位
3.2 多头哈希记忆(Multi-Head Hashing)
即使完成了分词器压缩,直接对所有N-gram进行建模仍然是不可行的。假设压缩后词表有100K个Token,那么3-gram的组合数就是 (10^{15}) 量级,远超任何现实可承受的参数预算。
DeepSeek团队引入了多头哈希记忆机制来解决这个问题。
核心思想是:不试图为每个N-gram存储独立的嵌入,而是通过哈希函数将N-gram映射到一个固定大小的嵌入表中。
具体来说:
- 设定一个固定大小的嵌入表(比如包含S个槽位)
- 对于每个输入的N-gram序列,使用哈希函数计算其对应的槽位索引
- 使用多个不同的哈希函数(多头),得到多个嵌入向量
- 将多头的结果进行融合
这种设计的优势在于:
- 固定参数预算:无论N-gram的实际组合数有多少,嵌入表的大小是固定的
- 降低哈希碰撞噪声:多头机制类似于布隆过滤器的思想,通过多个独立的哈希函数来减少冲突
当然,哈希碰撞是不可避免的——不同的N-gram可能映射到同一个槽位。这就需要下一个技术来解决。
3.3 上下文感知门控(Context-Aware Gating)
多头哈希检索出的记忆是"静态"的,缺乏对当前上下文的适应性。当哈希碰撞发生时,检索到的嵌入可能与实际语境完全不符。
Engram引入了上下文感知门控机制来解决这个问题。
工作原理如下:
- 利用当前层经过注意力机制处理后的隐藏状态 (h_t) 作为"查询"
- 计算检索到的记忆向量 (m_t) 与当前上下文的相关性得分
- 生成一个门控值 (\alpha_t \in [0, 1])
- 最终输出 = (\alpha_t \cdot m_t)
当检索内容与当前语境不符时,门控值 (\alpha_t) 会趋向于0,从而抑制噪声;反之,当记忆高度相关时,门控值趋向于1,将外部知识注入信息流。
这种设计使得Engram不仅仅是一个静态数据库,更是一个能够根据语境动态调整的智能记忆体。
3.4 深度可分离因果卷积
为了进一步扩大感受野并增强非线性建模能力,Engram还引入了一个深度可分离的因果卷积(Depth-wise Separable Causal Convolution)层。
因果卷积的"因果"指的是:卷积操作只能看到当前位置及其之前的Token,不能"偷看"未来的内容。这保证了模型在自回归生成时的正确性。
深度可分离则是一种高效的卷积实现方式,它将标准卷积分解为深度卷积和逐点卷积两步,大幅减少了参数量和计算量。
这个卷积层帮助Engram在查找到静态记忆后,能够更好地与局部上下文进行融合。
3.5 多分支架构(Multi-Branch Architecture)
DeepSeek团队没有采用标准的单流残差连接,而是设计了一个多分支架构作为默认的主干网络。
传统的Transformer使用单一的残差流:每层的输出直接加到输入上。而多分支架构将这个残差流扩展为M个并行分支,这些分支:
- 共享记忆表:所有分支查询同一个Engram嵌入表
- 共享输出映射:最终汇聚到统一的输出层
多分支的好处是什么?它可以一次性用矩阵乘法搞定多条分支的计算,GPU利用率非常高。这种设计在保持表达能力的同时,最大化了硬件效率。
四、训练与推理优化策略
Engram的一个核心优势在于:记忆检索完全依赖于输入Token,而非运行时的隐藏状态。这种确定性的机制实现了参数存储与计算资源的解耦,为训练和推理阶段的优化提供了巨大空间。
4.1 训练阶段优化
分布式嵌入表存储
当Engram的嵌入表规模达到数十亿甚至上千亿参数时,单张GPU的显存是无法容纳的。DeepSeek的解决方案是:
- 将超大嵌入表分片(Sharding)到多张GPU
- 利用All-to-All通信按需收集对应的行
- 总记忆容量可以随GPU数量线性扩展
这种设计让Engram的记忆容量几乎没有上限——只要你有足够的GPU,就可以存储足够大的知识库。
4.2 推理阶段优化
异步预取机制
由于Engram的访问模式是"预先可知"的(由输入Token决定,而非中间计算结果),系统可以在前几层进行神经网络计算的同时,异步地从主机内存预取后续需要的记忆嵌入。
这种预取与计算的重叠实现了:
- 隐藏通信延迟
- 避免GPU停顿
- 保持推理吞吐量
实验数据令人印象深刻:即使将一个包含1000亿参数的Engram表卸载到主机内存,在H800硬件上的推理吞吐量下降也不到3%。
4.3 层次化存储策略
基于自然语言N-gram的分布特性(少数N-gram高频出现,大量N-gram罕见),Engram采用了多级缓存策略:
|
存储层级 |
存储位置 |
适合的内容 |
|
L1缓存 |
GPU HBM |
最高频的嵌入 |
|
L2缓存 |
主机DRAM |
中频嵌入 |
|
L3存储 |
SSD |
低频嵌入 |
这种层次化设计让Engram可以扩展至超大规模的记忆,同时保持低延迟和高效率。
4.4 最佳放置位置
Engram在Transformer中的放置位置需要平衡两个因素:
- 较早放置:有助于尽早完成局部模式的重建,释放深层网络的推理能力
- 较深放置:延长预取的时间窗口,更好地隐藏通信延迟
DeepSeek的消融实验发现,将Engram模块放在第2层效果最好。这样可以尽早卸载模型背负的局部模式重建任务,让后面的深层网络专注于复杂的全局推理。
五、稀疏分配的U型曲线定律
5.1 核心问题:MoE和Engram如何分配参数预算
当我们同时拥有MoE(条件计算)和Engram(条件记忆)两种稀疏机制时,一个关键问题浮现出来:
在固定的参数预算下,应该把多少参数分配给MoE,多少分配给Engram?
5.2 U型曲线的发现
DeepSeek团队通过系统性的实验,发现了一个重要的规律——U型曲线定律。
实验设置:固定总参数量,变化MoE和Engram的参数占比,观察模型性能(验证损失)的变化。
结果令人惊讶:
- 100%给MoE,0%给Engram:性能不是最优
- 0%给MoE,100%给Engram:性能也不是最优
- 75%-80%给MoE,20%-25%给Engram:性能最优
验证损失曲线呈现明显的U型,最低点出现在约75:25的分配比例处。
5.3 U型曲线的理论解释
为什么会出现这种U型曲线?DeepSeek给出了清晰的解释:
如果完全由MoE主导(100% MoE):
- 模型缺乏静态模式的专用记忆
- 所有静态知识都需要通过神经网络计算来"重建"
- 大量计算资源被浪费在简单的"背诵"任务上
如果完全由Engram主导(100% Engram):
- 模型失去了动态计算的能力
- 无法应对需要上下文理解和复杂推理的任务
- 变成了一个"只会查字典"的笨蛋
最优解在中间某处:
- MoE负责动态推理
- Engram负责静态知识存储
- 两者结构互补,各司其职
这条U型曲线为实际工程部署提供了重要指导:不要把所有资源都投入到神经网络计算中,预留20%-25%给条件记忆是明智的选择。
六、无限内存机制:一个新的Scaling维度
6.1 超越固定参数预算的探索
在确定了最优的MoE-Engram分配比例后,DeepSeek团队进一步提出了一个大胆的问题:
如果我们保持MoE主干不变,单纯增加Engram的记忆容量,会发生什么?
6.2 实验设计
研究人员进行了"无限内存机制"(Infinite Memory Regime)的实验:
- 保持MoE骨干网络参数量不变
- 将Engram的嵌入槽位数量从25万逐步增加到1000万
- 观察模型验证损失的变化
6.3 惊人的发现
结果显示:模型的Loss呈现出严格的对数线性下降趋势。
这意味着什么?
- 可预测的Scaling:增大记忆容量会持续带来收益
- 无需增加计算量:记忆表的扩展不增加FLOPs
- 新的扩展维度:Engram提供了一个与传统"增加参数/增加计算"完全不同的性能提升路径
6.4 与其他方法的对比
DeepSeek还将Engram与其他简单的记忆方法(如OverEncoding)进行了对比。结果表明,Engram的Scaling潜力更大,性能提升更加明显。
这些实验结果验证了条件记忆作为稀疏容量的独立可扩展维度,与MoE的条件计算形成了真正的互补。
无忆研习社认为,这一发现可能对整个AI行业产生深远影响——当GPU和HBM资源紧张时,通过扩展相对廉价的DRAM/SSD存储来提升模型性能,可能成为一条全新的赛道。
七、大规模实验验证
7.1 实验配置
在验证了架构和技术路径的可行性后,DeepSeek团队进行了大规模的预训练实验。具体训练了四个模型:
|
模型名称 |
总参数量 |
激活参数量 |
特点 |
|
Dense-4B |
41亿 |
41亿 |
全稠密基线 |
|
MoE-27B |
267亿 |
与Dense-4B相同 |
MoE稀疏基线 |
|
Engram-27B |
267亿 |
与Dense-4B相同 |
引入Engram |
|
Engram-40B |
395亿 |
与Dense-4B相同 |
Engram扩展版 |
所有模型使用相同的:
- 训练语料库:2620亿Token
- 分词器:DeepSeek-V3的128K词表
- 训练流程和超参数
7.2 Engram-27B的表现
Engram-27B是通过对MoE-27B进行改造得到的:
- 将路由专家数从72个减少到55个
- 释放的参数(约57亿)分配给Engram嵌入表
- 总参数量保持267亿不变
核心结果:
在相同算力和参数量的情况下,Engram-27B相比MoE-27B基线取得了持续的提升。更重要的是,这些增益不仅限于知识密集型任务:
- 通用推理任务:显著提升
- 代码生成任务:显著提升
- 数学推理任务:提升更为明显
这些结果有力地支持了DeepSeek的核心假设:通过引入专门的知识查找原