← 返回 2026-08-27

前缀滑动:面向高效测试时扩展的恒定成本推理 Prefix Sliding for efficient test-time scaling

Niklas Muennighoff, Zhengyang Wang, Zeyi Chen, Weijia Shi, Binyuan Hui, John Yang, Dapeng Jiang, Mika Senghaas, Fares Obeid, Johannes Hagemann, Sami Jaghouar, Ludwig Schmidt, Percy Liang, Jason Wei, Andrew Y. Ng, Luke Zettlemoyer, Yejin Choi, Mike Lewis 📅 2026-08-26 👍 5 2026-09-01 18:30
强化学习 测试时扩展 滑动窗口注意力 长上下文 高效推理

推理时只保留提示前缀加滑动窗口,让长思维链成本恒定,免训练提速3倍

前置知识

全注意力与 KV 缓存

Transformer 自回归生成时,每个新 token 都要对之前所有 token 计算注意力,已生成 token 的 Key/Value 会被缓存(KV cache)以避免重复计算。这意味着生成第 $n$ 个 token 的计算与显存开销随 $n$ 线性增长:序列越长,每个新 token 越慢、越占显存,长思维链的成本没有上界。

论文要解决的核心问题正是全注意力下单 token 成本无界;理解 KV 缓存机制才能理解为什么 Prefix Sliding 能把成本压成常数,以及为什么需要专门定制注意力内核。

测试时扩展

在推理阶段投入额外计算来换取更高性能的方法统称,分两类:顺序式(让模型对难题思考更久、生成更长推理链,如 o1/R1 式推理模型)与并行式(采样多个答案投票)。顺序式扩展收益上限更高,但受制于注意力成本随推理长度增长,难以无限延伸。

本文的目标场景就是测试时扩展:让模型能以恒定的单 token 成本思考十万级以上 token,从而在相同'思考时间预算'内产出更长的推理链。

滑动窗口注意力

每个 query 只关注最近 $W$ 个 token 的局部注意力模式,计算与显存不随序列长度增长。多层堆叠后的理论感受野为 $W \times L$($L$ 为层数),实践中因信息瓶颈约为 $1.5W$。gpt-neo、gpt-oss 等模型采用它与少量全注意力层交错使用,以弥补全局信息缺失。

Prefix Sliding 本质上是'以连续任务前缀作为全局 token 的滑动窗口注意力';理解滑动窗口的感受野(约 $1.5W$)是理解论文截断反向传播中 $4\times$ 上下文设计的关键。

注意力沉降

softmax 注意力会把大量概率质量分配给序列最初几个 token,即使它们不携带语义信息;这些 token 充当'沉降池'吸收多余注意力权重。实验表明若把它们从上下文中删除,模型质量会骤降,因此 StreamingLLM 等流式方法都固定保留开头几个 token。

这是'前缀必须保留'这一设计直觉的直接证据。论文用 Qwen3-1.7B 在 AIME25 推理轨迹上的注意力热图证明:前缀(含 分隔符)与最近约 1000 个 token 是仅有的高注意力区域。

RoPE 与 Continue PE / Reset PE

RoPE 是主流相对位置编码,按 token 位置旋转 Q/K 向量。滑窗滑出旧 token 后需决定后续 token 的位置编号:Reset PE 重新分配编号但必须重算缓存表示;Continue PE 让编号连续递增、沿用旧编号,从而直接复用缓存中已施加位置编码的 KV,实现更高效。论文消融显示两者性能差异不显著,故采用 Continue PE。

位置编码处理是 Prefix Sliding 工程落地最容易踩坑的细节,直接决定缓存能否复用、实现复杂度高低,也是理解论文 Figure 4 的前提。

GRPO 与截断反向传播

GRPO(组相对策略优化)是推理模型常用的强化学习算法,trl 与 prime-rl 均有实现。对数十万 token 的长推理轨迹做 RL 时,全量反向传播会显存溢出;截断反向传播只对最后一个滑窗($W$ 个 token)计算 RL 损失,其前面约 $4\times W$ 个 token 仅作为上下文(损失掩码置零),由普通 autograd 完成梯度计算。

论文'带训练的 Prefix Sliding'能把 rollout 扩展到 10 万 token 以上,正是依靠 GRPO + 截断反向传播这套配方;不理解它就无法理解 Figure 5、Figure 7 与 Figure 8 的 KL 分析。

研究动机

主流大模型采用全注意力,自回归生成时每个新 token 都要对全部历史 token 计算注意力,单 token 成本随已生成长度线性增长,需要长思考的困难任务在推理开销上因此高得令人望而却步。长上下文还伴随其他问题:被旧的无关 token 分心、上下文投毒、重复循环、知识丢失。作者给出一个具体例子:模型计算表达式 $((42 + 84) \times 4) - 5$ 时,一旦完成 $42 + 84$ 这一步,该步骤的推导过程就不再需要,只有结果对后续运算有用——中间推理 token 很快失去重要性,但全注意力仍持续为它们付费。对 AIME25 的一条推理轨迹统计 Qwen3-1.7B 跨层跨头的平均注意力概率可以发现,概率质量集中在最初几个 token(注意力沉降)、提示前缀、标记思考模式的 分隔符以及最近的约 1000 个 token 上,而中间推理 token 的注意力在整条轨迹上持续走低。最重要的与最不重要的 token 被同等对待,这构成了明确的浪费,也意味着长程推理的扩展性瓶颈并非不可避免。

本文的目标是本文的目标是让测试时扩展可以无限延伸:无论模型思考多长,每个新 token 的生成成本保持恒定,从而支持十万级以上 token 的长程推理。具体包含三个层面:其一,免训练可用——方法必须开箱即用地作用于现有预训练 Transformer,不改权重、不需重新预训练;其二,高效率——相比全注意力在保持性能的同时显著提速(论文报告约 3 倍);其三,可训练——进一步用强化学习在 Prefix Sliding 下训练,使 rollout 能扩展到超过 10 万 token 的推理轨迹并取得比全注意力更高的奖励。作者还明确设定了对比方法的准入标准:必须开箱即用且单 token 成本有界,这排除了需要从头预训练的替代架构(RNN、SSM、线性注意力)与次二次复杂度方法,使比较聚焦在真正可落地的方案上。

与已有工作不同的是,已有的'有界成本'方案各有硬伤:RNN/状态空间模型(RWKV、Mamba)与线性注意力虽然单 token 成本恒定,但与现有预训练模型不兼容,必须从头训练;普通滑动窗口注意力会把包含任务指令和工具信息的前缀滑掉,模型很快忘记自己在解什么题;Last k(周期性删除旧 token 只留最后 $k$ 个,如 Markovian Thinking/Delethink)与 Summary(周期性把上下文压缩成摘要,即 Opus 4.6、GPT 5.4、Composer 采用的 compaction)虽然成本也有界,但被删除或被摘要的 token 要被处理两次(生成时一次、重新进入上下文时一次),摘要还引入额外生成步骤、一堆超参数和上下文清空重建,内存呈锯齿状波动、GPU 难以打满。本文的独特切入是把注意力实测数据当作设计依据:既然前缀(注意力沉降+指令)与最近 token 是仅有的高注意力区域,那么只需保留这两段——把 Longformer 式'全局 token+局部窗口'中的全局 token 具体化为连续的任务前缀,即可同时获得有界成本与开箱即用。

核心方法

直觉上,模型推理时真正需要的只有两段信息:开头的系统指令与任务描述(前缀,同时充当注意力沉降),以及最近正在进行的推理内容(滑窗);中间已完成步骤的推导细节可以安全丢弃。技术路线上,Prefix Sliding 在生成时只允许注意力访问前缀与最近 $W$ 个 token 的并集,内存上限为 $|prefix| + W$:例如 100 token 前缀配 4096 滑窗,至多 4196 token 在内存中,此后每个新 token 成本恒定。实现上,作者为 Hopper 架构编写了基于 FlashAttention 的自定义内核并在 vLLM 中运行;位置编码采用 Continue PE——滑出窗口的 token 编号保留、后续编号连续递增,可复用缓存中已施加位置编码的表示,消融显示与 Reset PE 差异不显著。用于训练时,在 GRPO 中配合截断反向传播:生成 10 万 token、窗口 2048 的轨迹时,只把最后 8192 个 token 送入训练器,前 6144 个仅作上下文(损失置零),只在最后 2048 个 token 上计算 RL 损失。

核心创新是把'该保留什么'从启发式规则变成由注意力实测支撑的最小充分集合。论文用 Qwen3-1.7B 在 AIME25 推理轨迹上的注意力概率证明两个观察:中间推理 token 的注意力随推理推进持续衰减、很快失去重要性;而前缀(尤其最初 4 个 token 的注意力沉降、持续标记思考模式的 分隔符)与最近约 1000 个 token 获得高注意力,生成前一个 token 处的注意力还会陡增。据此,Prefix Sliding 等价于'以连续前缀作为全局 token 的滑动窗口注意力'(Longformer 的 global+local 思想),但与 Longformer 的本质区别是完全不需要训练即可套用在现成模型上;与 StreamingLLM 只保留开头 4 个 token 不同,这里保留完整前缀以维持任务指令与工具信息;与 Last k/Summary 的本质区别是每个 token 只被处理一次、没有额外摘要步骤、没有周期性的上下文清空与重建,内存占用稳定,因此吞吐能几乎追平原生滑窗内核。

方法步骤详情

第一步,确定前缀与窗口:前缀取系统指令+任务提示(约 100 token),窗口 $W$ 取 512 到 16384 间 2 的幂。第二步,免训练推理:用两级过滤的 FlashAttention 内核在 vLLM 中生成——对与允许区域部分重叠的 tile 施加逐元素掩码保证 softmax 正确性,对完全在区域外的 tile 直接跳过,并把流水线重组为前缀块与窗口块两个区间迭代;位置编码用 Continue PE 复用缓存。第三步,RL 训练:用 GRPO(trl 或 prime-rl 实现)在自建数学数据集(按可猜测性、可验证性、难度过滤)上训练,配合截断反向传播——传入 $4 \times W$ 个末尾 token,前 $3 \times W$ 个只作上下文(损失掩码置零),仅对最后 $W$ 个 token 算 RL 损失;滑窗多层实际感受野约 $1.5W$,$4\times$ 上下文已足够精确。第四步,评估:GPQA、MATH500、AIME25 上 avg@64、温度 0.6、top-p 0.95,budget forcing 控制思考预算,simpleverify 校验。

技术新颖性

技术新颖性体现在四点。其一,问题形式化:作者把上下文扩展方法按'单 token 成本是否有界'二分,指出无限测试时扩展(思考数周量级的模型)必须有界成本,而全注意力不可有界——时间与空间复杂度只能换边、无法同时有界。其二,方法定位:Prefix Sliding 是少数'既有界成本又开箱即用'的方法,相比需从头训练的 RNN/SSM/线性注意力,只改注意力掩码级别;相比 Last k/Summary,消除了重复处理、摘要开销与锯齿状成本。其三,训练配方:截断反向传播利用滑窗有限感受野(理论 $W \times L$、实际约 $1.5W$)把 10 万 token 轨迹的训练显存压成常数,且只用损失掩码在普通 autograd 下实现、无需改训练器;附录另给出近等价的分块反向传播替代方案。其四,系统工程:为 Hopper 写的两级过滤 FlashAttention 内核让 Prefix Sliding 的速度几乎追平原生滑窗注意力,仅因前缀额外内存而略慢,避免了方法'理论上好、实际上慢'的常见命运。

Prefix Sliding enables efficient long-horizon test-time scaling while full attention inevitably becomes prohibitively expensive.
Figure 3: Prefix Sliding enables efficient long-horizon test-time scaling while full attention inevitably becomes prohibitively expensive.
Position embeddings (PE) with Prefix Sliding.
Figure 4: Position embeddings (PE) with Prefix Sliding.
Backpropagating long reasoning traces with Prefix Sliding. Yellow marks backpropagated tokens.
Figure 5: Backpropagating long reasoning traces with Prefix Sliding. Yellow marks backpropagated tokens.
Truncated backpropagation numerics.
Figure 8: Truncated backpropagation numerics.
Prefix Sliding has constant cost per new token in the limit.
Figure 10: Prefix Sliding has constant cost per new token in the limit.

实验结果

核心结果有五组。其一,免训练加速:Qwen3 上 4096 窗口的 Prefix Sliding 对比全注意力,保持性能的同时快约 3 倍;准确率优势来自相同思考时间内生成更多 token,而非单个 token 更好。其二,吞吐:单张 80GB H100、窗口 4096 下,Prefix Sliding 与普通滑窗吞吐稳定在约 5000 tok/s,全注意力在 8K 到 520K 区间持续变慢;Prefix Sliding 仅因前缀内存略慢于原生滑窗。其三,RL 训练:近等显存预算(8192 max tokens vs 8192 窗口)下奖励明显更高,rollout 可超 10 万 token;只传滑窗本身 KL 超 0.1,$4\times$ 与 $8\times$ 持平,故默认 $4\times$;7B 实验控制序列长度后与全注意力相当。其四,消融:max 262144 的 AIME25 上 Prefix Sliding 权衡最佳;纯滑窗丢失任务关键信息、性能快速趋平;Last k 与 Summary 受重复处理与摘要开销约束。其五,注意力分析证实仅前缀、 与最近约 1000 个 token 获得高注意力。

Prefix Sliding without any training is more efficient than full attention.
Figure 1: Prefix Sliding without any training is more efficient than full attention.
Prefix Sliding faster than full attention.
Figure 6: Prefix Sliding faster than full attention.
Prefix Sliding can improve performance. We restrict both to near-equal memory budgets.
Figure 7: Prefix Sliding can improve performance. We restrict both to near-equal memory budgets.
Prefix Sliding outperforms test-time scaling alternatives.
Figure 9: Prefix Sliding outperforms test-time scaling alternatives.
查看结构化数据
任务指标本文基线提升
AIME25 等推理基准(免训练,Qwen3-1.7B) 准确率 @ 固定思考时间(avg@64,温度 0.6) Prefix Sliding(窗口 4096)在相同思考时间内生成更多 token,准确率反超全注意力,速度快约 3 倍 全注意力(同 Qwen3 模型) 约 3 倍速度提升且准确率更高(优势来自思考量增加而非单 token 更好)
长序列吞吐基准(8K-520K,1024 条序列) tokens/second(H100 80GB、FlashAttention、窗口 4096) Prefix Sliding 稳定在约 5000 tok/s,与普通滑窗内核几乎持平 全注意力随序列长度增长持续变慢,无稳定点 单 token 成本恒定 vs 全注意力线性恶化;Prefix Sliding 仅因前缀内存略慢于原生滑窗
AIME25(GRPO 强化学习训练) Reward(近等显存预算下) 8192 滑窗 + 截断反向传播(传 $4\times$ 窗口),奖励明显更高,rollout 超过 10 万 token 全注意力(8192 max tokens 限制) 同等显存预算下更高奖励,且支持无上限的思考长度
AIME25(替代方法消融,max 262144) 准确率-思考时间权衡(窗口 4096,$k$/摘要长度均为 256 token) Prefix Sliding 提供最佳性能-效率权衡,仅引入窗口大小这一个超参数 Last k、Summary(compaction)、纯滑动窗口 纯滑窗长思考性能快速趋平;Last k/Summary 受 token 重复处理与摘要额外步骤限制且内存波动
LiveCodeBench(局限分析,max 262144) Pass@1 需要窗口 ≥ 16384 才能匹配全注意力(模型用注释思考数千 token,代码开头被滑出窗口) 全注意力 负向结果:小窗口下不敌全注意力,揭示信息丢失风险
HealthBench(局限分析,平均仅 2086 token) 速度(窗口 2048) 大多数样本未达到滑窗大小,几乎等价于全注意力,收益甚微 全注意力 负向结果:短生成存在滑窗预热期,Prefix Sliding 优势随生成长度缩短而消失

局限与改进

作者承认的局限:其一,信息丢失——LiveCodeBench 上模型会在推理中途开始写函数实现、用注释思考数千 token,等回来继续写代码时代码开头已滑出窗口,因此需要至少 16384 的窗口才能匹配全注意力,RL 训练或允许模型把关键 token 追加进前缀可能缓解;其二,短生成收益小——HealthBench 平均只生成 2086 token,窗口 2048 时大多数样本根本没进入滑动阶段(滑窗预热期),几乎等价于全注意力;其三,agent 与多轮场景——模型一次读取整个网页或文件时可能冲刷整个滑窗,严格来说无法读全内容且丢失重要信息,多轮对话中后续用户指令该进前缀还是任其滑出也未解决;其四,比较范围受限——只对比了开箱即用且成本有界的方法,排除了替代架构、次二次方法与混合滑窗模型,且未做从头预训练的公平对照;其五,规模有限——只做到 7B、数十万 token。我的补充观察:训练侧存在内核数值差异导致的残余 KL 失配;评估集中于数学与代码推理,跨文档、跨会话的长程 agentic 记忆任务未验证;窗口大小是任务相关的关键超参,实际部署需按任务调优,缺少自适应机制。

独立分析的弱点

独立分析的弱点与改进方向:其一,前缀静态不可扩展——多轮对话与工具调用中产生的新关键信息无法进入前缀,超长任务中模型可能'定向'失效;改进方向是论文提到的让模型学会把重要滑动 token 追加进前缀或外部知识存储,做成可写前缀。其二,窗口大小是唯一且任务敏感的超参——数学任务 4096 够用而 LiveCodeBench 需要 16384,相差 4 倍;改进方向是根据任务类型或运行时信号(回溯频率、困惑度)自适应调整窗口。其三,短生成与 agent 场景收益打折甚至有风险——读取大文件会冲刷窗口导致信息丢失;改进方向是加 guardrails 限制单次输出长度,并通过 RL 教模型分步读取(如用 head 而非 cat)。其四,中间信息重要性无法在线判定——模型不能主动为重要中间结论'存档',只能被动接受窗口滑动;改进方向是让 RL 显式奖励记忆行为,或引入可寻址草稿板。其五,评估以 avg@64 为主,单次部署的失败模式与方差着墨较少;补充 pass@k 与失败案例分析会更有说服力。此外 kernel 数值差异带来的残余 KL 失配会随训练规模放大,值得长期监控。

未来方向

作者提出的未来方向:与 DroPE(直接移除预训练模型位置编码)结合,或从头以无位置编码方式预训练,以绕开 Continue/Reset PE 的取舍;让模型学会把滑动 token 追加进前缀或其他知识存储,避免依赖超大窗口;通过大量 RL 训练模型在 agent 场景下小心读取内容(分步读取而非一次吞下),或部署自动 guardrails 防止过长输出冲刷上下文;进一步扩大 Prefix Sliding 的规模(模型参数量与思考长度)并研究其缩放趋势;放宽比较标准的第一个条件,与 RNN 等有界成本替代架构在控制算力与超参的前提下公平比较。基于本文成果可延伸的方向:把'连续前缀=全局 token'的视角推广到混合注意力架构(少数全注意力层+滑窗层)的设计与训练分析;探索 Prefix Sliding 与 KV 缓存量化/卸载的叠加收益;为多轮对话设计'前缀版本管理'协议;将截断反向传播推广为通用长轨迹 RL 训练组件(如 agent 训练框架);以及在 LiveCodeBench 这类大窗口任务上研究自适应窗口与中间结论存档机制的组合。

复现评估

复现条件总体较好。代码已在 GitHub 开源(github.com/Muennighoff/prefix-sliding),作者声称仅凭论文第 2 节的描述即足以复现关键结果。免训练部分需要 vLLM + FlashAttention 推理栈,并在 Hopper(H100)GPU 上编译作者的定制内核——这是最大门槛,非 Hopper 用户需等上游支持或自行移植;窗口取 512-16384 间 2 的幂即可。评估协议(GPQA、MATH500、AIME25,avg@64、温度 0.6、top-p 0.95、simpleverify、budget forcing)标准可复刻,但 64 次采样成本不低。训练部分需要 GRPO 实现(trl 或 prime-rl)、自建数学数据集(细节在附录 F)以及多卡 H100 集群与异步 rollout 基础设施,7B 的 RL 训练成本显著更高。总体判断:免训练结果中等难度即可复现,训练结果需要可观算力与工程投入;关键消融($4\times$ 乘数、Continue PE、替代方法对比)论文均给出充分细节。