现代 LLM 强化学习系统通常不会用同一套执行栈完成 rollout 与训练:
推理引擎:vLLM / SGLang / LMDeploy
负责逐 token 生成 rollout
训练引擎:FSDP / Megatron / DeepSpeed
负责重算 log probability、反向传播和参数更新
即使两侧加载完全相同的权重,也可能因为数值精度、算子实现、并行方式和 MoE 路由不同,对同一个 token 给出不同概率。这种现象称为 Training-Inference Mismatch(TIM,训练—推理不一致)。
与此同时,PPO 会在同一批 rollout 上执行多个 mini-batch 与 epoch 的更新,使当前策略逐渐偏离冻结的旧策略,这称为策略更新漂移(policy update drift)。
| 类型 | log probability 差 | 主要来源 | 对应处理方法 |
|---|
| 训推不一致(TIM) | logπtrain,old−logπrollout,old | 精度、内核、并行归约、MoE 路由 | 训推对齐、TIS / IcePop、R3 |
| 策略更新漂移 | logπtrain,θ−logπtrain,old | mini-batch 切分、多轮 epoch | PPO ratio 与 clip |
本文首先区分 PPO 中 πold 隐含承担的 behavior 与 proximal 两种角色,使两类差异各自对应一个 ratio;在此基础上,分析 PPO clip、TIS、IcePop、GSPO 与 R3 分别作用于哪一类差异。
一、基本信息
设 token at 的上下文状态为 st。标准 PPO-Clip 以 rt(θ)=πθ(at∣st)/πold(at∣st) 配合 clip 约束更新幅度,其中 πold 隐含地承担了两个角色:既是产生训练数据的 behavior policy,也是 clip 的冻结锚点 proximal policy。
经典同步 PPO 中两者为同一策略,单一 ratio 即可;但在 rollout 与训练分离的双引擎系统中,数据由 rollout 引擎采样,old logprob 却由训练引擎重算,两者在数值上不再相同,继续统一记为 πold 会掩盖问题来源。
将两个角色区分开后,系统中存在三个策略:
| 策略 | 角色 | 作用 |
|---|
| πrollout,old | Behavior policy | rollout 引擎实际用于采样 |
| πtrain,old | Proximal policy | 训练引擎中的冻结旧策略,也是 PPO clip 锚点 |
| πtrain,θ | Current policy | 正在反向传播和更新的训练策略 |
当 rollout 与训练加载同一组旧权重时,相邻两个策略之间的差异正好对应本文关注的两类差异:
- behavior 与 proximal 之间是训推不一致;
- proximal 与 current 之间是策略更新漂移。
若 rollout 使用的参数版本落后于训练侧(如异步 rollout、partial rollout 或 replay buffer),behavior 与 proximal 之间还会混入参数版本滞后(policy lag);除特别说明外,下文默认同步训练。
二、两类差异
1. 训推不一致
behavior 与 proximal 之间的差异用 ρt 刻画:
ρt:=πrollout,old(at∣st)πtrain,old(at∣st)
ρt 本质上是重要性采样(importance sampling)的权重:样本服从 πrollout,old,而优化目标定义在 πtrain,old 下,按 ρt 对样本加权即可在两种分布之间换算期望:
Ea∼πrollout,old[πrollout,old(a)πtrain,old(a)f(a)]=Ea∼πtrain,old[f(a)]
取对数即得 TIM 对应的 log probability 差:
Δtengine:=logπtrain,old(at∣st)−logπrollout,old(at∣st)=logρt
即使两侧共享完全相同的 checkpoint 差异依然存在。常见来源包括:
- BF16、FP16、FP8 或 INT8 的精度与量化差异;
- MoE router 的 Top-K 专家选择不同;
- 推理引擎逐 token decode,而训练引擎一次并行处理整段序列。
这一偏差并非源于参数更新幅度过大,而是源于:
数据由 πrollout,old 采样得到,但 loss 的 clip 锚点是 πtrain,old。
2. 策略更新漂移
proximal 与 current 之间的差异即 PPO 中的更新 ratio:
rt(θ):=πtrain,old(at∣st)πtrain,θ(at∣st)
每轮 PPO 更新开始时:
πtrain,θ=πtrain,old⟹rt(θ)=1
随着 optimizer 执行更新,πtrain,θ 逐渐偏离冻结的 πtrain,old:
Δtupdate:=logπtrain,θ(at∣st)−logπtrain,old(at∣st)=logrt(θ)
其常见来源包括:
- 同一批 rollout 被切成多个 mini-batch;
- 一批数据被训练多个 PPO epoch;
- 当前 learner 相对冻结 old policy 已经前进若干步。
因此,PPO clip 回答的问题是:
在训练引擎定义的概率空间中,当前策略相对 proximal policy 偏离了多少?
3. 总 ratio 分解
两个 ratio 分别连接 behavior、proximal 与 current 三个角色:
端到端的总 ratio 恰好是两者的乘积:
πrollout,old(at∣st)πtrain,θ(at∣st)=ρt: 采样分布校正πrollout,old(at∣st)πtrain,old(at∣st)⋅rt(θ): 策略更新幅度πtrain,old(at∣st)πtrain,θ(at∣st)
三、Decoupled 三策略 PPO
以下述数值为例,假设某个已采样 token 的概率为:
πrollout,old(at∣st)=0.01,πtrain,old(at∣st)=0.02,πtrain,θ(at∣st)=0.021
则三个 ratio 分别为:
| ratio | 数值 | 含义 |
|---|
| ρt=πtrain,old/πrollout,old | 2 | behavior → proximal 的采样分布差异 |
| rt=πtrain,θ/πtrain,old | 1.05 | proximal → current 的参数更新幅度 |
| πtrain,θ/πrollout,old=ρtrt | 2.1 | 两段差异叠加后的总 ratio |
若只考察 rt=1.05,会忽略数据实际来自 rollout policy 这一事实;若将总 ratio 2.1 直接视为 PPO 更新幅度,又会把 TIM 误判为参数更新。合理的做法是让 ρt=2 负责分布校正,clip 只约束实际发生的 5% 参数变化,下面的目标函数正是这样构造的。
定义 PPO 的 clipped surrogate(A^t 为优势估计,ϵ 为 clip 范围):
g(rt,A^t):=min(rtA^t,clip(rt,1−ϵ,1+ϵ)A^t)
如果希望 clip 始终相对 πtrain,old 生效,但数据实际来自 πrollout,old,则将 ρt 作为外层权重乘在 surrogate 上:
J3P(θ)=E(st,at)∼πrollout,old[ρtg(rt(θ),A^t)]
两部分职责明确分离:
- ρt:把 behavior distribution 校正到 proximal distribution;
- rt+clip:限制 current policy 相对 proximal policy 的更新幅度。
当 behavior 与 proximal 完全一致时,ρt≡1,目标自动退化为标准 PPO。这也是三策略形式的重要性质之一:行为分布校正可以在一致时自然消失,而 PPO clip 的语义保持不变。
实现层面还需满足两点要求:
- ρt 视为常数。 πtrain,old 与 πrollout,old 在本轮更新中都是冻结的,∇θρt=0。实现时缓存 rollout logprob、用冻结 old policy 计算 training logprob,避免梯度回传到 old logprob 或校正权重。
- 支持集必须覆盖。 换测度要求 πtrain,old≪πrollout,old,即目标分布可能生成的回复,在 behavior policy 下的概率必须非零。top-k、top-p、约束解码和 token ban 都可能制造零概率区域,因此 temperature 与采样过滤后的归一化概率才是实际的 πrollout,old,不能用未过滤的原始模型概率代替。
J3P 对每个 token 单独乘以 ρt,属于 token 级近似。回复 y=(y1,…,yT) 是自回归生成的,严格的换测度应使用整条序列的 ratio ρseq(y∣x)=∏t=1Tρt,但连乘会迅速放大方差:即使每个 token 的 ratio 只有 1.01,1.011000≈2.1×104,长 CoT 和多轮 Agent 轨迹因此极易出现 heavy-tail 权重。token 级校正方差低,也便于与 PPO / GRPO 的 token loss 结合,代价是没有修正前缀分布的差异,属于有偏近似;序列越长、策略差异越大,偏差越明显。
四、TIS、IcePop、GSPO 与 R3
以 J3P 作为参照:外层 ρt 校正训推不一致,内层 rt 与 clip 约束策略更新漂移。下面的方法可以按改动位置来理解:
TIS 与 IcePop 修改外层 ρt,GSPO 修改内层 ratio 的粒度,R3 则从源头让 ρt 接近 1。
1. TIS:截断重要性权重
完整 importance ratio 的方差可能极大,TIS(Truncated Importance Sampling)因此对 ρt 做上截断:
ρˉt:=min(ρt,C)
再将 ρˉt 乘在 PPO / GRPO surrogate 外部:
JC(θ)=E(st,at)∼πrollout,old[ρˉtg(rt(θ),A^t)]
超过阈值的样本仍保留,但权重封顶为 C,以引入偏差为代价换取更低的方差。
2. IcePop 与 MIS:双边区间与硬 mask
IcePop 同样作用于 ρt,但不做封顶,而是直接丢弃落在双边区间之外的 token:
M(ρt;α,β):={ρt,0,α≤ρt≤βotherwise
因此 ratio 过大或过小的 token 都不参与梯度,比 TIS 更保守。
这类对越界样本直接 mask 的做法统称 MIS(Masked Importance Sampling),可作用于单个 token,也可作用于整条 sequence;IcePop 可视为 token 级 MIS。Ring-1T 报告中的默认区间为 [0.5,5]。
3. GSPO:序列级更新 ratio
GSPO 定义长度归一化的 sequence ratio(论文沿用单一的 πold 记号):
si(θ):=(πold(yi∣x)πθ(yi∣x))1/∣yi∣=exp∣yi∣1t=1∑∣yi∣logπold(yi,t∣x,yi,<t)πθ(yi,t∣x,yi,<t)
si 是逐 token 更新 ratio 的几何平均。PPO / GRPO 对每个 token 分别计算 rt 并逐 token clip,GSPO 则让整条回复共享同一个 si 进行 clipping 和加权,使优化单元与序列级 reward 对齐。它改变的是 old → current 更新 ratio 的粒度,而不是显式引入 πtrain,old/πrollout,old 作为校正项。
GSPO 对单 token 概率尖峰和 MoE 路由波动更不敏感,论文也报告它允许在一些场景直接使用推理引擎返回的 sequence likelihood。但“更容忍 TIM”不等于“显式消除了 TIM”:如果 si 的分子与分母来自不同执行栈,它会同时混入 TIM 与策略更新漂移。
4. R3:MoE 路由的源头对齐
MoE router 通过 I=TopKMask(s,K) 离散地选择专家:router logits 上的微小数值差异一旦改变 Top-K 边界处的排序,就会变成专家选择分歧,并沿后续多层计算放大:
R3(Rollout Routing Replay)在 rollout 时记录推理引擎的专家选择 mask Iinfer,训练前向时不再重新决定 Top-K 专家,而是复用该 mask:
greplay,i=∑jIinfer,jexp(strain,j)Iinfer,iexp(strain,i)
这样既固定了训练与推理选中的专家集合,又保留了训练 logits 上的 softmax 与梯度路径。R3 的实验显示,固定 expert selection 后,MoE 的训推 KL 与极端 token 比例明显下降,说明路由分歧不是普通的独立数值噪声,而是具有放大效应的结构性误差。
5. 方法对照
| 方法 | 主要 ratio 或对象 | 处理的核心问题 | 代价或限制 |
|---|
| PPO / GRPO clip | πtrain,θ/πtrain,old | 约束参数更新幅度 | 不自动修正 rollout 与 train-old 的差异 |
| Decoupled PPO | 外层 πtrain,old/πrollout,old,内层 πtrain,θ/πtrain,old | 分离采样校正与更新约束 | 需要额外 old / rollout logprob |
| TIS | 截断 πtrain,old/πrollout,old | 降低 IS 权重的方差 | 引入截断偏差 |
| MIS / IcePop | mask 后的 πtrain,old/πrollout,old | 丢弃极端不一致 token / sequence | 降低样本利用率,阈值敏感 |
| GSPO | sequence-level πθ/πold | 稳定序列级更新与 clipping | 更容忍 TIM,但没有显式分离 TIM |
| R3 | inference routing mask | 消除 MoE 专家选择分歧 | 需要传输和缓存路由信息,仅处理路由误差 |
五、总结
LLM RL 中的 ratio 不应笼统地写成“new / old”。把 πold 拆成 πrollout,old、πtrain,old 与 πtrain,θ 三个角色后,decoupled PPO 目标可以写成:
J3P(θ)=E(st,at)∼πrollout,old[ρt: 采样分布校正πrollout,old(at∣st)πtrain,old(at∣st)⋅g(rt: 策略更新幅度πtrain,old(at∣st)πtrain,θ(at∣st),A^t)]
其中 ρt 校正 TIM 造成的 behavior 与 proximal 错位,rt 与 clip 约束策略更新漂移;两个 old policy 一致时 ρt≡1,形式退化为标准 PPO。
在该框架下,各方法的作用边界随之明确:TIS 和 IcePop 分别用截断与双边 mask 处理 ρt 的极端值;GSPO 在序列级处理 rt,对 TIM 更宽容但没有显式分离它;R3 与精度、kernel 对齐则从源头让 ρt 更接近 1。
核心判断原则可以概括为:
先确认实际生成数据的分布,再确定作为 clip 锚点的策略。数据分布校正与策略更新约束是两项独立的工作,只有将二者分开,才能判断一个方法修正的是 policy lag、TIM,还是仅在抑制异常梯度。
参考资料
- John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov. Proximal Policy Optimization Algorithms. arXiv:1707.06347, 2017. https://arxiv.org/abs/1707.06347
- Jacob Hilton, Karl Cobbe, John Schulman. Batch Size-invariance for Policy Optimization. NeurIPS 2022. https://arxiv.org/abs/2110.00641
- Feng Yao, Liyuan Liu, Dinghuai Zhang, Chengyu Dong, Jingbo Shang, Jianfeng Gao. On the Rollout-Training Mismatch in Modern RL Systems. NeurIPS 2025 Workshop. https://openreview.net/forum?id=8MHqvb4lK9
- Chujie Zheng et al. Group Sequence Policy Optimization. arXiv:2507.18071, 2025. https://arxiv.org/abs/2507.18071
- Wenhan Ma et al. Stabilizing MoE Reinforcement Learning by Aligning Training and Inference Routers. ICML 2026. https://arxiv.org/abs/2510.11370
- Ling Team, Inclusion AI. Every Step Evolves: Scaling Reinforcement Learning for Trillion-Scale Thinking Model. arXiv:2510.18855, 2025. https://arxiv.org/abs/2510.18855
- Yingru Li et al. Trust Region Masking for Long-Horizon LLM Reinforcement Learning. arXiv:2512.23075, 2025. https://arxiv.org/abs/2512.23075
- verl Documentation. Mathematical Formulations of Rollout Correction Methods in verl. https://verl.readthedocs.io/en/latest/algo/rollout_corr_math.html