Score Centering 进了 Tinker 的栈,RL 的训练推理漂移被摆上台面
Nathan Lambert 说 score-centering 在工业界已经流行,Tinker 的 StableReinforce 用了它。Martin Marek 的这篇工作把 TIM 里的 drift 项单独拎出来,用加法修正抵消。论文、代码和多个框架的实现都在。
Nathan Lambert 在推文里说,score-centering 在工业界已经不算小众。Tinker 的 StableReinforce 在用,最近也被加进 rlhf book。他提到这个推导适合理解 training-inference mismatch,视频解释很快会出。
这件事值得看,因为 RL 训练里有个长期被容忍的裂缝:采样器和训练器走的是两套数值路径。采样器负责生成 rollout,训练器负责更新参数。量化、kernel、并行策略、版本差异都会让同一段文本在两个引擎里的概率不完全一致,这就是 TIM。完全消除 TIM 代价高,rollout 效率会受影响。
Martin Marek 的解释更直接:每个训练步,训练器都会被拉向采样器,偏差逐步累积,形成 drift。Score Centering 做的事是给每个 score 减去它的期望。on-policy 时期望 score 为零,这步等于空操作;off-policy 时它把 drift 项抵消掉,避免训练器悄悄蒸馏采样器。
开销方面,Martin 的实现用 top-k 近似叠在任意 importance ratio 上,写成一个标量 loss。前提是采样器到训练器已经在传 top-k logprobs,这时新增开销低于 1%。对线上 RL 系统来说,这个数字比公式更关键,因为它决定修正项能不能常驻训练循环。
论文标题是 Score Centering Stabilizes Off-policy Reinforcement Learning,作者 Martin Marek 和 Max Ryabinin,工作完成于 Martin 在 TogetherAI 实习期间。摘要里的结论很清楚:RL 在 TIM 下不稳定,主要来自 drift。Score Centering 是一个加法修正,用来抵消累积偏差。模型规模从 0.6B 到 30B,在量化条件下,单独用 score centering 能匹配或超过基于 importance sampling 的方法,mismatch 越严重,差距越明显。它还能和 importance sampling 组合,在 staleness 实验里,组合方案优于纯 IS 基线。

更值得留意的是采用速度。代码仓库列出的实现包括 verl、TRL 的 AsyncGRPOTrainer 默认配置、slime、Miles、prime-rl 即将默认、Molt、SkyRL、Vime 和 Tinker。一个修正项同时进这么多训练栈,说明它处理的痛点足够普遍。仓库里给了 JAX 和 PyTorch 的 loss 实现,top-k 取 k=128,尾部用训练器分布缩放后匹配采样器尾部质量。
讨论里也有值得看的反方视角。Nan Jiang 在 X 上说,考虑线性 softmax 策略,这个修正等于在采样分布下计算梯度,可以视为忽略 mismatch 的一种实现。You Jiacheng 回复说,它仍然移除了 drift,得到的梯度正好是采样策略的 on-policy policy gradient。Nan Jiang 随后澄清,他把这看作众多合理实现之一,效果是忽略 mismatch。这段争论把 Score Centering 到底改了什么摊开讲,比只看训练曲线更有信息量。
还有一个没有明确答案的问题。Max Petrusenko 问,采样器在训练中途变化时,score centering 是否还有效,还是只适用于采样器和训练器之间的 mismatch 稳定不变的情况。原帖没有给出回答。如果你的 RL 栈里采样器会动态切分、换版本、改量化策略,别急着把它当万能补丁,先测 drift 和组合修正的实际收益。
相关链接:Nathan 的推文,Martin 的推文,论文,代码。
发布时间: 2026-11-06 02:30