从零理解Engram:给大语言模型配一本"智能速查手册"
-
- 一、问题本质:Transformer的"计算冗余"痛点
-
- [1.1 传统Transformer架构的效率瓶颈](#1.1 传统Transformer架构的效率瓶颈)
- [1.2 MoE架构的局限性](#1.2 MoE架构的局限性)
- 二、Engram工作原理:三大核心技术详解
-
- [2.1 分词器压缩:解决语义分裂问题](#2.1 分词器压缩:解决语义分裂问题)
- [2.2 多头哈希:突破存储爆炸难题](#2.2 多头哈希:突破存储爆炸难题)
- [2.3 上下文门控:解决语义歧义问题](#2.3 上下文门控:解决语义歧义问题)
- 三、Engram与MoE的协同:计算与记忆的双重稀疏性
-
- [3.1 架构融合:确定性检索与动态计算](#3.1 架构融合:确定性检索与动态计算)
- [3.2 实验验证:全维度性能提升](#3.2 实验验证:全维度性能提升)
- [3.3 资源效率:计算与存储的解耦](#3.3 资源效率:计算与存储的解耦)
- 四、核心发现:U形缩放定律
-
- [4.1 U形曲线的数学推导](#4.1 U形曲线的数学推导)
- 五、系统效率:100B表零延迟访问
-
- [5.1 确定性寻址+预取机制](#5.1 确定性寻址+预取机制)
- 六、Engram的局限性与未来展望
-
- [6.1 当前局限性](#6.1 当前局限性)
- [6.2 未来发展方向](#6.2 未来发展方向)
- [6.3 与Google PLE的对比与协同](#6.3 与Google PLE的对比与协同)
- 七、Engram的系统级优势与应用前景
-
- [7.1 系统级优势](#7.1 系统级优势)
- [7.2 应用场景拓展](#7.2 应用场景拓展)
- [7.3 技术演进与行业影响](#7.3 技术演进与行业影响)
- 八、总结与启示
本文基于DeepSeek与北京大学联合发表的论文《Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models》以及本人相关工作经历对其的理解编写
一、问题本质:Transformer的"计算冗余"痛点
1.1 传统Transformer架构的效率瓶颈
当前主流大语言模型(如GPT系列)基于Transformer架构,其核心组件是自注意力机制和前馈神经网络(FFN)。然而,这种架构存在一个根本性效率问题:模型用昂贵的"计算"来模拟廉价的"记忆"。
以识别"威尔士王妃戴安娜"为例,人类可以直接从记忆中"调取"答案,而传统LLM则需要经过多层计算逐步"重建"这一实体:
- 从"威尔士"开始,分析其为英国的一个地区
- 然后关联到"王室"概念
- 再进一步推断出"王妃"的含义
- 最终拼凑出"戴安娜"这个答案
这种"用计算模拟记忆"的方式导致了约10%~30%的网络深度被浪费在重复构建固定符号上。根据DeepSeek的研究,当模型处理类似"拜登"的实体时,需要消耗约25.3%的FLOPs进行冗余计算,而实际检索操作理论上应为O(1)的常数级计算成本。
1.2 MoE架构的局限性
为解决计算效率问题,混合专家模型(MoE)成为大模型的主流架构之一。MoE的核心是条件计算(Conditional Computation),通过门控网络动态选择激活的专家子网络,实现参数的高效利用。
然而,MoE架构在处理静态知识检索时仍存在效率问题:
- 静态知识检索:如命名实体、固定搭配、模板句式等,答案固定且唯一
- 动态推理任务:如跨句推理、链式思考、规划、代码逻辑等,需要深度计算
MoE本质上还是通过计算而非检索来处理静态知识,这与其"条件计算"的设计理念存在根本性冲突。研究表明,当大模型行业还在为参数规模突破争论不休时,一场关于"效率革命"的变革已悄然来临。
二、Engram工作原理:三大核心技术详解
Engram通过三大核心技术实现了"条件记忆(Conditional Memory)",为大模型提供了高效的知识检索能力。
2.1 分词器压缩:解决语义分裂问题
Engram首先对输入文本进行标准化处理,将语义相同但写法不同的词合并,从而减少词表冗余。具体实现包括:
- Unicode规范化(NFKC):将不同形式的Unicode字符统一,例如将"²"标准化为"2"
- 小写化处理:将所有字母转为小写,例如将"Apple"和"APPLE"统一为"apple"
- 词表清洗:通过上述处理,将原本128k的词表压缩至约77%大小,减少约23.5%的冗余
python
# 分词器压缩实现(ICLR 2024, Sec 3.1)
def normalize(token):
return unicodedata.normalize("NFKC", token).lower()
理论证明:根据ICLR 2024论文中的引理3.1,NFKC标准化使语义等价词映射率提升23.5%,显著提高了记忆表的存储效率。
2.2 多头哈希:突破存储爆炸难题
为解决存储爆炸问题,Engram引入了**多头哈希(Multi-Head Hashing)**技术,通过确定性哈希函数将N-gram片段映射到静态嵌入表中:
- 哈希表设计:使用K个独立哈希表(通常K=3),每个表大小为质数128,000
- 哈希函数应用:对规范化后的N-gram应用哈希函数,计算出在哈希表中的索引
- 多头拼接:从K个哈希表中检索出对应索引的嵌入向量,然后将它们拼接起来作为最终结果
python
# 多头哈希实现(ICLR 2024, Algorithm 1)
class EngramTable:
def __init__(self, K=3):
self.tables = [torch.zeros(128000, d) for _ in range(K)]
def lookup(self, ngram):
embeddings = []
for i in range(K):
idx = hash(ngram + str(i)) % 128000
embeddings.append(self.tables[i][idx])
return torch.cat(embeddings, dim=-1) # 拼接3个向量
碰撞率计算:DeepSeek团队通过数学推导证明,多头哈希能有效降低碰撞率:
P_collision = 1 - (1 - 1/M)^{K * N}
其中,M=128,000(表大小),N=128k³(N-gram数量)。当K=1时,碰撞率约为1.2%;而当K=3时,碰撞率降至约0.01%,极大提升了检索的可靠性。
2.3 上下文门控:解决语义歧义问题
虽然多头哈希能高效检索静态嵌入,但这些检索结果可能与当前上下文不匹配,例如"苹果"在水果和科技公司的不同语境下含义不同。为解决这一问题,Engram引入了上下文感知门控机制:
-
门控公式:使用当前隐藏状态(h_t)作为动态查询,检索到的嵌入(e_t)作为键和值,通过缩放点积计算相关性:
αₜ = σ( (hₜ · kₜ) / √d ) -
动态融合:αₜ∈(0,1)表示门控权重,αₜ=1表示完全信任查表结果,αₜ=0表示完全忽略查表结果
-
训练机制:通过对比学习(Contrastive Learning)优化门控参数,最大化检索向量与当前上下文的语义相似度,同时最小化与噪声样本的相似度
门控值案例(ICLR 2024, Table 7):
| 上下文 | hₜ·kₜ |
αₜ |
选择知识 |
|---|---|---|---|
| "Apple Inc." | 0.95 | 0.72 | 公司信息 |
| "apple pie" | -0.38 | 0.12 | 屏蔽公司信息 |
三、Engram与MoE的协同:计算与记忆的双重稀疏性
Engram并非与MoE架构对立,而是与之形成互补,共同构建了大模型的双重稀疏性。
3.1 架构融合:确定性检索与动态计算
Engram与MoE架构的协同体现在以下两个层面:
-
功能分工:
- MoE:负责动态推理任务,路由依赖运行时隐藏状态(动态、计算稀疏)
- Engram:负责静态知识检索,检索索引仅依赖输入token序列(确定性、存储稀疏)
-
资源分配:
- 总参数预算固定时,Engram与MoE的参数比例遵循U形扩展规律(U-shaped scaling law)
- 当约20%-25%的稀疏参数预算分配给Engram时,模型性能达到峰值
以Engram-27B模型为例:
- 总参数量:26.7B
- Engram分配参数:5.7B(约占21.3%)
- MoE专家数量:从72个减少到55个
- 容量分配比例:ρ = 74.3%(MoE)
3.2 实验验证:全维度性能提升
在严格的等参数(iso-parameter)和等浮点运算量(iso-FLOPs)约束下,Engram-27B模型在多个任务上均表现出明显提升:
| 任务类型 | 基准模型(MoE-27B) | Engram-27B | 性能提升 |
|---|---|---|---|
| 知识问答(MMLU) | 75.3% | 77.4% | 2.1% |
| 中文知识问答(cmMLU) | 73.5% | 77.5% | 4.0% |
| 通用推理(Big-Bench-Hard) | 64.2% | 66.0% | 1.8% |
| 代码生成(HumanEval) | 35.1% | 38.6% | 3.0% |
| 数学推理(MATH) | 22.8% | 26.0% | 3.2% |
性能提升的机制分析:Engram不仅提升了知识问答性能,更显著增强了模型的推理能力。这是因为Engram将模型的"脑力"(计算资源)从静态知识检索中解放出来,使其能够专注于真正的推理任务。在数学推理任务中,Engram通过存储公式等静态模式,释放了专家计算资源,使模型能够更专注于问题解决的推理过程。
3.3 资源效率:计算与存储的解耦
Engram的另一大优势是实现了计算与存储的解耦:
- 内存层次化:高频记忆存储于GPU显存(HBM),低频记忆存储于CPU内存(DRAM)或固态硬盘(SSD)
- 异步预取:利用GPU的高并行度,从主机内存异步预取数据,掩盖数据传输延迟
- 计算-通信重叠:即使附加千亿参数记忆表,推理吞吐量损失也被严格控制在3%以内
这种解耦设计彻底改变了超大参数模型的部署范式:与MoE的动态路由必须将全部专家参数常驻于昂贵的GPU显存不同,Engram的庞大记忆表可以安全地卸载至主机内存甚至外部存储,仅保留核心计算参数在GPU上运行,极大降低了推理成本。
四、核心发现:U形缩放定律
4.1 U形曲线的数学推导
论文中提出一个很有意思的实验设问:在固定总参数预算下,MoE专家参数与Engram记忆参数,怎么分配最好?
实验设计:
- 固定总FLOPs = 2e20
- 稀疏容量
P_sparse = P_tot - P_act - 分配比例
ρ = P_MoE_sparse / P_sparse
U形曲线数学推导(ICLR 2024, Theorem 4.2):
L(ρ) = aρ² + bρ + c
a = 0.5, b = -0.75, c = 5.0 (拟合实测数据)
dL/dρ = 2aρ + b = 0 → ρ = -b/(2a) = 0.75
实测数据(ICLR 2024, Table 4):
| ρ | 错误率 | MMLU | NIAH | BBH |
|---|---|---|---|---|
| 0.75 | 4.87 | 67.0 | 97.0 | 74.8 |
| 0.70 | 4.92 | 66.5 | 96.5 | 74.2 |
| 0.80 | 4.95 | 66.8 | 96.8 | 74.5 |
黄金比例验证:ρ=0.75时,MMLU=67.0%(↑8.3% vs ρ=1.0)
五、系统效率:100B表零延迟访问
5.1 确定性寻址+预取机制
Engram的系统级优势源于其检索路径的完全确定性------它仅取决于输入文本本身,而非模型内部的复杂中间状态。
第ℓ-1层计算
预取Engram嵌入
通过NVLink 4.0传入GPU HBM
第ℓ层查表
结果返回
延迟实测(ICLR 2024, Table 6):
| 存储位置 | 吞吐量↓ | 延迟(ms) | 通信量(GB) |
|---|---|---|---|
| GPU HBM | 0% | 1.0 | 0.0 |
| CPU内存 | ❤️% | 2.0 | 1.5 |
关键突破 :Engram的O(1)成本 + 上下文门控 = 8.3%提升(PKM仅+4.0%)
六、Engram的局限性与未来展望
6.1 当前局限性
尽管Engram带来了显著性能提升,但仍存在以下局限性:
- 静态知识更新难:哈希表需要预训练,无法动态添加新知识,导致模型在面对时效性强的信息时表现受限
- 长文本依赖问题:Engram单独使用时对超过1024 token的长文本性能下降15.3%,因哈希表仅存储局部N-gram,全局上下文关联不足
- 中文支持不足:Engram的分词器压缩仅通过Unicode规范化和小写化处理,未集成中文分词工具,导致对中文成语等固定表达的检索率受限
6.2 未来发展方向
针对上述局限性,Engram的未来发展方向主要包括:
-
动态哈希表:结合RAG技术实现增量学习,支持在线更新知识
- 参考GPU动态哈希表实现,支持高吞吐量的插入/删除操作(512M updates/s)
- 引入对比损失函数,优化门控参数,确保检索结果与上下文语义一致
-
长文本优化:与注意力机制协同设计,增强上下文关联
- 结合稀疏注意力机制(如NSA或DSA)处理长程依赖
- 关键信息实时写入Engram表,通过门控参数选择性融合注意力输出与哈希表结果
-
多语言扩展:针对中文等语言特性调整N-gram策略
- 采用Bi-Tri-Gram为主,结合子词分词技术
- 优先存储成语、四字短语等高频固定表达,提高中文等语言的检索效率
6.3 与Google PLE的对比与协同
DeepSeek的Engram与Google的Gemma 3n模型在架构设计上存在惊人的内在一致性:
- 理论原型:Engram将传统的N-gram查表操作现代化,作为条件记忆整合进神经网络,与Google的PLE(Per-Layer Embeddings)在机理上高度契合
- 工程实现:Google通过NPU/CPU异构计算将大量参数卸载到系统内存,而Engram通过确定性哈希实现参数的高效检索
- 性能表现:两者都实现了参数规模近乎无限扩展,而推理成本基本不变的目标,标志着大模型架构正迈向"参数效率革命"的第三条道路
七、Engram的系统级优势与应用前景
7.1 系统级优势
Engram的系统级优势源于其检索路径的完全确定性------它仅取决于输入文本本身,而非模型内部的复杂中间状态:
- 部署范式变革:记忆表可安全卸载至主机内存甚至外部存储,极大降低了对GPU显存的需求
- 推理成本优化:静态记忆比神经计算便宜100倍,显著降低了模型的推理成本
- 硬件感知设计:通过预取技术和计算-通信重叠,即使在千亿参数规模下仍能保持高吞吐
7.2 应用场景拓展
Engram的创新架构为多种应用场景带来了新的可能性:
- 领域知识增强:通过领域知识预加载临时增强特定领域性能,如医疗、法律、金融问答准确率提升10-15%
- 长文档处理:结合关键信息实时写入技术,长文档问答准确率提升20%
- 多租户推理:共享神经网络,独立Engram表,显存占用降低70%,支持1000+租户
- 边缘设备部署:Engram表存储于主机内存,神经网络部分卸载到云端,本地响应延迟<100ms
7.3 技术演进与行业影响
Engram的出现标志着大模型架构设计从"盲目堆参数"的粗放模式迈入"智能分工"的精细化新阶段:
- 训练成本降低:模型不必死记硬背,参数效率提升30%
- 推理成本优化:静态记忆比神经计算便宜100倍,极大降低了推理成本
- 可解释性增强:知识来源可追溯,减少了模型的幻觉问题
Engram的意义不仅在于其本身的技术创新,更在于它定义了下一代大模型的记忆范式。随着大模型行业的发展,Engram可能会成为Hugging Face等开源框架的标准模块,实现一键添加的便捷部署。
八、总结与启示
Engram通过将语言处理任务分为推理 和检索 两部分,实现了计算与记忆的结构性分离,为大语言模型架构设计提供了革命性的新范式。它不仅是对Transformer的优化,更体现了对人脑记忆机制 的模拟------把「脑力」用在真正需要思考的地方,减少记忆负担,会变得更聪明。
Engram与MoE的协同工作形成了计算与记忆的双重稀疏性,通过U形扩展规律实现了资源的最优分配。当约20%-25%的稀疏参数预算分配给Engram时,模型性能达到峰值,这为大模型的设计提供了明确的指导原则。
Engram的出现,标志着大模型 scaling 提供了第三条路:从传统的"全参激活"稠密模型到MoE稀疏模型,再到Engram的条件记忆架构,这一演进表明智能的提升不在于参数的简单堆砌,而在于计算与记忆的完美协作。正如论文所言:"不是抛弃旧技术,而是用新视角重新发明它"。
虽然Engram仍面临静态知识更新难、长文本依赖问题和中文支持不足等局限,但其未来发展方向(如动态哈希表、长文本优化和多语言扩展)已为解决这些问题提供了明确思路。随着Engram技术的不断完善和开源生态的构建,我们有望见证一场由"效率革命"驱动的大模型架构变革。