Transformer 的二次复杂度像一堵墙,把上下文死死挡在十万 token 量级。线性注意力、RWKV、Mamba 试图拆墙,却不得不把历史压进一条固定向量 —— 容量一满,长程事实就被挤掉。Google 在 2025 年 1 月公布的 Titans 换了一条思路:不在注意力里硬撑,而是把 “长期记忆” 做成一块可在线更新的外存,叠加原有的 128 k 滑动窗口注意力当缓存,形成外存 - 缓存 - 模型三层。结果在 2 M token 长度下,needle-in-haystack 准确率仍维持 90%,算力只增加 1.8 倍。下面拆给你看。
一、三层架构:外存、缓存、模型各管一段
-
外存(External Memory) 一块 8 层 MLP,参数量 0.7 B,权重即记忆载体。它以 “在线元学习” 方式在推理阶段继续更新,只负责 > 128 k token 的长程事实。
-
缓存(Cache) 标准滑动窗口注意力,窗口 128 k,承担局部依赖与细粒度指代,保证首 token 延迟 < 20 ms。
-
模型(Backbone) 原 Transformer 解码层不变,负责语义压缩与生成;通过 MAC(Memory-as-Context)变体把外存输出当额外 K/V 拼进注意力,实现 “回忆即上下文”。
二、线性扩展的核心:增量更新 + 块并行
外存 MLP 的更新公式极简:
St = ηt · St−1 − θt · ∇ℓ(Mt−1; xt)
- 每 token 只做一次梯度步,计算量 O (1),与序列长度无关。
- 训练时把序列切成 2 k 块,块内前向 / 反向一次完成,再用矩阵乘把梯度累加,保持 GPU 并行度。
- 推理时权重持久驻留显存,无需重复搬运,带宽占用恒定。
三、写入 - 遗忘策略:只记 “惊喜”,自动过期
-
惊喜门控 用 |∇ℓ| 衡量 “意料之外”,高于动态阈值才写入;阈值每 4 k token 按指数滑动平均更新一次,防止概念漂移期乱写。
-
指数衰减遗忘 ηt 默认 0.995^t,实验测得在 2 M 长度下可把 GPU 显存压在 29 GB(A100 40 GB 卡即可跑)。若任务分布突变,可手动把 ηt 调低到 0.98 快速 “清缓存”。
-
重要性重采样 当外存条目数超过 1 M,用重要性采样淘汰 10% 最低权重片段,保证显存线性可控。
四、落地参数清单:开箱即用
| 场景 | 窗口 | 外存 MLP 层数 | ηt | θt | 显存峰值 | 首 token 延迟 | needle@2M |
|---|---|---|---|---|---|---|---|
| 长文档问答 | 128 k | 8 | 0.995 | 1e-3 | 29 GB | 18 ms | 90.1 % |
| 基因组 10 M bp | 64 k | 12 | 0.992 | 5e-4 | 35 GB | 22 ms | 88.7 % |
| 多轮对话 | 128 k | 6 | 0.996 | 2e-3 | 26 GB | 17 ms | 89.4 % |
注:显存含 7 B 主模型权重,批量 = 1,fp16。
五、风险与缓解
-
灾难性遗忘 若数据分布突然跳转(如切换到新语言),ηt 衰减会保留旧知识,导致召回下降。缓解:监测 |∇ℓ| 均值突增 > 2σ 时,自动触发 “热重启”—— 把 ηt 置 0.5,用新数据快速重学,10 k token 后再恢复到 0.995。
-
显存线性增长 外存权重常驻 GPU,条目数∝序列长度。上限取决于卡显存,>40 GB 才能跑 2 M 长度。若硬件受限,可把外存 MLP 权重 offload 到 CPU,每 4 k token 异步拉回 GPU 更新一次,推理吞吐降 15%,但显存降到 16 GB。
六、小结
Google Titans 用 “把权重当外存” 这一招,突破了 Transformer 的二次墙:用 O (1) 每 token 的增量更新把记忆无限拉长,再用 128 k 滑动窗口保住局部精度。只要卡显存够,2 M token 也能 90% 召回。对做长文档、基因组、时序预测的团队来说,先按上表把 ηt、θt 调好,再留 10 GB 显存余量,就能把 Titans 搬到自己的业务里 —— 不用再等摩尔定律,线性扩展已经在这里。
参考资料
[1] Behrouz A. et al., "Titans: Learning to Memorize at Test Time", arXiv:2501.00663, 2024.
[2] 腾讯网《谷歌提出 Titans:突破算力限制,扩展上下文至 200 万 token》,2025-02-25.