
作者:Jiacai Liu* Yingru Li*† Yuqian Fu Jiawei Wang Qian Liu Yu Shen†
本工作于字节跳动完成。首次发布于2025年9月17日。
*共同第一作者。†通讯作者。

图1. 我们在Qwen3-14B-Base上进行的四次失败的GRPO TIR实验的奖励(左)和gradient norm(右)。所有实验在每个训练步骤采样 1024条轨迹(64个提示词 × 16个回复),学习率为 1e-6。在on-policy和off-policy实验中,ppo_mini_batch_size分别设置为 1024和 256。
最新动态
- 非常高兴看到我们的工作在 vLLM博客 中被讨论,他们实现了"比特级一致的on-policy RL"。
- 通用off-policy问题的Rollout校正已合并至VeRL:[使用文档][更多细节](Yingru Li)
- 非常高兴看到我们的工作被 SWE-grep(Cognition)引用,该工作同样使用sequence级别Masked Importance Sampling(MIS)来解决训练-推理不匹配问题。
- VeRL全异步模块已在 [PR] 中集成了我们的工作。
- Slime已在 [PR] 中集成了我们的工作。(SGLang RL:Chenyang Zhao, Jiajun Li)
- 通过geometric-level masking解决了一个Megatron训练崩溃问题。
https://github.com/volcengine/verl/issues/3597
- VeRL已在 [VeRL 0.6.0] 中集成了我们的工作,包括新引入的Geometric级别MIS。(Yingru Li)
要点摘要(TL;DR):
对更快推理的不懈追求已经造成了危险的"训练-推理不匹配",这可能悄然扼杀大语言模型的RL。我们的调查揭示了一个正反馈循环问题,在现代reasoning和agent RL中尤为严重:
- 分布外上下文驱动低概率采样: Agent工作流使模型暴露于外部输入和动态环境中,迫使模型频繁生成低概率token,这些token对于novel reasoning、tool calling和adaptive response至关重要。3.4 分布外工具响应放大不匹配
- 低概率token放大训练崩溃: 这些token成为最薄弱的环节——训练-推理不匹配在它们身上最为严重,导致灾难性的大梯度,引发隐性退化和突然的训练失败。3.3 确凿证据:低概率token陷阱
- 硬件差异使问题复杂化: 不同的GPU架构以不可预测的方式加剧不匹配,这意味着相同的agent训练配置可能在一台机器上成功,而在另一台机器上灾难性地失败。3.5 环境因素:硬件的关键作用
- sequence级别校正是原理性解决方案: sequence级别校正作为理论上有依据的修复方案应运而生。它通过考虑完整的状态轨迹来校正biased gradient,在不同硬件和复杂任务中恢复训练稳定性。4.2.1 原理性解决方案:分布校正
深入分析:
为了对这个问题进行严谨的理论分析,我们发布了一个新的三部分博客系列以提供更多洞见:
[Part 1: Why Mismatch Breaks LLM-RL]建立了stochastic policy gradient的分析框架。我们决定使用Total Variation (TV) distance来度量bias,使用 \chi^2-divergence来度量variance。
[Part 2: The Gradient Estimator Trials] 表明token级别correction vs sequence级别correction本质上反映了Bias和Variance之间的trade-off。 尽管token级别objective具有较低的variance,但它有 O(T^2 \Delta_{\max}) 的bias,仅在rollout policy保持在training policy的trust region内时才能良好工作。当mismatch显著时,bias变得难以容忍,更容易导致collapse。
Bias可以通过sequence级别correction来克服。
[Part 3: When Math Meets Reality—Toxic Tails and Length Traps] 展示了为什么我们应该拒绝而不是裁剪"toxic tails"中的样本——这是sequence级别MIS的核心思想。我们进一步分析了vanilla sequence级别方法中的length bias,这可能破坏long reasoning patterns,并表明geometric-level rejection sampling(Geo-RS)可以克服这个问题。
引用
@online{liu-li-2025-rl-collapse,
title = {When Speed Kills Stability: Demystifying {RL} Collapse from the Training-Inference Mismatch},
author = {Liu, Jiacai and Li, Yingru and Fu, Yuqian and Wang, Jiawei and Liu, Qian and Shen, Yu},
year = {2025},
month = sep,
url = {https://richardli.xyz/rl-collapse}
}
1. 突然崩溃之谜
在大语言模型RL(LLM-RL)快速发展的领域中,一种令人沮丧的突然训练崩溃模式正在显现。无论是复杂的reasoning RL还是多轮agent RL,许多人都观察到训练过程在经历一段稳定学习后灾难性地崩溃。
我们最近在对Qwen3模型进行多轮tool-integrated reasoning(TIR)的agent RL实验时亲身经历了这一点。这发生在我们L20 GPU集群上GRPO算法的on-policy和off-policy变体中。图1展示了我们在Qwen3-14B-Base上四次崩溃实验的奖励和gradient norm动态。随着训练的进行,gradient norm突然爆炸,导致模型崩溃。我们最初的调查集中在常见的嫌疑上:
- 我们检查了代码,确认我们的agent循环遵循token-in-token-out(TITO)的过程。
- 我们调整了Adam优化器中的超参数
beta1和beta2。 - 我们还对优势进行了批量归一化以平衡更新。
- ...
然而,这些标准修复方法都无效。由于即使是更简单的on-policy实验也失败了,我们怀疑问题不在于RL算法本身,而在于训练栈的更基础层面。这促使我们调查现代LLM-RL中一个关键且日益普遍的挑战:高度优化的推理引擎与忠实训练框架之间不可避免的差距。
2. 根本冲突:推理与训练之间日益扩大的鸿沟
Rollout速度是LLM-RL的核心瓶颈。为了实现所需的大规模吞吐量,现代推理引擎(如vLLM、SGLang、TensorRT-LLM)采用激进的优化策略,如投机解码、低精度计算(INT8/FP8)和专用的批次变体CUDA kernel。在保持采样保真度的同时,现代推理引擎的首要目标是最大化吞吐量,通常以每秒token数来衡量。相反,训练框架(如FSDP、DeepSpeed、Megatron-LM)必须达到不同的平衡,优先考虑梯度计算的数值稳定性和精度,通常对主权重和优化器状态使用更高精度的格式如FP32。优化优先级和约束上的这种分歧造成了不可避免的训练-推理不匹配。 对更快rollout的不懈追求正在使这一差距越来越大,而非越来越小。虽然有人可能提议强制执行相同的计算(例如使用"batch-invariant kernel"),但这些解决方案会带来严重的性能损失,违背了使用高速推理引擎的初衷。这种速度与一致性的权衡是问题的核心,使其成为一个持久的挑战而非简单的工程修复。
在我们的技术栈中,这种不匹配具体表现在vLLM推理采样器和FSDP训练器之间。实际的参数更新是:
而理论上的参数更新应该是:
其中 x 是从分布 \mathcal{D} 中采样的提示词,y 是回复,R 是奖励函数,\theta 是LLM的参数,\textcolor{red}{\pi^\text{infer}_\theta} 和 \textcolor{blue}{\pi^\text{train}_\theta} 分别是在vLLM引擎和FSDP引擎中实现的策略。为了调查这个问题,我们首先需要一种方法来测量它。
3. 训练崩溃剖析
3.0 实验设置
除非另有说明,第3节和第4节中呈现的实验都是在TIR设置下的 VeRL 框架上进行的,使用vLLM v1采样器(AsyncvLLMServer)、Qwen3-14B-Base模型和GRPO算法,全部在L20 GPU集群上运行。
3.1 测量不匹配:train_infer_kl指标
测量训练-推理不匹配的一个非常直接的指标是train_infer_kl:
其中 d_\pi 是策略 \pi 的state occupancy,s 是上下文前缀(状态),a 是token(动作)。注意我们的实验涉及工具调用,这意味着回复 y 可能包含工具响应。因此,我们的 train_infer_kl指标仅考虑模型自身生成的token。
由于我们的实验使用vLLM作为推理引擎,在后续的实验图表中我们将此指标记为 vllm-kl。以下代码提供了在 VeRL 中使用K3估计器计算该指标的实现,假设推理引擎的token概率已经可以获取:
-
vllm-kl的K3估计器代码块rollout_log_probs = batch.batch["rollout_log_probs"] # pi_infer actor_old_log_probs = batch.batch["old_log_probs"] # pi_train response_mask = batch.batch["response_mask"] log_ratio = actor_old_log_probs - rollout_log_probs vllm_k3_kl_matrix = torch.exp(log_ratio) - log_ratio - 1 vllm_k3_kl = masked_mean(vllm_k3_kl_matrix,response_mask)
3.2 警告信号:相关的不稳定性
我们的第一个线索是高 vllm-kl值不是孤立事件。它们与其他不稳定性迹象高度相关。
3.2.1 FSDP熵和奖励的波动
在我们的许多实验中,我们观察到 vllm-kl的异常尖峰通常会同时触发FSDP策略 \textcolor{blue}{\pi^\text{train}_\theta} 的熵和奖励的异常波动。图2中呈现的实验结果是一个直观的例子。从图中可以看出,熵尖峰发生的位置几乎与 vllm-kl尖峰的位置完美对应。虽然在奖励中没有观察到同样明显的相关性,但可以看到在步骤250左右有一个巨大的 vllm-kl尖峰,它触发了低质量批次的生成,并导致了那里明显的下降。这意味着当不匹配较大时,vLLM策略 \textcolor{red}{\pi^\text{infer}_\theta} 和FSDP策略 \textcolor{blue}{\pi^\text{train}_\theta} 都进入了不稳定区域。

图2. 一个on-policy实验结果的对比展示,显示熵*(左)和奖励(右)与 vllm-kl值的对比,说明它们在训练阶段的相关性。
3.2.2 FSDP PPL和gradient norm上升导致策略崩溃
更关键的是,我们观察到 vllm-kl的尖峰同时触发了fsdp-ppl指标和gradient norm的爆炸。在我们的实验中,回复 y 的fsdp-ppl指标计算如下:
其中 \mathcal{T} _{\mathcal{M}}\left( y \right) 是回复 y 中模型自身生成的token的索引集。最终的fsdp-ppl指标是批次中所有回复的fsdp-ppl指标的平均值。图3展示了GRPO on-policy版本和off-policy版本的实验结果。在两个实验中,vllm-kl的尖峰几乎精确地触发了fsdp-ppl和gradient norm的相应爆炸。此外,可以观察到在训练奖励崩溃之前,vllm-kl指标有显著上升。


图3. 步骤200-280的on-policy实验结果(上)和clip-higher为0.28的off-policy实验结果(下),显示gradient norm*(左)、fsdp-ppl(中)和奖励(右)与**vllm-kl*值的对比,说明它们在训练期间的相关性。
在我们的实验中,模型自身生成的序列至少包含几百个token。因此,在训练后期阶段,ppl指标保持在1左右更为合理。然而,在训练-推理不匹配显著的批次中——即 vllm-kl显著较高的地方——观察到fsdp-ppl指标的爆炸。这表明FSDP引擎为vLLM策略采样的token分配了极低的概率,从而导致gradient explosion。 这一观察帮助我们进一步定位了不匹配更可能发生的位置。事实上,正如我们稍后将看到的,当这些极低fsdp概率的token被采样时,它们在vLLM引擎中的概率并没有那么低。
3.3 确凿证据:低概率Token陷阱
不匹配并不是均匀的。
通过分析具有不同 vllm-kl水平的批次,我们发现了一个鲜明的模式:对于根据vLLM推理引擎具有低概率的token,分歧最为严重。 当token的推理概率接近零时,训练概率可能变得小几个数量级,导致无穷大的PPL和梯度。为确保结论具有足够的普遍性,我们从不同实验的不同训练步骤中选取了训练崩溃前采样的批次。所有这些批次都表现出相对较高的 vllm-kl值,使我们能够在显著条件下研究不匹配模式。在以下三个 vllm-kl范围内收集了Rollout批次,每组五个批次(约500万token):
- 组1(低): 每个rollout批次的
vllm-kl不超过1e-3,批次使用H20 GPU采样。 - 组2(中): 每个rollout批次的
vllm-kl属于[1e-3, 2e-2],批次使用L20 GPU采样。 - 组3(高): 每个rollout批次的
vllm-kl属于[2e-2, 1e-1],批次使用L20 GPU采样。
下图4(a)(b)(c)展示了vLLM引擎的输出概率,即 \textcolor{red}{\pi^\text{infer}_\theta}(a|s) 与不匹配——由 \log\left(\textcolor{blue}{\pi^\text{train}_\theta}(a|s)\right)-\log\left(\textcolor{red}{\pi^\text{infer}_\theta}(a|s)\right) 测量——在不同 vllm-kl量级下的关系:

图4(a). 组1批次中token的 \textcolor{red}{\pi^\text{infer}_\theta} 与 \log\left(\textcolor{blue}{\pi^\text{train}_\theta}\right)-\log\left(\textcolor{red}{\pi^\text{infer}_\theta}\right) 关系图。

图4(b). 组2批次中token的 \textcolor{red}{\pi^\text{infer}_\theta} 与 \log\left(\textcolor{blue}{\pi^\text{train}_\theta}\right)-\log\left(\textcolor{red}{\pi^\text{infer}_\theta}\right) 关系图。

图4(c). 组3批次中token的 \textcolor{red}{\pi^\text{infer}_\theta} 与 \log\left(\textcolor{blue}{\pi^\text{train}_\theta}\right)-\log\left(\textcolor{red}{\pi^\text{infer}_\theta}\right) 关系图。
从上述三张图中,我们可以清楚地观察到:
- 当vLLM概率 \textcolor{red}{\pi^\text{infer}_\theta} 接近零时,不匹配程度往往更加明显,\log\left(\textcolor{blue}{\pi^\text{train}_\theta}\right)-\log\left(\textcolor{red}{\pi^\text{infer}_\theta}\right) 的极端值更可能在这些条件下出现。
- 在L20 GPU上收集的批次,即组2和组3中的批次,表现出的训练-推理不匹配主要体现为FSDP概率 \textcolor{blue}{\pi^\text{train}_\theta} 显著小于vLLM概率 \textcolor{red}{\pi^\text{infer}_\theta}。
3.4 分布外工具响应放大不匹配
3.4.1 非首轮输出中不匹配更严重
第3节的发现解释了为什么这个问题在我们的多轮TIR实验中尤为严重,特别是在非首轮模型输出中。其机制如下:
- Agent接收工具响应,这通常是结构化文本(例如被
<python_output>和</python_output>标签包裹的上下文),相比其预训练和SFT数据属于分布外数据。 - 面对这种不熟悉的分布外上下文,agent的策略变得更加不确定,使其在后续轮次中更容易采样低概率token(这一现象在SimpleTIR中也有观察到)。
- 正如我们刚刚确认的,这些低概率token正是严重不匹配发生的主要位置,为
fsdp-ppl爆炸和gradient explosion创造了条件。
接下来,我们绘制三组批次(每组约5k条轨迹)中的不匹配,突出首轮模型输出和非首轮模型输出之间的差异。我们考虑以下两种方法来可视化不匹配:
- Log-ppl散点图:x轴表示由vLLM策略 \textcolor{red}{\pi^\text{infer}_\theta} 计算的ppl指标的对数,记为**
vllm-log-ppl,y轴表示由FSDP策略 \textcolor{blue}{\pi^\text{train}_\theta} 计算的ppl指标的对数,记为fsdp-log-ppl**。 - 概率散点图:x轴表示vLLM策略 \textcolor{red}{\pi^\text{infer}_\theta} 的token概率,y轴表示FSDP策略 \textcolor{blue}{\pi^\text{train}_\theta} 的token概率。
我们在下面展示三组的不匹配可视化结果。
- 组1:
vllm-kl≤ 1e-3的批次

- 组2:
vllm-kl∈ [1e-3, 2e-2]的批次

- 组3:
vllm-kl∈ [2e-2, 1e-1]的批次

从可视化结果中,我们可以观察到:
- 与首轮输出相比,非首轮输出的
vllm-log-ppl通常更大,这意味着面对不熟悉的分布外上下文时,模型采样了更多低概率token。 - 不匹配主要发生在非首轮模型输出中,表现为FSDP策略和vLLM策略之间log-ppl和token概率的平均绝对差异更大,皮尔逊相关系数更低。
- 随着
vllm-kl值的增加,训练-推理不匹配主要在非首轮输出中恶化。 - 不匹配一致显示
fsdp-log-ppl大于vllm-log-ppl,表明FSDP引擎产生了更极端的低概率token。
3.4.2 工具调用越多,训练越不稳定
以下实验进一步证明了分布外工具响应会加剧训练-推理不匹配和训练不稳定性。我们在H20 GPU上使用Qwen3-14B-Base作为基础模型进行了off-policy GRPO实验,clip higher=0.28,4个mini-batch。我们将单条轨迹中工具调用的最大次数(超参数 max_tool_turn)设置为20和100。实验结果如图5和图6所示。可以观察到,随着工具调用次数的增加,训练崩溃发生的时间更早。崩溃时,所有情况下都观察到gradient explosion和 vllm-kl爆炸。

图5. 不同 max_tool_turn超参数值的off-policy GRPO实验的gradient norm(左)、奖励(中)和 vllm-kl指标(右)。所有实验都在H20 GPU上进行,使用Qwen3-14B-Base作为基础模型,clip higher=0.28,4个mini-batch。

图6. 不同 max_tool_turn超参数值的off-policy GRPO实验的工具调用最大次数(左)和平均次数(右)。所有实验都在H20 GPU上进行,使用Qwen3-14B-Base作为基础模型,clip higher=0.28,4个mini-batch。
3.5 环境因素:硬件的关键作用
最后,我们发现物理硬件是一个关键变量。完全相同的代码和模型在不同GPU硬件上产生了截然不同的不匹配水平。为评估不同硬件上的不匹配程度,我们使用相同的代码环境和超参数运行on-policy算法,仅在不同GPU之间切换进行推理和训练。图7展示了在L20、H20和A100上的训练动态。

图7. 不同GPU上GRPO on-policy实验的 vllm-kl指标(左)和奖励(右)。所有实验都在相同的代码和环境上进行。
从图中可以观察到,在我们的实验中,vllm-kl的量级基本遵循:H20 < L20 < A100。具体来说,H20的 vllm-kl通常在5e-4到1e-3的数量级,L20约为1e-3到1e-2,而A100主要在1e-2到1之间。由于A100上严重的训练-推理不匹配,正常训练变得不可行,导致高度不稳定的奖励曲线。
我们发现在vLLM引擎中禁用级联注意力对于减少在A100 GPU上运行的实验中的不匹配特别有帮助。根本原因是FlashAttention-2 kernel中一个隐蔽的bug:在A100(以及L20)上,特定的batch/sequence长度组合会触发kernel的 split_kv路径,该路径错误地转置了LSE(log-sum-exp)布局,导致Cascade Attention出现完全的精度崩溃,这正是我们测量到的巨大 vllm-kl的来源。我们在4.2.4 在vLLM中禁用级联注意力中展示这些结果。
最有力的证明来自于当我们将一个失败的L20实验从检查点在H20 GPU上恢复时(见图8)。训练立即稳定并恢复,证明了硬件对问题的一阶影响。

图8: L20和H20之间on-policy GRPO实验的对比结果,显示gradient norm(左)和奖励(右)。我们从失败的L20实验(红线)第200个训练步骤的检查点开始在H20 GPU上开始实验(绿线)*
3.6 不匹配不是静态的:优化驱动的正反馈循环
有人可能认为训练-推理不匹配是硬件和软件栈的静态属性。然而,我们下面的"批次过滤"实验证明了不匹配与训练动态和模型状态是相互耦合的。
我们在"批次过滤"实验中设置了以下策略更新策略:对于每个训练步骤,如果收集的批次产生的 vllm-kl指标大于阈值,我们跳过在该批次上更新模型参数,因为这样的更新容易导致训练崩溃。相反,我们直接进入下一步,继续数据收集,直到获得 vllm-kl值低于阈值的批次,此时模型才被更新。
这个实验背后的逻辑是:如果不匹配程度完全独立于模型的输出分布和训练动态,那么 vllm-kl的量级在不同训练步骤之间应该表现出相同的分布。然而,图9中呈现的实验结果表明,一旦模型进入某种状态,它就会开始持续生成高不匹配批次,从而导致训练停滞。这一点,以及在其他运行中观察到的螺旋上升的 vllm-kl和 fsdp-ppl(图10),指向一个危险的反馈循环。

图9. 我们on-policy"批次过滤"实验的结果,显示**vllm-kl(左)和奖励**(右),被过滤掉批次的训练步骤用粉色标出。过滤阈值设置为0.1。*

图10*. 一个on-policy实验的结果,描绘了训练步骤上的**vllm-kl和fsdp-ppl**。两条线表现出相关的、螺旋向上的模式。
我们假设这是由于以下两阶段故障级联:
- 阶段1:数值敏感性增加。 RL优化器将模型的权重推入
bfloat16数据类型相对精度较低的数值范围(例如非常小或非常大的值)。 - 阶段2:Kernel驱动的误差放大。 这些初始的、微小的
bfloat16量化误差然后被馈入vLLM和FSDP的不同kernel中。不同的计算顺序充当非线性放大器,导致小的初始偏差在最终logits中累积放大为大的差异。
这形成了一个正反馈循环:不匹配导致有偏差且噪声较大的梯度,可能将参数进一步推入数值敏感区域,进而使下一次迭代的不匹配进一步恶化,直到系统最终崩溃。
4. 缓解训练-推理不匹配的尝试
接下来,我们将列出尝试过的缓解训练-推理不匹配的方法。其中一些方法有所帮助,而另一些则无效。
4.1 无效尝试
4.1.1 使用FP32 LM Head
受到Minimax-M1技术报告和博客文章《你的高效RL框架悄悄地给你带来off-policy RL训练》的启发,我们修补vLLM将lm_head转换为fp32精度。然而,在我们的实验中,修补后不匹配问题仍然存在,模型崩溃不可避免。图11展示了在L20 GPU上使用vLLM引擎中bf16 lm_head的失败的on-policy实验,以及从崩溃实验的第200个训练步骤开始在vLLM引擎上使用fp32 lm_head的实验。可以观察到两个实验最终都崩溃了,使用fp32 lm_head的实验仍然表现出 vllm-kl爆炸。

图11: vLLM引擎中lm_head精度的消融研究结果。左:vllm-kl指标的动态。右:训练奖励的动态。我们从使用bf16 lm_head的失败实验的第200个训练步骤开始,用fp32 lm_head*恢复RL训练。*
---第200个训练步骤恢复RL训练,禁用分块预填充以查看是否可以解决崩溃。然而,我们的实验结果(如图12所示)表明这种方法没有解决崩溃问题。

*图12: 使用分块预填充的消融研究结果。我们从之前启用分块预填充进行的失败实验的第200个训练步骤开始,禁用分块预填充重新运行RL训练。左:vllm-kl指标的动态。右:训练奖励的动态。
4.1.3 启用 enforce_eager和 free_cache_engine
VeRL的DAPO官方配方提到启用CUDA图(enforce_eager=False)可能导致模型性能下降。为了调查它是否影响训练-推理不匹配,我们进行了消融研究以检查vLLM引擎超参数 enforce_eager与另一个超参数 free_cache_engine的影响。我们在reasoning RL上进行了实验。我们在H100 GPU上使用Qwen3-4B-Base作为基础模型进行on-policy GRPO实验,共运行四种实验设置:超参数 enforce_eager和 free_cache_engine的穷举组合,每个设置为 True或 False。性能在AIME24基准上评估。实验结果如图13所示。从图中可以看出,调整 enforce_eager和 free_cache_engine的值对训练-推理不匹配和测试性能没有显著影响。

图13: reasoning RL中vLLM*加速和缓存相关超参数的消融研究。我们在H100 GPU上用超参数 enforce_eager(E)和 free_cache_engine(F)的四种可能组合进行on-policy GRPO实验。左:vllm-kl指标的动态。右:AIME24准确率的动态。*
4.2 有效尝试
4.2.1 原理性解决方案:分布校正
训练-推理不匹配将我们原本的on-policy RL问题变成了off-policy问题,其中用于生成rollout的策略(behavior policy,\textcolor{red}{\pi_{\theta}^{\mathrm{infer}}})与正在训练的策略(target policy,\textcolor{blue}{\pi_{\theta}^{\mathrm{train}}})不同。校正这种分布偏移的一个理论上合理的方法是importance sampling(IS)。然而,importance sampling的具体形式对于保持无偏梯度和实现稳定训练至关重要。
受(Yao et al., 2025)的发现启发——该工作首次强调了由于训练-推理不匹配而导致的这种隐式off-policy问题——我们分析了两种主要的importance sampling形式:理论上合理的sequence级别IS和常见但biased的token级别IS近似。
Principled Estimator:sequence级别IS
正确的、无偏的policy gradient估计器对整个生成的序列(轨迹)y 应用单一的重要性比率。这正确地将期望从behavior policy重新加权到target policy,产生目标函数 J(\theta) 的真实梯度。
让我们逐步推导sequence级别IS估计器 g_{\mathrm{seq}}(\theta)。
- 目标是最大化目标FSDP策略下的期望奖励:
- 因此真实的policy gradient是:
- 由于我们只能从vLLM策略进行采样,我们使用importance sampling来转换期望的分布:
这本质上是off-policy REINFORCE算法(Williams, 1992)。这个estimator在数学上等价于policy gradient的标准优势形式。关键在于证明importance sampling比率精确地校正了期望,从而揭示出底层的真实on-policy梯度,然后可以进一步对其进行优化。
- 详细推导
步骤1:将期望转换为on-policy形式
IS估计器的期望是关于behavior policy \textcolor{red}{\pi^{\mathrm{infer}}} 的。通过将期望的定义写成积分形式,behavior policy密度 \textcolor{red}{p_{\theta}^{\mathrm{infer}}}(y|x) 被消掉:
这留给我们真实的on-policy梯度,期望现在是关于target policy \textcolor{blue}{\pi_{\theta}^{\mathrm{train}}} 的。这证明了 g_{\mathrm{seq}}(\theta) 是真实policy gradient的unbiased estimator。
步骤2:分解为时间步并应用因果性
现在使用更简单的on-policy表达式,我们展开轨迹级项并应用因果性原则(步骤 t 的动作只影响未来的奖励)。这允许我们将总奖励 R(x,y) 替换为return-to-go G_t = \sum_{k=t}^{|y|-1} r(s_k, a_k)。
步骤3:引入advantage function
为了减少方差,我们减去一个状态相关的基线,即value function V^{\textcolor{blue}{\pi_{\theta}}}(s_t)。这将return-to-go转换为advantage function,A^{\textcolor{blue}{\pi_{\theta}}}(s_t, a_t) = G_t - V^{\textcolor{blue}{\pi_{\theta}}}(s_t)。
步骤4:转换为状态级期望
最后一步将轨迹上的期望重写为target policy诱导的状态访问分布 d_{\textcolor{blue}{\pi_{\theta}}} 上的等价期望。
- 步骤3到步骤4的详细数学
步骤A:从轨迹级期望开始
步骤B:应用期望的线性
交换期望和求和运算符。我们可以将求和扩展到无穷大,因为任何超出轨迹有限长度 |y| 的时间步 t 的项都是零,所以我们只是在加零。
步骤C:将期望展开为显式求和
通过对每个可能的状态 s 和动作 a 求和来重写内部期望,按它们的联合概率 P(s_t=s, a_t=a) = P(s_t=s) \cdot \textcolor{blue}{\pi_{\theta}}(a|s) 加权。
步骤D:引入state occupancy度量
重新排列求和以分组与状态 s 相关的所有项。
第一项,\sum_{t=0}^{\infty} P(s_t=s),是state occupancy度量的定义,d_{\textcolor{blue}{\pi_{\theta}}}(s)。第二项是动作上期望的定义,\mathbb{E}_{a \sim \textcolor{blue}{\pi_{\theta}}(\cdot|s)}[\dots]。
步骤E:得到最终形式
所有状态按state occupancy度量加权的求和,根据定义,是状态分布 d_{\textcolor{blue}{\pi_{\theta}}} 上的期望。
这个推导引导我们得到policy gradient的最终优势形式:
其中,s=(x,y_{<t}) 是状态(前缀),a=y_t 是动作(token)。项 d_{\textcolor{blue}{\pi_{\theta}^{\mathrm{train}}}} 是目标FSDP策略下的state occupancy度量。它被正式定义为遵循策略 \pi 时访问状态 s 的期望次数:
这个估计器是unbiased,意味着 g_{\mathrm{seq}}(\theta) = g(\theta)。为了数值稳定性,使用Truncated Importance Sampling(TIS),它将sequence级别比率 \rho(y|x) 裁剪在常数 C。
一个常见的biased estimator:Token级别IS
一种常见的启发式方法,通常受PPO等算法启发并在(Yao et al., 2025)中使用,应用每token的重要性比率。虽然这通常比sequence级别比率具有更低的方差,但它是一个对自回归模型理论上不合理的biased estimator。
让我们推导Token级别IS梯度估计器,g_{\mathrm{tok}}(\theta)。
- 该公式首先在时间步求和内部错误地应用importance sampling比率:即 g_{\mathrm{tok}}(\theta) 定义为
- 我们可以将这个轨迹上的期望重写为vLLM策略下访问的状态上的期望:
- 注意:这里, R(x,y) 是由 \textcolor{red}{\pi_{\theta}^{\mathrm{infer}}} 采样的完整轨迹的经验回报,它作为状态-动作价值 Q^{\textcolor{red}{\pi_{\theta}^{\mathrm{infer}}}}(s,a) 的蒙特卡洛估计。 引入基线并改变动作上的期望给出最终形式:
这个最终表达式清楚地揭示了token级别IS的gradient bias。可以清楚地观察到,J(\theta) 能够被 g_\text{tok}(\theta) 优化当且仅当 \textcolor{red}{\pi_{\theta}^{\mathrm{infer}}} 保持在 \textcolor{blue}{\pi_{\theta}^{\mathrm{train}}} 的trust region内,此时 d_{\textcolor{red}{\pi_{\theta}^{\mathrm{infer}}}}\approx d_{\textcolor{blue}{\pi_{\theta}^{\mathrm{train}}}} 且 A^{\textcolor{red}{\pi_{\theta}^{\mathrm{infer}}}}\approx A^{\textcolor{blue}{\pi_{\theta}^{\mathrm{train}}}}。
Token级别IS中的Bias来源
将 g_{\mathrm{tok}}(\theta) 与真实梯度 g_{\mathrm{seq}}(\theta) 进行比较,揭示了两个独立且重要的错误,使token级别estimator biased。
来源1:State Occupancy Mismatch
合理的off-policy校正必须考虑两个分布偏移:action概率和state visitation概率。Token级别方法只校正了第一个。
- 真实梯度(g_{\mathrm{seq}}): 期望是关于正确的目标fsdp分布下访问的状态的,\mathbb{E}_{s \sim d_{\textcolor{blue}{\pi_{\theta}^{\mathrm{train}}}}}。
- 有缺陷的梯度(g_{\mathrm{tok}}): 期望是关于不正确的行为vLLM分布下访问的状态的,\mathbb{E}_{s \sim d_{\textcolor{red}{\pi_{\theta}^{\mathrm{infer}}}}}。
这隐式地假设state occupancy比率是1,即 {d_{\textcolor{blue}{\pi^{\mathrm{train}}}}(s)} /{d_{\textcolor{red}{\pi^{\mathrm{infer}}}}(s)} = 1。这个假设在自回归模型中被灾难性地违反;由于确定性转移,单个不同的token选择保证状态轨迹完全发散。通过忽略这一点,g_{\mathrm{tok}}(\theta) 引入了一个大的、不可控的偏差。
来源2:Mismatched Reward Signal
第二个关键错误是token级别gradient用来自错误policy的reward signal来加权更新。
- 真实梯度(g_{\mathrm{seq}}): 更新按目标fsdp策略的advantage function缩放,A^{\textcolor{blue}{\pi_{\theta}^{\mathrm{train}}}},表示该策略下的期望未来奖励。
- 有缺陷的梯度(g_{\mathrm{tok}}): 更新按行为vLLM策略的advantage function缩放,A^{\textcolor{red}{\pi_{\theta}^{\mathrm{infer}}}}。
Target policy的gradient被属于behavior policy的reward signal缩放。由于state distribution和reward signal都存在根本性的不匹配,token级别gradient是一个biased且理论上不合理的estimator。
这些理论表明,尽管token级别方法可能具有较低的variance,但gradient bias仍然存在,可能导致训练不稳定——我们接下来的实验证实了这一预测。 我们还在(Part 1 & Part 2)中呈现了token级别和sequence级别方法的详细bias和variance分析。
实验验证
我们的理论分析预测有偏的token级别IS将是不稳定的并最终失败,而无偏的sequence级别IS将是稳健的。我们的实验证实了这一点。
IS防止gradient explosion,但Token级别仍然失败
我们从L20 GPU上崩溃实验的第200个训练步骤恢复,分别使用token级别TIS和sequence级别TIS(C=2)。如图14所示,虽然两者最初都防止了朴素实验中看到的gradient explosion,但使用token级别TIS的运行后来仍然崩溃。使用sequence级别TIS的运行保持稳定,验证了我们的理论,即token级别方法的biased gradient最终导致失败。

图14: 不同TIS策略使用的消融研究。不使用IS的朴素on-policy实验在200步后崩溃并经历gradient explosion。我们分别从第200个训练步骤开始,添加token级别TIS和sequence级别TIS*策略恢复RL训练。左:RL训练期间gradient norm的动态。右:RL训练期间训练奖励的动态。*
reasoning RL中的Token级别TIS
虽然token级别TIS在我们复杂的TIR实验中失败,但在更简单的reasoning RL中它可以帮助防止崩溃,因为那里的mismatch较小。在on-policy GRPO和RLOO实验中(图15),token级别TIS防止了gradient explosion,但训练仍然不稳定,没有达到更好的最终性能,这可能是由于底层的gradient bias。

图15(a): H100 GPU上on-policy GRPO实验的gradient norm(左)和AIME 24准确率(右),分别为无IS和有token级别IS(C=2)的reasoning RL。Token级别TIS防止训练崩溃但没有达到更好的测试性能。

图15(b): H100 GPU上on-policy RLOO实验的gradient norm(左)和AIME 24/AIME25平均准确率(右),分别为无IS和有token级别IS(C=2)的reasoning RL。Token级别TIS缓解训练崩溃但没有达到更好的测试性能。在后期阶段,TIS有性能下降的趋势。
TIS延长训练但可能遭受不稳定性
我们在L20 GPU上从头开始进行on-policy TIR实验,使用sequence级别TIS(C=2)。如图16所示,虽然该方法防止了完全崩溃,但奖励曲线在达到平台后表现出持续波动,其测试性能没有超过朴素实验崩溃前达到的峰值。

图16: 不同TIS策略使用的消融研究(续)。不使用IS的朴素on-policy实验在200步后崩溃。我们从头开始使用相同配置重新运行失败的实验,添加 C=2 的sequence级别TIS*。左:RL训练期间训练奖励的动态。右:RL训练期间测试准确率的动态。*
Masked Importance Sampling(MIS)
为改进TIS,我们提出Masked Importance Sampling(MIS),它对IS比率超过阈值 C 的序列掩盖策略损失(即 \rho(y|x) \gets \rho(y|x) \mathbb{I}\{\rho(y|x) \le C\})。如图17所示,MIS不仅稳定了训练,还超过了朴素和TIS实验的峰值训练奖励和测试准确率。

图17: on-policy GRPO与sequence级别MIS、TIS和不使用IS的朴素版本的比较。所有三个实验都在L20 GPU上进行。与朴素on-policy实验相比,MIS和TIS的引入都延长了训练持续时间,但两者在后期阶段也遭受了训练不稳定性。与TIS相比,MIS在训练奖励和测试集准确率上都有所改进,也超过了不使用IS的朴素实验的峰值性能。左:RL训练期间训练奖励的动态。右:RL训练期间测试准确率的动态。
Token级别MIS vs. sequence级别MIS
最后,我们比较了token级别MIS和sequence级别MIS。如预期,图18显示虽然两者都防止了初始gradient explosion,但token级别MIS实验仍然崩溃。这强化了我们的结论:对于复杂的、长时间范围的自回归任务,只有理论上合理的sequence级别校正才是可靠的。

图18: on-policy GRPO与token级别MIS和sequence级别MIS的比较。两个实验都在L20 GPU和相同配置上进行。左:RL训练期间gradient norm的动态。右:RL训练期间训练奖励的动态。
4.2.2 Top-p采样
如上所述,我们观察到vLLM策略的低概率token更容易出现严重的训练-推理不匹配问题,导致FSDP策略的概率极低。为进一步证实这一点,我们进行了以下top-p消融研究。我们在L20 GPU上运行on-policy GRPO实验,将vLLM采样策略的 top-p超参数分别设置为0.98、0.99和0.999(注意我们没有应用importance sampling进行梯度校正)。通过设置较小的 top-p值,我们旨在减少推理阶段极低vllm概率token的频率,从而缓解训练-推理不匹配。我们的消融结果如图19所示。如预期,vllm-kl指标表明较小的 top-p减少了 vllm-kl尖峰的发生。然而,重要的是要注意,较小的 top-p也增加了vLLM策略 \textcolor{red}{\pi^{\text{infer}}_\theta} 和FSDP策略 \textcolor{blue}{\pi^{\text{train}}_\theta} 之间的分布分歧。因此,在不应用TIS的情况下,gradient bias变得更大,导致随着 top-p减小,奖励改进更慢。

图19: RL训练期间vLLM*采样策略中不同 top-p值使用的消融研究。我们运行了 top-p分别等于0.98、0.99和0.999的on-policy GRPO实验。可以观察到,设置较小的 top-p值通常产生较小的 vllm-kl指标和较慢的奖励改进。左:RL训练期间 vllm-kl指标的动态。右:RL训练期间训练奖励的动态。*
4.2.3 使用其他GPU系列**
在发现H20 GPU上运行的实验中训练-推理不匹配显著小于L20 GPU后,我们将所有TIR实验切换到H20 GPU,这大大减少了训练崩溃的发生。图20展示了在相同配置下分别在L20和H20 GPU上从头训练的两个on-policy GRPO实验的结果。可以观察到,在H20 GPU上运行的on-policy实验显著延长了稳定训练持续时间并取得了更好的性能。

图20: 分别在L20和H20 GPU上进行的两个on-policy GRPO实验的训练奖励(左)和测试准确率(右)。
4.2.4 在vLLM中禁用级联注意力
根据这个GitHub issue,我们在初始化vLLM引擎时设置 disable_cascade_attn=True,发现它显著帮助减少在A100 GPU上进行的实验中的训练-推理不匹配。我们使用Qwen3-14B-Base作为基础模型在A100 GPU上进行了两个on-policy GRPO实验,disable_cascade_attn分别设置为 True和 False。结果如图21所示。可以观察到,禁用级联注意力后,vllm-kl指标从5e-2到1e-1的范围下降到1e-3左右,表明训练-推理不匹配大幅减少。此外,训练集上的奖励也相应增加。

图21: 使用级联注意力的消融研究结果。我们在A100 GPU上进行了两个on-policy实验:一个启用级联注意力,另一个使用相同配置但禁用级联注意力。左:vllm-kl指标的动态。右:训练奖励的动态。
5. 结论与实践者要点
训练-推理不匹配不是一个小众bug,而是现代reasoning和agent RL中一个根本性的、日益严峻的挑战,源于对性能的必然追求。我们的调查为诊断和缓解这一问题提供了系统性的方法论。
- Mismatch是不可避免的权衡: 必须接受高速推理将始终与训练计算存在分歧。这是核心权衡,而非临时缺陷。
- Monitor Your Health:
train-infer-kl/vllm-kl指标是一个重要的早期预警系统。将它与Perplexity(PPL)和gradient norm一起跟踪,以在collapse发生之前预测和诊断不稳定性。 - 识别真正的罪魁祸首: 问题并非随机发生。它被低概率token系统性地触发,而当模型处理out-of-distribution(OOD)输入时,这些token会更频繁地生成——这是tool-use和多轮应用中的常见场景。
- 硬件是一阶变量: 相同的代码可能在一个GPU架构上collapse而在另一个上完美训练。始终在目标硬件上验证你的设置,因为结果可能不完全可移植。
- 使用Theoretically-Sound Corrections: 虽然更换硬件或调整sampler可以有所帮助,但最robust和principled的解决方案是算法性的。我们的工作证明了理论上biased的token级别correction是不够的,在我们的实验中仍然可能失败。相比之下,sequence级别方法如Truncated(Seq-TIS)和Masked(Seq-MIS)Importance Sampling通过校正完整的state trajectory直接解决gradient bias。这些方法对于保持稳定性至关重要,建议在LLM-RL训练中考虑采用。
我们假设推理引擎(如vLLM)和训练框架(如Megatron-LM)之间的这种mismatch对于Mixture-of-Experts(MoE)RL也将是一个重要问题,这代表了一个有趣且关键的未来研究方向。