REINFORCE Zero:对齐 kernel 让异步 RL 在 lag 64 下稳定训练
Zero Mismatch, Simple Async RL: REINFORCE Zero, DeepSeek-V4.1 and Kimi K3.1
NVIDIA Research 与 Inferact 的 REINFORCE Zero 提出先对齐 rollout 与训练端的 kernel,再用不裁剪的 token 级重要性采样修正权重滞后,在 16 张 GPU 上训练步吞吐达到同步训练的 2.40 倍。
原文把异步 RL 的权重滞后与 kernel mismatch 拆开分析,并给出可复用的对齐配方与开源代码。
TL;DR
- 异步 RL 更快,但它是在由旧权重生成的样本上训练的。
- rollout 到 learner 之间的差距由两部分组成。权重滞后变化平滑,未裁剪的重要性采样(IS)可以控制它。内核不匹配——即 rollout 和训练对相同权重计算出不同数值——会波动,并且尽管有 IS 仍然持续存在。
- 对齐内核后,未裁剪的 IS 无需样本拒绝门即可修正剩余的权重滞后。REINFORCE Zero(NVIDIA Research 与 Inferact)稳定训练 20,000 次更新,在策略滞后 64 下学习,并在内核对齐的情况下达到同步训练训练步吞吐量的 2.40×。
- 零不匹配现已覆盖 DeepSeek-V4.1-Flash(DAPO rollout 步与快速基线相差 10% 以内)、第 0 天的 Kimi K3.1,以及 AMD MI355X 上的 DeepSeek-V4-Flash 和 Kimi K3.1。
- 所有内容都在 Inferact/zero-mismatch-rl 中。
1. 从同步到异步
上个月,我们展示了 rollout 和训练可以完全一致。在 DeepSeek-V4-Flash 上,vLLM 和训练器在快速内核上对每个采样 token 产生的 logprob 逐位相同,rollout 吞吐量降低了 8.7%。现在有一个 agent skill 为每个新模型执行对齐。
那篇文章讲的是同步 RL,它没有权重滞后,因此零不匹配消除了 rollout 和训练之间唯一的差距。本文讲的是异步 RL,它更快,但按设计就是离策略的。零不匹配在那里还重要吗?
我们用 NVIDIA Research 和 Inferact(Jian Hu 等)的新论文来回答:REINFORCE Zero: Kernel Alignment Unlocks Stable Asynchronous RL with Importance Sampling。第 2 至 4 节中的所有数字均来自该论文。
2. 异步 RL:更快,但离策略
在同步 RL 中,rollout 和训练轮流进行,彼此等待。异步 RL 同时运行它们:rollout 持续生成,而 learner 进行更新。
代价是权重滞后。用权重版本 v 生成的样本在版本 k > v 上训练。差距 k − v 并不小:REINFORCE Zero 在数学推理上以滞后 2 和 8 运行,在 agentic 工具使用上以滞后 64 运行。
因此 learner 总是在来自较旧策略的样本上训练。标准修正方法是重要性采样(IS):用 π / μ 对每个 token 重新加权,即 learner 对该 token 的概率除以 rollout 在采样时记录的概率。问题是这种修正是否覆盖了整个差距。
3. 两个表现不同的差距
learner 与 rollout 之间的 logprob 差距分为两项:
log π_θk − log μ_v = (log π_θk − log π_θv) + (log π_θv − log μ_v)
weight lag kernel mismatch
π 是 learner 的计算,μ 是 rollout 引擎的计算。第二项在相同权重 θv 下比较两者。
权重滞后变化平滑。它在最近的更新上逐层展开,当每次更新很小时,它遵循平滑变化的策略轨迹。这就是 IS 旨在修正的差距。
内核不匹配会波动。它取决于批次组成和数值执行,因此即使 rollout 和 learner 使用相同权重,也会引入波动。
图 1:重要性权重偏差 D3 的峰值与中位数之比,对数刻度,针对 DeepSeek-R1-Distill-Qwen-1.5B 上的两次异步运行:内核对齐的 REINFORCE Zero 与使用标准内核的 IS。来源:REINFORCE Zero,表 2。
REINFORCE Zero 论文用 D3 来衡量这一点,即每次更新中 w − 1 − log w 在 token 上的平均值,其中 w 是重要性权重。当 w = 1 时,每个 token 的该项为 0,并随着 w 偏离 1 而增大。在对齐内核的情况下,D3 的峰值是其中位数的 1.50 倍:未裁剪的 IS 使剩余的权重滞后失配保持平滑且受控。在标准内核下,其峰值达到 442.54 倍:尽管使用了 IS,大的重要性权重波动仍然存在。
因此先移除内核项。 剩下的就是权重滞后,而普通的未裁剪 IS 可以纠正它,无需截断,也无需拒绝门。
4. REINFORCE Zero
REINFORCE Zero 是第 3 节推导出的配方。它包含三个部分。
配方
- 对齐内核。 rollout 和学习器对相同的权重和 token 计算相同的 logprob,如我们上一篇博文所述。内核项恰好为 0,因此剩下的任何差距都是权重滞后。
- 用 token 级 IS 纠正权重滞后,不裁剪。 rollout 已经记录了它采样的每个 token 的 logprob。学习器用自己的概率除以记录的概率,并直接使用该比值:不截断,不过滤。
- 优化普通 REINFORCE。 每个响应的优势是其奖励减去其所在组的平均奖励。token 在响应内取平均。没有价值模型,没有拒绝门。
对于一批 B 个响应,设 A_i 为响应 i 的优势:
L(θ) = − (1/B) Σ_i (1/T_i) Σ_t A_i · π_θ(a_it | h_it) / μ_i(a_it | h_it)
这就是整个算法。
为什么用未裁剪的 IS
在固定历史下,用精确比值 w = π / μ 对每个采样 token 加权,使期望更新等于当前策略下的更新。裁剪权重通常会引入偏差。
正确的平均梯度不足以实现稳定训练。在高斯模型中,论文推导了精确的更新误差,并表明失配会放大更新方差并缩小稳定步长范围,即使在无偏 IS 下也是如此:相同的步长在无失配时能学习,在有失配时会损失奖励。实验指出内核失配是大偏移的来源(图 1),因此移除它才能让未裁剪的 IS 保持稳定。
不对齐会发生什么
论文用标准内核运行相同的异步 IS:
- rollout 到学习器的 KL 中位数在最初和最后 1,000 次更新之间上升了 83.33 倍,在线 AIME24 pass@1 从 34.27% 下降到 13.96%。使用对齐内核时则保持平稳。
- 裁剪前的最大梯度范数达到 38.27,而对齐内核下为 0.0555。
- 添加序列门可以稳定训练,但到最后的 1,000 次更新时,它会拒绝 24.48% 的序列。REINFORCE Zero 不拒绝任何序列。
在滞后 64 下学习
论文将滞后推到 64。使用 Qwen3-4B、Python 工具和 16K 上下文,REINFORCE Zero 在策略滞后 64 下训练:一个样本可能来自比学习器旧最多 64 个版本的权重。它在 5,000 次更新中持续学习:平均奖励从最初 100 次更新的 0.287 上升到约 0.78,AIME24/25/26 pass@1 在同一次运行中有所提升。

图 2(REINFORCE Zero,图 6):使用 Qwen3-4B 和 Python 工具在滞后 64 下学习,经过 5,000 次更新。左:训练奖励,100 次更新均值。右:200 次更新检查点上的等权 AIME24/25/26 pass@1(点)和平滑趋势(曲线)。
结果
| 设置 | 结果 |
|---|---|
| 吞吐量,16 块 GPU,12K 次更新 | 2.40× 对齐内核下同步训练的训练步吞吐量(68.55 对 164.77 小时),质量相当 |
| 20K 次更新的推理任务,DeepSeek-R1-Distill-Qwen-1.5B | 在滞后 2 和 8 时保持稳定;rollout 到 learner 的 KL 保持平稳 |
| 高滞后,Qwen3-4B + Python 工具 | 在 滞后 64 下通过 5,000 次更新学习;平均奖励 0.287 → 约 0.78 |
| 带工具的 MoE,Qwen3-30B-A3B | 宏观 pass@1 在 3,000 次更新中从 31.29% → 71.55% |
| 计算机使用,Nemotron-3-Nano-Omni-30B 在 OSWorld 上 | 428 次更新后 pass@1 从 50.97% → 56.16% |
在 6,000 次更新的 1.5B 推理任务上,各变体的表现与分析预测一致:
| 方案 | 对齐内核 | 异步 | 宏观 pass@1 |
|---|---|---|---|
| 基础模型 | — | — | 40.29% |
| 同步 | ✓ | 48.91% | |
| IS | ✓ | 45.32% | |
| IS + 序列门控 | ✓ | 46.79% | |
| IS + token 门控 | ✓ | 44.59% | |
| Score Centering,无 IS | ✓ | ✓ | 47.50% |
| REINFORCE Zero,滞后 2 | ✓ | ✓ | 48.80% |
| REINFORCE Zero,滞后 8 | ✓ | ✓ | 48.53% |
异步 REINFORCE Zero 与同步训练相当。每个标准内核变体都落后,无论使用哪种校正;使用对齐内核时,无 IS 的 Score Centering 介于两者之间。

图 3(REINFORCE Zero,图 1)。左:宏观 pass@1。右:rollout 到 learner 的 KL。标准内核 IS 向上漂移;REINFORCE Zero 在 20,000 次更新中保持平稳。
对齐在这里的代价
对齐内核比最快的标准内核更慢。在 OSWorld 上,REINFORCE Zero 的平均步耗时 944.25 秒,而带序列门控的标准内核 IS 为 884.17 秒,多出 6.8%。论文中的模型使用我们上一篇博文中的 agent skill 进行对齐;训练代码位于 NVIDIA-NeMo/labs-molt。
5. 旗舰模型:DeepSeek-V4.1 和 Kimi K3.1
REINFORCE Zero 从对齐内核开始,而每个新模型都会带来需要对齐的新算子。自上一篇博文以来,两个旗舰版本实现了零不匹配:DeepSeek-V4.1-Flash,以及发布当天的 Kimi K3.1。下面的运行验证了这些模型上的对齐;对它们进行长时间异步运行是下一步。
贯穿始终,diff 0 意味着 rollout 和训练器对每个采样 token 计算出的 logprob 逐位完全相同。
DeepSeek-V4.1-Flash,发布精度
一致路径端到端保持发布精度:FP8 和 MXFP4 权重、MegaMoE、带滑动窗口的稀疏注意力,以及 DSpark 推测解码,并配合 CUDA graphs。Megatron-LM 训练器(mLite,由 NVIDIA DevTech 的 Yan Bai 开发)按相同顺序调用 rollout 自身的算子。关键算子是在前缀缓存下的滑动窗口:agentic RL 需要开启前缀缓存,而缓存命中必须给出与未命中相同的 logprob。
在 16 节点 × 4 GB200 上,128K 上下文的 SWE-bench Pro agentic RL 在每一步都保持 diff 0。对于 DAPO 数学 rollout,每节点 128 条轨迹、响应最长 8K token,一致 rollout 步耗时保持在快速基线的 10% 以内。
Kimi K3.1,第 0 天
Kimi K3.1 发布时即提供 第 0 天 vLLM 支持,包括零不匹配 RL。难点在于 KDA 线性注意力:prefill 逐块计算,decode 逐 token 计算,两者的舍入方式不同。现在 decode 对相同的块行重复 prefill 的算术,因此 prefill、decode 和训练器对基础模型以及每个模块上的 LoRA 适配器都一致。在 4 节点 × 4 GB300 上,使用 LoRA 的 100 个 DAPO 步骤保持 diff 0,AIME 24/25/26 mean@8 从 0.451 升至 0.664。性能优化仍在进行中。
6. 超越 NVIDIA:AMD MI355X
零失配是内核本身的属性,而非某一家厂商的属性。在 MI355X 上,与在 NVIDIA 上一样,训练器的前向调用的是 vLLM 自己的模块和内核,而 VLLM_BATCH_INVARIANT 在一致版本与快速版本之间切换。
DeepSeek-V4-Flash 在 4 节点 × 8 MI355X 上,在 36 个 GRPO 步骤中保持 diff 为 0,包括跨一次恢复。仅启用批次不变模式起初没有带来任何变化:二分定位发现了十个批次方差来源。其中一半是按形状选择内核的库(hipBLASLt、AITER/CK、Triton、TileLang);其余包括索引器的 top-k、解码使用与预填充不同的内核,以及一个按到达顺序对 rank 求和的专家并行合并。随后,位保持优化将服务吞吐损失从 62–66% 降至 7.4–10.1%。配方与镜像:verl#8505。
Kimi K3.1 在 2 节点 × 8 MI355X 上运行 GB300 设置(每一层包括专家层都使用 LoRA r32,冻结的 MXFP4 基础模型),每一步 diff 均为 0,并逐 token 检查。它需要两处修复:将训练器的 bmm 和索引器线性层从 hipBLASLt 移开,因为后者在 4,096 行和 4,097 行时选择不同的 tile;以及在唤醒后对 KDA 状态槽写入去重,因为一次驱逐和一次复用可能在同一步写入同一个槽。一条位保持的 MoE 路径将 RL 步骤从约 2,300 秒缩短到 1,350 秒;相对于快速基线的成本仍在测量中。配方与补丁:草稿 verl#8574。
7. 开源
REINFORCE Zero:论文和代码位于 hijkzzz/REINFORCE-Zero,训练代码位于 NVIDIA-NeMo/labs-molt。
零失配:Inferact/zero-mismatch-rl 包含该 agent 技能,以及本文中每个模型的配方、出了什么问题、如何修复以及代码。
下一步:在这些大模型上进行长时间异步运行,以及在 Kimi K3.1 上进行性能优化。
致谢
感谢(按组织字母顺序):
- Verda,为 SWE-bench Pro agentic RL 运行提供沙箱
- verl 团队
来源:vLLM Blog · vllm.ai