前缀滑动:面向高效测试时扩展的恒定成本推理 Prefix Sliding for efficient test-time scaling
推理时只保留提示前缀加滑动窗口,让长思维链成本恒定,免训练提速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 的速度几乎追平原生滑窗注意力,仅因前缀额外内存而略慢,避免了方法'理论上好、实际上慢'的常见命运。
实验结果
核心结果有五组。其一,免训练加速: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 获得高注意力。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 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、替代方法对比)论文均给出充分细节。
论文图表
Qwen3-1.7B 在一条 AIME25 推理轨迹上、跨层跨头平均并经高斯平滑的 post-softmax 注意力概率图:最初几个 token(前缀/注意力沉降)与最近约 1000 个 token 注意力很高,中间推理 token 的注意力则持续走低。
这张注意力热图是整个方法的实证地基——'只保留前缀和滑窗'不是启发式猜测,而是直接来自对注意力分布的测量。
LiveCodeBench 上 Pass@1 随滑窗大小(4096 到 32768 及全注意力)的变化:窗口 16384 以下性能明显落后,16384 及以上才追平全注意力。检查样本发现原因是模型会在推理中开始写函数实现、用注释思考数千 token,回到代码时函数开头已被滑出窗口。
最重要的负向结果,具体展示了信息丢失何时真实发生、窗口大小为何是任务相关的关键超参,对实际部署极具警示价值。
HealthBench(平均只需生成约 2086 token 的短任务)上 Prefix Sliding(窗口 2048)与全注意力的对比:多数样本生成不足 2048 token、从未进入滑动阶段,两者表现几乎相同,加速空间很小。
界定了方法的适用边界——收益来自滑窗预热期结束之后,短生成场景下不应期待加速,帮助读者判断自己的任务是否适用。