mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
2673 字
8 分钟
Conditional Memory(Engram):查表也是一种稀疏化
2026-07-14

Conditional Memory(Engram)论文解读:查表也是一种稀疏化#

论文:Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models 作者:Xin Cheng、Rui Tian 等,北大与 DeepSeek-AI 联合 2026 年 1 月。这篇把稀疏性这个主题往一个新方向推。MoE 解决的是”条件计算”,参数按输入动态激活;但语言里还有一大块静态知识,专有名词、固定搭配,本质上是查表,Transformer 没有原生的查表原语,只能拿算力硬模拟。Engram 把经典的 N-gram 嵌入现代化,O(1) 查表,跟 MoE 组成”条件计算 + 条件记忆”双轴。27B 模型对比同参数同算力的纯 MoE,知识、推理、代码数学全面占优,还顺带把长上下文检索能力大幅提升。


一、核心观察:语言有”计算”和”查表”两种成分#

语言建模其实包含两类性质不同的子任务,组合推理和知识检索。前者需要深度、动态的计算;后者,比如专有名词(“亚历山大大帝”)、固定搭配,是局部的、静态的、高度模式化的,经典 N-gram 模型就能抓住。

问题是 Transformer 没有原生的知识查表原语,模型被迫”用计算模拟检索”。解析一个常见多 token 实体要消耗好几个早期层的注意力加 FFN,本质是用昂贵的运行时计算重建一张静态查找表,白白浪费序列深度。这些深度本该留给高层推理。

解法是给 Transformer 加一个互补的稀疏轴,条件记忆。MoE 是条件计算,稀疏激活参数处理动态逻辑;条件记忆是稀疏查表,检索静态 embedding 处理固定知识。

二、Engram:把 N-gram 嵌入现代化#

检索阶段#

Tokenizer 压缩。标准子词 tokenizer 追求无损重建,语义等价的词被分到不同 ID(Apple vs. ␣apple)。Engram 加一个词表投影层,用 NFKC 归一化、小写化等把原始 ID 折叠成规范 ID,128k 词表实际缩小 23%。这样 N-gram 的键更稠密。

多头哈希。所有 N-gram 组合直接参数化不可行,用哈希。每个 N-gram 阶数配 K 个哈希头,每个头用确定性函数(乘法-XOR 哈希)把压缩后的上下文映射到素数大小的 embedding 表。最后把各阶各头的检索向量拼接成记忆向量。

融合阶段#

检索出来的记忆是”无上下文的先验”,静态、可能有哈希碰撞和多义词噪声。用上下文感知门控来消歧,当前隐状态(已经聚合了全局上下文)当 Query,检索到的记忆当 Key 和 Value,算一个 sigmoid 门控 α。如果记忆跟当前上下文矛盾,门控趋近 0,噪声被压掉。

再过一个轻量深度因果卷积(核大小 4,膨胀系数取最大 N-gram 阶数 3)扩大感受野,残差接入主干。Engram 只放在特定层,不是每层都加(实际插在第 2/15 层,8 头、维度 1280)。

多分支集成#

主干用多分支架构(mHC,M=4),Engram 做了参数共享适配,一张稀疏表和一个共享 W_V,M 个不同的 W_K 实现分支特异门控,还能把线性投影融合成一次稠密 FP8 矩阵乘,算力利用率拉满。

三、系统效率:确定性是最大的红利#

MoE 靠运行时隐状态动态路由,参数必须活在 GPU 上。Engram 的检索只依赖输入 token ID,是确定性的,参数存储和计算天然解耦。

  • 训练:大表分片到各 GPU,前向用 all-to-all 收集激活行,反向分发梯度,总容量随卡数线性扩展。
  • 推理:索引在 forward 前就确定了,可以从宿主内存通过 PCIe 异步预取,用前面层的计算当缓冲藏住通信延迟。100B 参数的表放宿主内存,开销不到 3%。
  • 分层缓存:N-gram 遵循 Zipf 分布,高频模式放 GPU HBM 或宿主 DRAM,长尾稀罕模式放 NVMe SSD,容量随便扩,延迟几乎不受影响。

四、稀疏性分配:U 形缩放定律#

论文提出稀疏性分配问题,总参数量固定,MoE 专家和 Engram 记忆之间怎么分?实验发现一条 U 形缩放定律,中间好、两头差,纯 MoE 和重记忆都不是最优,存在一个最佳分配点,最优区间大约在 ρ≈75%–80%,且 2e20 / 6e20 两个算力预算下都成立,ρ≈40% 时 Engram 已经能和纯 MoE 打平。还研究了无限记忆区间,Engram 自己就能持续受益,同等记忆预算下扩展潜力远超 OverEncoding 这种把 N-gram 嵌入与词表嵌入平均的对比方法。

五、成绩(262B token,3.8B 激活参数)#

对比严格同参数同 FLOPs 的 MoE-27B 基线(Engram-27B 从 72 个路由专家减到 55 个,把参数挪给记忆):

知识:MMLU 60.4(+3.0)、CMMLU 61.9(+4.0)、MMLU-Pro 30.1(+1.8)、MMLU-Redux 64.0(+3.4)。

推理(增益更大):BBH 55.9(+5.0)、ARC-Challenge +3.7、DROP +3.3。

代码数学:HumanEval 40.8(+3.0)、MATH +2.4、GSM8K +2.2。

长上下文:Multi-Query NIAH 97.0 对 84.2,Variable Tracking 89.0 对 77.0。Engram-27B 只用基线 82% 的预训练 FLOPs(41k 对 50k)就达到同等的 LongPPL。

Engram-40B:骨干和算力不变,把记忆表从 5.7B 扩到 18.5B(总参数 39.5B),性能大体继续上涨(MMLU 60.6、CMMLU 63.4、BBH 57.5),证明记忆容量是独立的扩展轴。

机制分析(LogitLens 和 CKA)说明增益来源,Engram 把早期层的静态重建负担卸掉,网络的有效深度变深,复杂推理更从容;局部依赖交给查表后,注意力腾出容量专注全局上下文,长上下文检索因此大涨。

收尾:我的一点看法#

这篇论文的思想浓度很高,一句话概括,“语言模型把太多算力花在模拟查表上”。MoE 已经证明稀疏参数有效,Engram 证明稀疏查表同样有效,而且两者互补。这个”条件计算 + 条件记忆”的双轴框架,是继 MoE 之后稀疏性方向最清晰的新增量之一。

最漂亮的是系统设计。Engram 的确定性检索让”把 100B 参数的表扔到宿主内存”成为可能,这是 MoE 做不到的,MoE 的路由依赖运行时状态,参数必须驻留 GPU。内存和计算解耦之后,参数扩展的墙被推后了。那个基于 Zipf 分布的多级缓存设计也很务实,高频词图快、长尾词图容量。

推理增益大于知识增益这个结果值得玩味。直觉上记忆模块该帮知识任务,结果 BBH +5.0 比 MMLU +3.0 还高,机制分析给出了解释,卸掉早期层的静态重建等于”免费加深网络”。这说明查表省下的不是显存,是推理深度,深度才是推理能力的硬通货。

U 形缩放定律是方法论上的贡献。它把”参数怎么分”从拍脑袋变成可优化的量,为后续模型设计提供了公式。V4 论文里把它列为未来方向,说明 DeepSeek 主模型已经盯上了这条线。

泼冷水的话,这是 27B 规模、262B token 的验证,离主模型规模的证据还远;N-gram 记忆对多语言和全新实体的泛化能力存疑(查表表里没有的东西就是没有);哈希碰撞带来的噪声靠门控压,但门控本身也是学习的负担。不过作为”下一代稀疏模型的基础原语”的论证,这篇已经立住了。


附:核心数据速查#

Engram 模块

阶段设计
检索词表投影压缩(23%)+ 多头哈希(乘法-XOR)+ O(1) 查表
融合上下文门控(隐状态 Query / 记忆 K-V)+ 深度因果卷积 + 残差
放置仅特定层(平衡建模与延迟)
多分支共享表 + 共享 W_V,M 个 W_K,融合成 FP8 GEMM

系统

  • 训练:表分片 + all-to-all(容量随卡数线性扩展)
  • 推理:宿主内存预取 + 计算重叠(100B 表开销 <3%)
  • 多级缓存:快层 HBM / DRAM,慢层 NVMe SSD(按 Zipf 分布分层)

成绩(vs 同参数同 FLOPs 的 MoE-27B,262B token)

指标Engram-27B增益
MMLU60.4+3.0
CMMLU61.9+4.0
BBH55.9+5.0
HumanEval40.8+3.0
Multi-Query NIAH97.0vs 84.2
Variable Tracking89.0vs 77.0
  • Engram-40B(只扩记忆):MMLU 60.6、CMMLU 63.4、BBH 57.5,持续上涨
  • 82% FLOPs(41k vs 50k)达到同等 LongPPL

关键概念清单

  • conditional computation = 条件计算(MoE,稀疏激活参数)
  • conditional memory = 条件记忆(Engram,稀疏查表)
  • N-gram embedding = N 元组嵌入(经典局部依赖建模)
  • hashing lookup = 哈希查表(O(1),多头抗碰撞)
  • tokenizer compression = 词表投影压缩(NFKC + 小写折叠)
  • context-aware gating = 上下文感知门控(压噪声、消歧义)
  • Sparsity Allocation = 稀疏性分配(MoE 与记忆的 U 形缩放定律)
  • OverEncoding = 论文中的对比方法(把 N-gram 嵌入与词表嵌入做平均)
  • prefetch-and-overlap = 预取与重叠(确定性索引 + 宿主内存)
  • multi-level cache hierarchy = 多级缓存层级(HBM/DRAM/SSD)
  • mHC = Manifold-Constrained Hyper-Connections(多分支主干)
  • LogitLens / CKA = 机制分析工具(层间表示检查)
  • NIAH / RULER / LongPPL = 长上下文评测基准
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Conditional Memory(Engram):查表也是一种稀疏化
https://mizuki-eaf.pages.dev/posts/deepseek/conditional-memoryengram查表也是一种稀疏化/
作者
无名之子
发布于
2026-07-14
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录