清缓存前睡4轮,Ouro六步数学41.9%到61.5%

Do Language Models Need Sleep? Offline Recurrence for Improved Online Inference

Sangyun Lee, Sean McLeish, Tom Goldstein, Giulia Fanti

cs.CL, cs.AI

2026-05-26

窗口满了先睡N轮,把上下文写入SSM快权重再清缓存,答题只过一次前向。Ouro六步数学从41.9%到61.5%。

这篇在解决什么

混合模型用注意力照看最近的 token,用状态空间层(SSM)把更早的内容收进一块不随长度长大的快权重。能写进快权重,不代表之后还算得动。

Rule 110(按邻域规则演化的一维元胞自动机)把记忆负荷和推理深度拆开。四段各 24 位的二进制串,总长固定,变的只有演化步数 t:报出每段演化 t 步后的第一位。窗口 L=24,读完一段就清空 KV,预测锁成一次前向,没有思维链。缓存没了,普通 Transformer 超不过瞎猜。四层 Gated Delta Net(GDN,带遗忘门的快权重层)混合模型可以把初态写进快权重,t 一大,准确率掉得很快。一次巩固给不出那么多步模拟。

方法

窗口写满就睡觉。当前这段还留在窗口里,模型对它连做 N 次前向,按 SSM 块里学到的局部规则改快权重,不读新 token。睡完才清 KV,再读下一段。答题时走一次标准前向,损失打在答案 token 上。N=1 就是不睡,退回普通混合模型。

整段睡眠参加反传。常见深度循环让梯度穿过反复改写的隐藏状态;这里睡完把中间特征丢掉,梯度走快权重。多出来的深度用来把上下文收成以后用得上的权重。

GSM-Infinite 把问题放在长文前面,巩固时已经知道问什么。Jet-Nemotron 2B 由 Qwen 2.5 1.5B 换掉部分注意力层而来,循环范围是中间 14/28 个块,因此 N 可以取到 6。Ouro 1.4B 原是纯注意力的循环模型,插入 6 层不带 MLP 的 Jet 层,参数增加不到 10%,按预训练方式整网循环。为了把训练显存留在能开 batch 的范围,N 取到 4。

结果

t=32 的自动机上,四层、隐藏维 256,数据顺序锁定。不循环的模型吃进近 50 亿 token,精确准确率仍约 10%。两轮约 20%,三轮和四轮超过 30%。

Depo 问有向环上走出 k 步落在哪个点。环最多 75 个节点,垫到 300 token,窗口 75,一张图切成四段,答题时图已经不在缓存里。k 从 1 到 16 均匀训练。1 轮在 4 跳及更深的题上 loss 几乎不动,2 轮在 8 跳及以上停住,训练预算内只有 4 轮开始把 16 跳的 loss 往下拉。

GSM-Infinite 微调预训练模型,留出 1600 题。题长 2000 到 3300 token,运算步数 1 到 8,数据不含思维链,窗口 2000,答题时看不全题面。

模型指标结果
Jet-Nemotron 2B六步准确率,N=1 到 60.742 到 0.812
Jet-Nemotron 2B八步准确率,N=1 到 60.351 到 0.388
Ouro 1.4B六步准确率,N=1 到 40.419 到 0.615
Ouro 1.4B八步准确率,N=1 到 40.210 到 0.272
Ouro 1.4B,滑窗 L=512两步准确率,N=1 到 40.596 到 0.905

窗口 2000 时,两步和四步不管睡几轮都接近饱和,Jet 更明显。六步、八步才拉开档。Ouro 六步、八步的相对提升大约是 47% 和 30%,Jet 大约是 9% 和 11%。Ouro 预训练就是循环深度,和这个涨幅对得上。

滑窗丢掉窗口之外更老的 token,活跃缓存仍封顶在 L。L=512、序列大约是窗口的 4 到 6 倍时,两步也从 0.596 升到 0.905。窗口比序列小得多,多睡在帮着压缩和检索。

单张 H200 上跑 Ouro 1.4B、序列长 12000。窗口够大、GPU 吃满时,跨窗口的串行几乎不比全并行的滑窗混合更慢。N 上去之后吞吐大致成反比。

为什么重要

每个 token 的生成延迟没变,多出来的计算发生在缓存还在的时候。长上下文又卡解码延迟,这条路比把循环留在生成期更贴预算。

快权重大小不变、token 预算不变,把 N 加大之后,窗口还大时浅题先饱和、深题继续涨。窗口远小于序列时,浅题的检索也会涨。自动机和 Depo 把容量和计算拆开了。数学题的绝对涨幅还小,替换现有长上下文方案还早。

局限与存疑

N 次前向加反向,训练更慢,也更容易不稳。隐式梯度、截断反传是循环深度训练里的现成办法,实验仍把整段睡眠反传到底。

预测锁成一次前向,思维链从数据里删除。同样多的计算如果花在答题时的思维链或预测期循环上,没有对照。测试时训练、上下文蒸馏也没有并排数字。

数学题的问句在上下文之前,巩固可以按题干挑信息。查询在入睡前未知的,主要是 Depo,给的是 loss,准确率没有报。八步的绝对数仍然低,Jet 停在 0.388。滑窗实验要先用硬清空把新插入的 Jet 层热启动一个 epoch,不然这些层用不满。每次入睡的墙钟暂停,论文没给。

论文把「失败」限定在固定训练 token 预算里。预算放开之后还有没有机会学会,实验没有回答。Depo 图注写的是四层 GDN 混合模型,实验设置段落写的是从零训练的十层、隐藏维 512。两处对不上。

术语

原文与代码

社区讨论

相关论文

全部论文解读