> 一句话:SSM-Attention 混合架构的瓶颈不是记忆容量不够,而是把信息塞进 fast weights 时算得太少。CMU + UMD 团队从生物学睡眠找到灵感——在 KV cache 被清空之前,让模型对同一个窗口做多遍前向传播,反复改写 fast weights。预测延迟不变,但"已驱逐"的上下文能被更深地推理。GSM-Infinite 上 4-operation 难题,无 sleep 时几乎随机猜,4-loop sleep 后准确率飙到 90% 以上。
---
一、混合架构的盲区:能存,不等于能用
Transformer 的长上下文瓶颈很直观——attention 的 FLOPS 随长度平方增长,KV cache 随长度线性膨胀。解法之一是把 attention 和 SSM(State Space Model)交替堆叠:attention 管最近 token 的高保真访问,SSM 用固定大小的 fast weights 承载更早的上下文。
这分工看起来自然。但有个被忽视的区别:能把信息存进去,不等于能把信息整理成之后可用的推理状态。
作者用一个干净的合成实验拆开了这个问题。任务是一维元胞自动机:
- 输入:二进制初始状态(如 0101...1101)
- 规则:每个位置看自己和左右邻居 3 个 bit,按固定规则表同步更新
- 目标:预测经过 t 步演化后的状态
结果:随着 t 增大,标准混合架构的性能断崖式下跌。不是容量不够,是一次前向传播不足以把复杂演化过程"整理"进 fast weights。
> 过去长上下文失败时,人们常把锅甩给 fast weights 容量。这篇论文揭示:真正的瓶颈是计算深度。
---
二、睡眠机制:停下来,把记忆多巩固几遍
灵感来自生物学。人和动物清醒时接收大量信息,但短期记忆转长期记忆主要发生在睡眠——大脑重放白天经历,反复加工,把信息整理成结构化形式存入长期记忆。
作者的方案:让 LLM 做"休眠"。
流程
1. 读入窗口:按固定大小切上下文,attention 读取窗口内 token,同时更新 SSM fast weights 2. 睡眠巩固:KV cache 被清空前,对同一个窗口连续再做 N 遍前向传播,让 fast weights 被多轮改写 3. 整窗清空:sleep 结束后,窗口内 KV cache 整体丢弃,只保留多轮更新的 fast weights 4. 循环处理:从空缓存开始读下一个窗口,重复
关键约束
每遍 sleep pass 结束后,attention 层的临时特征被丢弃。真正跨窗口保留下来的只有 SSM fast weights。梯度不是流经反复精炼的特征向量,而是流经被反复精炼的 fast weights。模型不能靠隐藏特征"偷渡"信息,必须学会把上下文真正整理进 fast weights。
> 这不是让模型重复阅读文本,而是让它学会"重复阅读时应该如何更新记忆"。
---
三、与 Chain-of-Thought 的对比
两者都是加计算量来提高推理,但发力位置相反:
| Chain-of-Thought | Sleep | |
|---|---|---|
| 时机 | 预测阶段 | 上下文巩固阶段 |
| 行为 | 生成更多 token | 不生成 token,专心消化历史 |
| 代价 | 增加预测延迟 | 增加训练/离线计算,预测延迟不变 |
| 适用 | 需要逐步思考的任务 | 需要对已驱逐上下文做深度推理的任务 |
---
四、实验
4.1 元胞自动机:验证瓶颈是计算深度
t=32 的困难设置下:
- 无 sleep:近 5B token 训练后准确率约 10%(接近随机)
- 2-loop sleep:约 20%
- 3/4-loop sleep:超过 30%,且学得更快
4.2 Depo:多跳图遍历
输入是一条打乱的有向环,回答"从某节点出发走 k 步到哪里"。样本最多 75 节点(300 token),窗口 75。模型 4 层 GDN(Gated Delta Networks)。
结果分层清晰:
- 无 sleep:4 跳及以上 loss 几乎不降
- 2-loop:8 跳及以上停滞
- 4-loop:16 跳最难任务上仍能改善
4.3 GSM-Infinite:数学推理(中等规模模型)
两条路径验证,殊途同归:
Jet-Nemotron 2B(有记忆,无递归):
- 基于 Qwen 2.5 1.5B 微调的 SSM-Attention 混合模型
- 部分 attention 层替换为 Jet 层(动态卷积实现的线性注意力,fast weight 记忆层)
- 天然有 fast weights,缺递归
- sleep 取部分 block 反复循环 N 遍,补足递归能力
- 纯 attention depth-recurrent 模型(类似 Universal Transformer)
- 有循环计算,缺长期记忆
- sleep 插入 6 个不含 MLP 的 Jet 层,补足跨窗口记忆,参数量增幅不足 10%
结论:简单问题接近饱和、差距小;困难问题上 N 越大提升越明显。无论起点是"有记忆缺递归"还是"有递归缺记忆",补足后都收敛到同一类架构——fast weights + 递归。
4.4 滑动窗口驱逐(更贴近实践)
前三个实验用"不重叠窗口整窗清空",但实践中更常见的是滑动窗口——每次只挤出最旧的 token,保留最近一整窗。
作者在 GSM-Infinite 上测试滑动窗口,窗口压到 512 token,序列长度约为窗口的 4~6 倍。模型既要检索相关信息,又要完成多步推理。
结果最有说服力:
- 无 sleep(标准 SWA-SSM 基线):2-operation 准确率仅 59.6%——这类问题几乎不靠推理,压力主要来自在大量干扰 token 中检索
- 4-loop sleep:2-operation 准确率跃升到 90.5%
- 各操作数上 N 越大越好
---
五、代价:训练吞吐下降
Sleep 把额外计算从预测阶段移到巩固阶段,预测延迟不变。但训练吞吐下降:
1. 序列并行被阻断:处理第 i+1 个窗口前必须完成第 i 个窗口的 sleep。阻止了沿序列 length 维度的并行化。与标准滑动窗口注意力相比,训练吞吐明显更低。但如果窗口足够长,差异可被抹平(一个窗口就让 GPU 吃满了)。
2. 深度与吞吐成反比:训练吞吐量与 sleep depth N 大致成反比。N=4 意味着训练时间约 4 倍。
> 定位不是"免费加速",而是"用训练/离线阶段的额外计算,换预测阶段更好的长期推理状态"。适合更关心预测延迟、愿意在训练上多花计算的场景。
---
六、启发:三段式架构
这篇论文把混合架构中一个隐含问题拆了出来:把上下文存进 fast weights 是一回事;把上下文整理成之后能推理的 fast weights,是另一回事。
过去讨论 SSM 或 linear recurrent memory 时,重点在容量、遗忘、精确检索。这篇论文强调了另一个维度:记忆巩固本身需要计算深度。
由此得到一个清晰的三段分工:
- attention:近期信息的精确读取
- SSM fast weights:长期状态的承载
- sleep-time recurrence:把短期上下文加工成更有用的长期状态
---
七、信息汇总
- 论文:Do Language Models Need Sleep? Offline Recurrence for Improved Online Inference
- arXiv:2605.26099
- 机构:Carnegie Mellon University, University of Maryland
- 核心概念:Sleep(离线递归)、fast weights、SSM-Attention 混合架构、记忆巩固
- 实验任务:元胞自动机(1D cellular automata)、Depo(k-hop graph traversal)、GSM-Infinite(数学推理)、滑动窗口驱逐
- 测试模型:Jet-Nemotron 2B(GDN-based)、Ouro 1.4B(depth-recurrent)
- 关键数字:元胞自动机 t=32 无 sleep ~10% → 4-loop >30%;Depo 4-loop 在 16-hop 仍改善;GSM-Infinite 滑动窗口 2-op 59.6% → 90.5%(N=4)
- 代价:训练吞吐与 N 大致成反比;预测延迟不变
- GitHub:未提及(论文阶段,可能后续开源)
#记忆 #Sleep机制 #SSM #混合架构 #长上下文 #记忆巩固 #离线递归 #CMU #UMD #大模型推理 #小凯