精读:把训练-推理失配里的漂移项减掉
训练引擎与推理引擎的微小数值差异会让策略梯度多出一个把模型蒸馏向采样器的漂移项,而采样器又是从训练器同步回来的,误差于是复利。论文给出一个无超参的加性修正项把它精确消掉,不引入任何方差。
1 论文概览
一句话总结:把训练-推理失配(TIM)下策略梯度的期望更新拆成「漂移」与「信号」两项,论证崩溃的根源是漂移而非失配本身,并给出一个无超参的加性修正项把它精确消掉。
核心问题:大模型 RL 对训练引擎与推理引擎之间极小的数值差异异常敏感,而 SFT 在严重得多的失配(拿另一个模型离线生成的数据来训)下照样稳定。这个不对称到底来自哪里?
论文的切入点是:策略梯度需要两次前向——推理引擎采样、训练引擎算梯度。理论上两者是同一个模型,落到实现里它们几乎从不给出相同的数。重要性采样(IS)是通行解法,可它用随机乘性权重做校正,稀有 token 上的比值可以任意大,于是所有工程实现都得截断或掩码,一截断就重新引入偏差。
主要贡献:
- 机制归因:期望更新可分解为 。第一项只通过奖励的均值依赖奖励,方向是把 trainer 蒸馏向 sampler;第二项才看到「哪个 token 换来了哪个奖励」。on-policy 时 ,第一项消失;失配时它不为零,而 sampler 又是从 trainer 同步过来的有偏副本,误差于是在反馈环里复利。
- 方法:score centering 把每个 token 的 score 减掉 sampler 下的期望 score,漂移精确归零,且不加任何方差。
- 可组合性:修正项是加性的,可以直接叠在 TIS / MIS 之上;论文还证明朴素 IS 是它取 时的退化情形。
- 工程可行化:全词表版在 30B 上要 20TB 显存,top-(,甚至 )加权重建尾部后降到 17GB,代价是 wall-clock 增加不到 1%。
- 实证:0.6B 到 30B、合成权重噪声 / 量化 / 陈旧三类失配源,296 次运行、约 6,180 H100 小时。
“the instability of RL under TIM is primarily caused by drift: a persistent bias between training and inference engines that accumulates with every training step.” —— 摘要
2 方法详解
2.1 漂移是怎么进来的
固定一个前缀,采样器 产出 token ,训练器 计算它的 score 。on-policy 时 ,常数奖励下期望更新为零,符合直觉:环境没给任何信号。
失配后,token 从 里来、score 在 上算,。用协方差恒等式展开:
漂移项的方向 恰好是「以 sampler 为教师的 cross-entropy 损失」的负梯度。也就是说,失配下的普通策略梯度在每个前缀上都在做一次自蒸馏,强度由该前缀的期望奖励决定。蒸馏到一个固定教师是收敛的(收敛到该教师的极大似然拟合),可 sampler 是 trainer 的量化副本或陈旧副本,每步都被同步回去——偏差因而复利而非收敛。
值得单独说的是 group centering 为什么不够。它让一组 rollout 的优势之和为零,可漂移产生在单个前缀上:一个通向正确答案的前缀,其条件期望优势为正;一个已经写错的前缀则为负。论文的原话是:
“Drift is therefore nonzero precisely at the prefixes that carry learning signal.” —— §4
2.2 score centering
既然病根是「采样器下的期望 score 不为零」,那就把它减掉:
减完之后 ,两个期望取自同一分布,于是漂移在每个前缀上精确抵消,剩下的只有 。与 on-policy 更新的唯一差别是:协方差改在采样分布 上测,而不是训练分布 上测。这是 score centering 留下的一处残余偏差,论文在 Limitations 里明确承认。
由此得到它最优雅的性质:
“In the absence of TIM, i.e. when , score centering is a no-op, since the correction term in Equation 4 is exactly zero.” —— §4
不引入方差,因为修正项是确定性的加性项,与采到哪个 token 无关;IS 的修正项是随机乘性权重,取值依赖被采到的 token,长尾上必然放大方差。
2.3 一个论文没点破的恒等式
附录 A.2 给出了组合形式:若 IS 方法的权重函数为 ,则组合后的中心化系数为 、头部权重为 。把朴素 IS 的 代进去:
中心化项消失。精确 IS 与 score centering 在「消掉漂移」这件事上完全等价,两者都是零漂移估计量,区别只在代价:IS 换方差,SC 换「协方差测在错的分布上」。
顺着这条恒等式能推出一个论文只报了现象、没给解释的结果——为什么 SC 与 TIS 的差距随失配加剧而拉大。TIS 把 的部分截断,被截掉的那部分概率质量就重新带回漂移。失配越严重, 的分布越宽, 越大,残余漂移越大。SC 的中心化项不依赖被采到的 token,无论失配多严重都保持零漂移。所以二者之差不是「谁更会修」,而是「一方的残余误差是失配严重度的增函数,另一方不是」。
2.4 top- 近似
Qwen3 词表 152K,一个 token 的 fp32 全词表 logprobs 约 608KB;1024 条 rollout × 32K 长度就是 20TB。论文只存 sampler 的 top- logprobs,尾部用 trainer 的 logprobs 按质量比 缩放补齐:
关键在于不必真的遍历词表:全词表上期望 score 为零,所以尾部期望 = 零 − 头部期望,中心化项最终只涉及 个头 token。 时头部平均覆盖 sampler 99.9% 以上的质量;唯独 30B + INT8/INT4 那一档降到 99.45%(最差 batch 95.8%),而恰恰在这一档 与全词表仍然打平。
隐含假设值得记一笔:用 的尾部形状去填 的尾部,等于假定失配只改变尾部的总质量、不改变其形状。论文没有直接验证这个假设,只用「 取 32 也行」间接说明尾部不重要。
3 实验结果
共享目标为 REINFORCE + group-centered 优势,每种校正单独叠加。0.6B 在 Countdown(512 序列长度)、30B-A3B 在 INTELLECT-2 数学(1024),优化器是 lr= 的 SGD(省下最多 240GB 显存)。
| 失配设置 | 关键结果 |
|---|---|
| 合成权重噪声(三档) | SC、TIS、MIS 及其组合最好;噪声最大时只有含 SC 的配置稳定。DPPO 在约 160 / 80 / 20 步崩溃,TIS 在最轻档稳定,另两档约 180 / 40 步崩溃 |
| int8 量化 sampler | SC 单独与组合并列最好 |
| 陈旧(推理引擎每 64 步更新一次) | SC 与 TIS / MIS 的组合最好,优于 SC 单独 |
| 30B + FP8 sampler | 未校正的 PG 也能稳定跑满 800 步,与各类校正方法持平,达 58% 训练精度 |
| 30B + FP8 权重 / FP4 KV | PG 在 200 步内崩溃,MIS 后期崩溃;SC 52%、TIS 51% |
| 30B + INT8 权重激活 / INT4 KV | SC 30%、TIS 12%,其余方法全部低于 5% |
消融方面:Figure 2 用 Qwen3-1.7B 验证「离线训练只有 +1/0 奖励稳定,在线训练反过来 +1/0 最不稳定」这一翻转;Figure 5 验证 与 在全场景下与全词表 score centering 打平。
算力与种子分布(附录 Table 2):
| 实验 | 种子数 | 运行数 | H100 小时 | 单跑成本 |
|---|---|---|---|---|
| Figure 2 离线 vs 在线 | 3 | 18 | 190 | 10.6 |
| Figure 3 合成权重噪声 | 3 | 108 | 280 | 2.6 |
| Figure 4 量化与陈旧 | 3 | 72 | 1,120 | 15.6 |
| Figure 1 30B 数学 | 1–5 | 47 | 3,750 | 79.8 |
| Figure 5 top- 消融 | 见图例 | 51 | 840 | 16.5 |
0.6B 与 1.7B 的每个实验都是 3 种子。30B 那边先各跑 1 种子,再只给跑得最好的方法补种子:FP4 KV 面板 SC 5 / TIS 4 / MIS 3 / 朴素 IS 2,INT4 KV 面板 SC 4 / TIS 3 / MIS 3 / 朴素 IS 1,其余方法全部单种子。
4 个人分析
4.1 亮点
把「数值噪声」重新归档成「系统性偏置」,是这篇最重要的一步。 在此之前,TIM 被当作一种需要消除的工程缺陷(batch-invariant kernel、fp16 统一精度)。论文指出崩的不是噪声本身,而是噪声里的非零均值部分,并且这个均值有一个明确方向:指向 sampler。
加性与乘性的分离干净利落。 一条恒等式(§2.3)就把 IS 家族与 SC 放在同一张图上:两者都能把漂移归零,IS 的代价是方差、SC 的代价是协方差测在 上。截断型 IS 的残余误差随失配加剧而增长,SC 的不增长——这个推论直接解释了主实验里「差距随量化加重而拉大」的形状。
尾部重建一步很省。 利用「全词表期望 score 为零」把尾部期望换成负的头部期望,中心化项从 152K 项压到 128 项。显存从 20.4TB 降到 17.2GB(1,187 倍),配套代价是 wall-clock 不到 1%。
自陈弱点也写得坦荡:
“our headline results come from deliberately severe mismatch on short sequences, used as a proxy for long training under milder mismatch.” —— §6 Limitations
4.2 局限性
(一)最温和的那一档,证据最薄。 FP8 面板里每种方法都是单种子,论文只给了 PG 的 58%,其余方法用「performs on par with correction methods」一句带过。而这一档恰恰最接近真实部署。种子补在了 FP4 与 INT4 面板,也就是最极端的两档。证据强度与实际相关性反向。
(二)补种子的判据是「第一轮谁赢」,这会固化抽样噪声。 只有第一轮单种子跑赢的方法才拿到额外种子(SC 5/4、TIS 4/3、MIS 3/3)。第一轮单种子的赢家本身就带着噪声产物的嫌疑,给它补种子只让置信区间变窄,不会修正选择偏差。而且 INT4 KV 面板那个最醒目的对比——SC 30% 对 TIS 12%——两边种子数是 4 比 3。
(三)headline 数字全是训练精度。 附录 B.3 写明 Figures 1、4、5 报的是「采样 rollout 的平均奖励,做过中心移动平均平滑」,只有 Figures 2、3 用留出评测集。于是 58%、52%、30% 这三个数全部是训练精度。最真实的两个失配源(量化、陈旧)落在训练精度上评估,最不真实的那个(合成权重噪声)反而用了留出集。
(四)把三档头名横着比,论文的卖点要打折。 FP8 下不校正的 PG 达 58%;FP4 下最好的 SC 是 52%;INT4 下最好的 SC 是 30%。量化从 FP8 加到 INT8+INT4,损失 28 个百分点,而 SC 在最坏档相对 TIS 只挽回 18 个百分点。省下来的那点算力买不回这些精度——最便宜的「校正方案」是不把 KV 压到 INT4。论文把三个面板分开叙述,没有做这个横向对读。
(五)核心主张缺少对 drift 本身的测量。 论文的因果链是「drift 导致崩溃」,干预证据是「消掉 drift 就不崩了」。可全文没有一张图、一个数给出 的量级,也没有 drift 项与 signal 项的比值。剂量-反应曲线给的是失配严重度的剂量(三档噪声、三档量化),不是漂移大小的剂量。失配严重度与漂移大小之间的映射没有被测量,中间的因果环节靠的是推导而非观测。
(六)优化器只测了一种。 全部实验用 lr= 的 SGD,理由是省显存,论文称其与 AdamW「performing on par」却没给任何对照数据。漂移按步长累积,累积到崩溃的步数直接依赖优化器与学习率——DPPO 的 160/80/20、TIS 的 180/40 都是这个配置下的数值,不能外推到 AdamW。
(七)序列长度被压到 512 / 1024。 附录 B.1 自己写明「更长的序列会增大 TIM,但让多种子对比过于昂贵」。而 A.1 算显存时用的却是 32K。真实 agentic 场景是几万 token 量级,每个 token 都贡献漂移,每步漂移大约是实验设定的几十倍。论文为了在 512 长度下看到分离,才把量化推到 INT8+INT4;换成把序列拉长,也许在温和量化下就能看到分离——这条替代路径论文提了一句,没有跑。
(八)「无超参」只成立于全词表版。 结论里写「an additive correction term with no hyperparameters」,可实验用的全是 top- 版, 就是超参(论文称 是「conservative default」),还有尾部质量的 eps=。与 IS 组合时又继承 TIS 的 2.0、MIS 的 0.5–5.0。而全词表版在 30B 上需要 20TB,实际能跑的版本一定有 。
(九)MoE 路由分歧这个失配源被跳过了。 30B-A3B 是 MoE,sampler 与 trainer 可以对专家路由给出不同选择,论文自陈「we do not replay router indices」。路由分歧造成的分布差异,量级上未必小于数值误差;而 score centering 是在 token 概率层面消漂移,它对路由层面的分歧还成不成立,全文没有测。
4.3 对大模型领域的影响
给自蒸馏一族方法提了一个长期稳定性警告。 本专栏此前读过若干 on-policy 自蒸馏工作(OPSA、One-Shot OPD、NSD),它们都把「教师固定与否」当成实现细节。这篇的结论是:决定稳定性的不是失配有多大,而是教师是否跟着学生走——
“what matters is not the size of the mismatch, but whether the teacher is fixed or tracks the student.” —— §6
蒸馏到一个固定教师会收敛到该教师的极大似然拟合;教师每步从学生同步回来,误差就复利。那几篇的消融多在几百步量级,若跑到几千步,漂移累积到什么程度,目前没有答案。
让激进量化 rollout 变得可用,直接影响 RL 的算力账。 rollout 占 RL 墙钟的大头,把 sampler 压到 INT8/INT4 的收益是实打实的吞吐。SC 的价值不在于「比 TIS 高 18 分」,而在于它把可用量化档位的下限往下推了一格。
加性修正给 IS 类方法的设计空间开了一条新路。 既然「零漂移」这个目标可以不用比值实现,那么 PPO 的裁剪、DAPO 的非对称裁剪、IcePop 的掩码,都可以重新理解为「在乘性路线上近似一个加性目标」的种种折中。
5 实践启示
可以直接搬的技术:
- 期望-score 归零是可移植的通用件。凡是「从分布 A 采样、在分布 B 上算梯度」的场合都能用,不限于 RL。vLLM 与 SGLang 原生暴露 top- logprobs,接进现有训练循环只需改损失函数(附录 A.3 给了不到 20 行的 JAX 实现)。
- 「全词表期望 score 为零」这个恒等式值得记住。它把 152K 项的期望压成 128 项,是 top- 近似能成立的全部原因。任何需要在词表上求期望的场景(熵正则、token 级 KL)都能复用。
- 优先组合而非替换。陈旧型失配下 SC 单独不如 SC+TIS,因为 SC 把协方差留在了 上测,而 TIS 先把采样分布拉回一部分。凡是推理引擎同步间隔长的部署(长上下文 agentic 任务,单条 episode 动辄几分钟到几小时),按 SC+IS 组合来配。
值得先做的验证:
- 上 SC 之前,先跑一条「温和量化 + 不做任何校正」的对照。§4.2(四)的横向对读说明,在很多配置下这条对照才是赢家。
- 补一条 lr 与优化器的扫描。论文的 collapse 步数全部来自 SGD lr=,换成 AdamW 后漂移的累积速率会变。
- 长序列优先于强量化。论文为了在 512 长度下制造分离而把量化推到极端,实际生产里把序列拉到真实长度,TIM 自然就够严重,也许不需要那么激进的量化。
潜在应用场景:长上下文 agentic RL(陈旧最严重、单步漂移最大);激进量化的 rollout 服务(吞吐优先、精度次要);任何把采样与训练拆到不同硬件、不同 kernel、不同精度栈上的 RL 基础设施。
风险提示:SC 在 mild TIM 下是 no-op,收益只在失配足够大时才显现。若你的 rollout 栈已经做到 batch-invariant 且精度统一,加上它既没有收益也没有损失——它是一份保险,不是一味补药。
参考文献
Marek, M., & Ryabinin, M. (2026). Score Centering Stabilizes Off-policy Reinforcement Learning. arXiv:2609.20807 [cs.LG]. Together AI. 代码:github.com/martin-marek/score-centering
相关精读
-
本篇问的是本专栏此前一直默认的前提——「采样器采回来的样本就是训练器能用的样本」——成不成立。以下按专栏顺序回溯前四十二期。