在大模型强化学习(RL)中,采样器通常运行在与相同的精度上,与训练器保持一致,从而让两者在数值上接近以保证训练稳定。然而在 RL 之外,服务系统并不受此约束:它们可以自由地使用 FP8、MXFP4 和 NVFP4 等低精度格式、协同设计的 kernel,甚至专为长上下文 prefill 打造的加速器,来针对速度和成本优化生成。
由于采样已经占用了80–85% 的大规模 RL 运行中的 GPU,这里还有很大的优化空间!我们提出一个问题:能否使用混合精度、混合加速器的采样器,各自运行自己的 kernel,同时保持训练的稳定性和性能。
有两个问题挡在路上。
第一个问题是学习。这些优化中的每一项都会加剧训练–推理不匹配,使样本更加 off-policy,这往往会破坏训练稳定性。Off-policy 校正是自然的解决方案;它让训练器能够从由不同策略生成的数据中学习,例如异步训练中的陈旧样本。由于它不对两个策略为何不同做任何假设,因此应当同样适用于不同的精度或加速器。
第二个问题是系统。RL 基础设施通常围绕同构加速器集群构建。混合采样器则要求相反:能够按需突发扩展、并使用自己的精度和 kernel 运行的自动扩缩容加速器。
通过 off-policy 校正和我们的自动扩缩容、无服务器 GPU,我们展示了使用混合精度、混合加速器采样器实现稳定、高性能且更便宜的 RL 是可能的——方法是在智能体编程任务上完全异步地训练一个开源权重模型。
我们的设置
我们训练Qwen3.6-35B-A3B进行智能体编程,上下文最高达 256K token,使用小米随发布的 2.7K 仓库任务MiMo-V2.6,并移除了仓库历史以及其他痕迹,因为某些任务会通过这些痕迹泄露参考修复。在每个回合中,模型通过多轮对话为某个 issue 创建补丁,并通过Modal Sandbox 中的 bash 工具提交。如果提交的补丁在全新的沙箱中通过任务的测试,则获得奖励 1,否则为 0。我们在SWE-bench Pro V2上进行评估,它与训练集没有重叠,并单独评估其困难子集HARD-51。每个检查点都在 BF16 下评估。
我们使用Miles作为 RL 框架,配合SGLang采样器和Megatron-LM训练器,在 B200 GPU 上以 BF16 更新策略。训练完全异步,对陈旧度没有限制,每次更新使用 128 个提示,每个提示 8 条轨迹。采样器保留各自的加速器、精度和内核,训练器不会重放它们的 MoE 路由决策。
采样器运行在两种设置之一:
- 混合采样器跨越六种加速器:B200 和 B300 提供 NVFP4 权重,H100 和 H200 提供 FP8 和 BF16 权重,A100 和 RTX PRO 6000 提供 BF16 权重。每个采样器运行其加速器自带的内核,并将其 KV 缓存保持为 FP8。路由器将每个智能体会话分配给这八个组之一,分配比例与该组的服务容量成正比,因此每个组在整个训练过程中都服务稳定份额的请求。
- 同构采样器仅在 B200 上运行,使用 BF16 权重和 BF16 KV 缓存。它们与训练器的加速器和精度一致,因此只有内核和陈旧度将它们区分开来。
在 Modal 上,每组采样器都按需扩缩容,甚至可以在运行中途进行,并以自己的精度提供训练器的最新权重。
让混合采样器 RL 稳定
我们从GRPO出发,不对不匹配做任何修正,并添加三个部分:
- 掩码重要性采样(MIS)修正加权。它将每个 token 的项乘以其重要性比率,并屏蔽比率落在固定范围之外的 token,因此在其保留的 token 上,期望更新遵循训练策略,且每个比率都保持有界。如果没有掩码,采样器很少产生的一些 token 可能携带非常大的比率并主导更新。
- 分数居中(SC) 消除漂移。在每个位置上,它减去采样策略下对数概率的期望梯度,因此在期望意义上,只有 token 之间优势的差异才会推动策略。重要性比率也能消除漂移,但掩码会重新引入漂移。
- 带掩码重放的 Top-p 采样(top-p) 将稀有 token 排除在外,并让两个策略拥有相同的支持集。采样器仅从 top-p 候选集中采样每个 token,因此可能携带极端比率的稀有 token 永远不会进入数据。训练器随后在同一个集合上重新归一化自己的概率。不启用它的运行则从完整词表中采样。
每个被采样的 token 都会将其优势乘以其对数概率的梯度加到更新中。综合起来,MIS 用重要性比率对该项重新加权,SC 对梯度进行中心化,而 top-p 将两个策略限制在相同的候选集上。
在没有校正的情况下,两种设置下的训练都会崩溃:在混合采样器上,GRPO 在训练开始后不久就崩溃。在同类采样器上,训练持续的时间长得多,但最终同样崩溃。校正的每一部分单独都能推迟崩溃,但每一次这样的运行最终都止步于基础模型或更差。只有 SC + MIS,无论是否加上 top-p,才能稳定训练到最后:pass@4 在大约前 100–140 步上升,然后在 HARD-51 上稳定在约 65–75%。完整集合从更高的起点显示出相同的模式,从 89% 到约 94%。
每一次崩溃都有三个共同迹象:训练奖励下降,采样器–训练器 KL 增长 3 倍或更多,且大多数回合因重复格式错误而结束。轨迹长度没有显示出一致的模式:一些崩溃的运行提前结束回合,而另一些则开始自我重复并运行更久。稳定的运行则没有这些迹象。匹配训练器的加速器和精度只能推迟崩溃:在同类采样器上的 GRPO 起始 KL 约低 4 倍,但从大约第 100 步起走上相同的路径。
崩溃片段很少写出格式错误的命令。相反,在任务进行到一半时,模型停止调用其工具,在连续三次回复都没有工具调用后,智能体结束该片段。在混合采样器上 GRPO 的第 40 步检查点,62% 的评估片段以这种方式结束,中位数为 22 轮,而通过的片段为 57 轮。其中 98% 的最后一条回复为空,而只有 6% 包含格式错误的调用。
以更低成本达到与同质采样器相当的水平
使用 SC + MIS + top-p 时,混合采样器达到的 SWE-bench Pro V2 分数与同质采样器相当:两个运行的 pass@4 在整个训练过程中保持接近。它们的训练奖励和梯度范数也遵循相似的路径,尽管平均采样器–训练器 KL 大 4.7 倍。熵在第 160 步左右之前保持一致;此后,它在同质采样器上上升,而在混合采样器上保持平稳。重要的是,校正的工作方式没有任何内容特定于该模型或这些加速器,因此我们预计这种模式会更广泛地成立。
将采样器与训练器解耦也使这些结果更便宜地达到。在训练的大部分时间里,混合采样器上每次更新的采样器成本比同质采样器低约 15%。请注意,我们的设置是为了验证使用混合精度、混合加速器采样器的性能,而不是为了最小化成本,因此还有更多节省空间:每个采样器都可以单独调优,并且混合可以转向最具成本效益的采样器。
接下来的三个部分解释这些结果:训练–推理不匹配从何而来,为什么我们不使用真正的同策略 RL,以及离策略校正如何工作。
训练–推理不匹配从何而来
一个采样的 token 可以从采样器获得一个概率,从训练器获得另一个概率。原因贯穿整个 RL 系统:
| 来源 | 示例 | 影响 |
|---|---|---|
| 内核 | 分离推理和训练内核;无批次不变性 | 相同输入产生不同输出,即使精度相同 |
| 精度 | BF16;FP8;MXFP4;NVFP4 | 格式在精度(尾数位)和动态范围(指数位、块缩放)上不同,因此两侧会产生不同的舍入误差;不匹配可能随着更多计算被量化而增大 |
| 加速器 | 特定架构的内核和数字格式:A100 上没有 FP8 张量核心,Hopper 上也没有 FP4 张量核心 | 相同代码在不同加速器上产生不同的不匹配 |
| 策略陈旧 | 完全异步 RL,其中采样器运行落后训练若干步;部分 rollout;进行中的权重更新 | 可能随陈旧程度增大的不匹配 |
| 路由 | Top-k 专家选择;稀疏注意力索引器的 top-k 选择 | 路由器不一致:两侧选择不同的专家,或不同的键值条目,对于相同的 token |
| Top-p / top-k 采样 | Token 仅从 top-p 或 top-k 候选中采样 | 不匹配的动作空间会破坏训练稳定性 |
| 多轮上下文 | 反分词–再分词的往返;重新渲染先前轮次或剥离其推理的聊天模板 | 训练器在模型从未见过的上下文中对 token 打分 |
混合采样器同时结合了其中大部分情况,其不匹配平均为
为什么不是真正的同策略 RL?
当每个 token 都从正在训练的策略中采样时,训练才是同策略的。当采样器和训练器是分离的系统时,同策略需要两件事:采样器计算与训练器逐位相同的概率(即,真正的同策略 RL),并且每个样本都来自训练器当前的权重。
逐位相同的采样和训练已被证明。开放 RL 框架使两者对于小模型完全相同并且对于 GLM-5 几乎完全相同,而 DeepSeek-V4 构建了批次不变、确定性的内核以使其训练和推理逐位可复现。然而,匹配每个来源都有代价:
| 来源 | 如何匹配 | 代价 |
|---|---|---|
| 内核 | 两侧都使用批次不变、确定性的内核 | 采样更慢,或为每个模型编写的 kernel |
| 精度 | 两侧使用相同的格式 | 训练器与采样器的格式绑定,而且没有任何单一的低精度计算格式能在所有加速器上运行:A100 没有 FP8 张量核心,Hopper 没有 FP4 |
| 加速器 | 在同一代加速器上进行采样和训练 | 排除了所有其他加速器 |
| 策略陈旧度 | 同步 RL,每个批次更新一次 | 放弃了异步 RL 的吞吐量 |
| 路由 | Rollout 路由重放;索引器重放 | 对于 MoE,一个有偏的目标策略,外加内存和通信开销;对于索引器,开销要大得多 |
| Top-p / top-k 采样 | Top-p / top-k 掩码重放 | 匹配的是候选集,而非概率;掩码的存储和传输 |
| 多轮上下文 | Token 进 token 出 | 如果保留先前的推理则上下文更长;如果剥离则训练计算量更大 |
这些来源大多只改变 token 概率,而校正正是针对这一点。多轮上下文和 top-p / top-k 采样打破了校正所依赖的共享上下文和共享支撑集,因此我们的运行会匹配它们:token 进 token 出,以及在使用 top-p 采样时进行掩码重放。至于其余部分,匹配与否是一种选择。
在实践中,大规模运行会匹配其中一些来源,并尝试校正其余部分。匹配了精度、路由和 top-p 掩码的运行仍会限制陈旧度,并且对具有极端重要性比率的 token 进行掩码, 而没有陈旧度的运行仍会校正训练与推理之间的不匹配。 在大规模下,逐位匹配意味着 kernel 是专门针对模型编写的。但即便如此,异步运行仍会因陈旧度而处于 off-policy 状态。
通常认为,这种不匹配越小,训练就越稳定,这也是为什么各次运行都会让采样器在数值上尽量接近训练器。然而,稳定性与其说取决于不匹配的幅度,不如说取决于它是否持续增长。如果不加校正,这种不匹配会使更新产生偏差,进而可能扩大不匹配,直到训练崩溃。较小的不匹配只是推迟了这一点:在同构采样器上,GRPO 起始时的 KL 比在混合采样器上低约 4 倍,但之后仍然崩溃了。有了校正,在混合采样器上的训练保持稳定,尽管存在显著的不匹配,性能也与同构采样器相当。
不匹配的幅度与其增长有不同的成因。幅度来自系统:每个采样器所运行的加速器、精度和内核。而增长来自更新,这正是校正所修复的。因此加速器和精度不需要新的修复方式:大规模运行已经在应用的同策略外校正可以扩展到它们。目标是让不匹配保持有界,而不是让它保持很低。
所以我们并不追求真正的同策略 RL:采样器和训练器是为不同的任务构建的,各自都在以自己的方式不断改进。让它们匹配会把二者绑在一起,各自都要放弃一些优化;有了校正,各自都能保留这些优化。
同策略外校正如何工作
从另一个策略生成的数据中学习是 RL 中一个已有成熟研究的问题。IMPALA将生成经验的执行者与学习器分离,并针对策略滞后进行校正,而不是让它们保持同步。采样策略q生成 token,而训练策略pθ从中学习。在混合采样器下,每个 token 都来自某个权重版本下的某个采样器,其中每个采样器记录该 token 的概率,因此q可能因 token 而异。校正从不需要知道为什么q与pθ不同:内核、精度、加速器和陈旧度都只表现为不同的q。
当 token 来自q而不是pθ时,每个位置上的策略梯度更新会引入两个误差。
漂移。在训练策略下,对数概率的梯度在每个位置平均为零;而在q下,它平均会朝着q的方向迈出一步。因此,更新的一部分会移动训练策略,无论哪些 token 获得了奖励:当期望优势为正时,朝向采样策略;当其为负时,远离采样策略。在组内对优势进行归一化并不能消除这一点,因为在给定前缀之后的期望优势通常不为零。随后采样器加载训练器的新权重并再次引入它们的误差,因此训练器会不断朝着一个随它一起移动的目标移动。
错误的加权。该更新按采样器产生每个 token 的频率来加权,而不是按训练策略。一个 token 在训练策略已使其不太可能出现之后,仍可能持续获得较大的梯度。
当q=pθ时,这两个误差都会消失,否则会增大。
重要性采样通过用每个 token 项的比率对其加权来修正这两个误差pθ/q,前提是采样器能够采样训练策略所能采样的每个 token。用整条轨迹的比率乘积来加权是精确的,但其方差可能随长度呈指数增长,因此大规模运行会一次一个 token 地应用该比率,一种一阶近似其误差会随不匹配程度和轨迹长度而增长。即使按 token 计算,采样器很少产生的 token 也可能带有高达 1 /q的权重。通过截断或掩码来限制权重可以控制方差,但会重新引入漂移。MIS 进行掩码:它将比率保持在一个固定范围内,并在范围外将其设为零。
分数中心化则改为消除漂移。在每个位置,它减去q下对数概率的期望梯度,因此在期望上,一个恒定的优势不再移动策略。它保留了错误的加权,这就是它与 MIS 配对的原因:对加权项进行中心化可以消除漂移,无论权重如何,包括掩码重新引入的漂移。SC + MIS 消除了漂移,并按训练策略对它保留的 token 进行加权。计算q下的期望梯度需要q对于每个 token。采样器为其最可能的 token 记录该值;对于其他每个 token,q由训练器的概率近似,并按采样器剩余的概率质量重新缩放。
。Top-p 采样破坏了共享支撑集,而掩码回放将其恢复。采样器只从 top-p 集合中采样,因此该集合之外的 token 在q下的概率为零。在训练器中回放该掩码会将pθ在同一集合上重新归一化。那些可能携带最大比值的最稀有 token 永远不会进入数据,而采样器会记录每个候选 token 的概率,因此居中是精确的而非估计的。
我们的运行结果显示了什么
- GRPO保留了这两种误差。训练开始后不久,其梯度范数增长约 20 倍。
- GRPO + MIS修正了加权,但没有修正其掩码带回的漂移。其梯度范数保持在初始值的几倍以内,但在训练中途,随着其 KL 和比值落在 [0.2, 5] 之外的 token 占比跃升超过 10 倍,其熵崩溃了。
- SC消除了漂移,但保留了错误的加权。其熵稳步下降,其 KL 增长约 3 倍,随后运行崩溃。
- GRPO + top-p将最稀有的 token 排除在外。当 GRPO 的梯度范数爆炸时,其自身的梯度范数保持小 3–10 倍,但其 KL 稳步攀升,并在更晚的时候崩溃。
- SC + MIS消除了漂移,并修正了其保留 token 上的加权。除了一次短暂的梯度尖峰外,它保持稳定,同时其 KL 上升约 2 倍。
- SC + MIS + top-p也精确地居中。它具有最低的 KL,其梯度范数和熵保持平稳。
SC + MIS + top-p 在平均失配为同质采样器 4.7 倍的数据上训练,并保持稳定。在每一次崩溃的运行中,失配都增长 3 倍或更多。
对于每一组采样器,校正的工作量都跟随失配程度。一个组在极端比率 token 中的占比,更多跟随其 KL 而非其样本占比:H100 FP8 提供了 10% 的样本,却贡献了 29% 的这类 token,而 B200 和 B300 NVFP4 提供了 47% 的样本,却只贡献了 16%。即便对 H100 FP8 而言,也只有约 0.3% 的 token 落在 [0.2, 5] 之外。校正会按每个 token 自身的比率对其加权,因此同一套校正能让混合中每一组都保持训练稳定。
局限性
MIS、SC 和 top-p 都一次只处理一个 token,因此各自都继承了逐 token 近似的局限:前缀和优势仍然来自采样器。序列级校正,例如GSPO的,以及DeepSeek-V3.2的,还有对陈旧度的约束,会在该误差变得过大时加以防范。我们的运行没有使用其中任何一种,并保持稳定,上下文长度最高达 256K token,平均陈旧度约为 4。
带掩码重放的 top-p 采样也改变了训练的内容:更新优化的是截断到 top-p 候选集后的策略,而该集合之外的 logits 在该位置得不到梯度。我们的评估从完整词表采样,而 SC + MIS + top-p 的评估表现与 SC + MIS 大致相当,后者在训练中同样从完整词表采样。
校正还让样本保持原样:它改变的是更新如何使用每个 token,而不是采样器产生哪些轨迹。因此,选择某种精度或加速器仍然是一种权衡,只不过是在吞吐量与样本效率之间的权衡,而不是在吞吐量与稳定性之间的权衡。
这些校正并非唯一的选择,但它们共享一个原则:失配可以很大,只要更新保持接近同策略更新,并且失配保持有界。更好的方法很可能还会出现。
下一步
Correction 将采样器与训练器解耦,这改变了 RL 可以运行的方式。采样不再需要大型同构集群:任何能够服务模型的加速器都可以贡献样本,因此采样集群可以与训练器分开配置规模,并在运行过程中随着运行需要更多样本(例如轨迹变长时)而扩展。推理优化也直接延续到 RL 中:更快的 kernel、投机解码、更低精度,或将 prefill 和 decode 拆分到不同加速器上,都可以加速采样,而训练器无需与之匹配。训练器可以迁移到最佳加速器并使用自己的低精度,例如FP8或NVFP4,而采样器无需跟随。随着加速器在厂商、代际和数字格式上不断多样化,这种解耦对于让所有人都能进行前沿训练变得至关重要。
我们正在研究 RL 算法与系统在大规模下相遇的难题。如果这些听起来像是你感兴趣的问题,加入我们。
致谢
我们想感谢 Miles 团队、Luke Huang、Martin Marek、Dhruv Gautam、Xiuyu Li、Byron Hsu、Ziang Li 和 Zilin Zhu 就本文草稿进行的讨论。