prime-rl 0.10.0:更快的训练、我们新的 RL 损失 IPO,以及一个统一的评测栈
今天我们发布 prime-rl v0.10.0 和 verifiers v0.4.0. 我们新增了新的 RL 算法 IPO 并将其设为默认,专为异步 RL 稳定性而设计,同时还带来了性能改进和新模型支持。
训练吞吐量
训练器的默认设置偏向内存,因此大模型可以放在少量 GPU 上。本次发布还记录了另一端:一个 max-throughput recipe ,它把所有内容都保留在 GPU 上,并使用 fullgraph.
Qwen3-235B-A22B SFT 对比 torchtitan。 两次运行连续使用相同的节点:4 × 8 B300,16k 序列长度,FSDP + EP 8,完整激活检查点,fp32 AdamW,均衡路由。
| 运行 | s/step | tokens/s/GPU | MFU | 峰值内存 |
|---|---|---|---|---|
| torchtitan | 5.04 | 3253 | 40.7% | 144 GiB |
| prime-rl | 4.39 | 3732 | 46.6% | 141 GiB |
在相同设置下快了 1.15×。使用以下命令复现: uv run sft @ examples/advanced/qwen3-235b-a22b/sft-max-perf.toml.
大部分收益来自 MoE 工作:
- 一个 MoE 运行时和检查点布局现在服务于所有模型。
- Gate/up 和 QKV 投影在运行时融合。
- MoE 块使用
fullgraph. - torchtitan 风格的分块损失进行编译。
- 一个 SonicMoE BF16 后端,以及按层选择 MoE 计算。
GLM-5.3。 稀疏注意力现在前向传播使用 FlashMLA(在 H200 上比 TileLang 快 1.9–3.6×),反向传播使用 cuDNN(快 3–4.7×)。结合 12 节点、16k 配方(无上下文并行或卸载),完整的 GLM-5.3 SFT(78 层,H200,假数据)改进如下:
| 设置 | 节点 | tokens/s/GPU | MFU |
|---|---|---|---|
| 之前:CP 2 + 卸载,TileLang | 8 | 465 | 22.3% |
| 12 节点配方,TileLang | 12 | 701 | 33.6% |
| 12 节点配方,cuDNN + FlashMLA | 12 | 835 | 40.1% |
在真实权重和数据上,一步从 31.2 秒降至 24.2 秒。在 RL 中,8 层代理每步从约 16 秒降至约 12.5 秒。
DeepSeek V4 Flash 获得了这些自定义内核:
- 一个 flash 风格稀疏注意力内核:在真实数据上 MFU 从 46.7% → 53.6%。
- Lightning Indexer 使用融合 FP8 内核评分,CP 收集与计算重叠:MFU 从 40.2% → 47.8%。
- 一个融合的 mHC 链。
- 一个融合 RoPE 内核,与 vLLM 逐位匹配,并使 B300 上的 SFT 步骤快 13–14%。
IPO:INTELLECT 策略优化
在异步 RL 中,训练器和推理引擎对 token 概率永远无法完全一致。策略自 rollout 采样以来已经更新,且内核不同。IcePop 是常见的修复方法,当比率 πtrain/πinfer\pi_{\text{train}} / \pi_{\text{infer}}πtrain/πinfer 超出固定范围时屏蔽 token。IPO 则是在概率本身变化过大时屏蔽 token:
∣πtrain(yt)−πinfer(yt)∣>ϵ\left|\pi_{\text{train}}(y_t) - \pi_{\text{infer}}(y_t)\right| > \epsilon∣πtrain(yt)−πinfer(yt)∣>ϵ比率会误判分布的两端。一个稀有 token 从 0.01 升到 0.06,比率是 6×,会被屏蔽,尽管几乎什么都没变。一个高概率 token 从 0.90 降到 0.20,比率是 0.22×,会被保留,尽管策略变化很大。IPO 的掩码是双侧的,忽略优势的符号,并且只有一个旋钮。概率差判据来自 DPPO(Qi 等,2026), 它将其用于策略更新之间的 PPO 信赖域。IPO 将其应用于训练器–推理不匹配,并且与 DPPO 不同,其掩码不依赖于优势的符号。IPO 取代了我们之前基于 DPPO 的默认损失,该损失已在此版本中移除。
我们在 GLM-4.5-Air 上进行了 agentic SWE RL 消融实验,未使用 router replay,最多 64 步 off-policy。这是一个刻意设置的极端场景:在大多数运行中 IcePop 是稳定的。然而在这里,IcePop 在约 1.2k 步时崩溃,当时训练器–推理 KL 暴涨超过 20×。IPO 在 eps 0.2 和 0.3 下直接训练通过。在 eps = 0.3, IPO 仅屏蔽约 0.25% 的 token,而在旧的 0.1 下约为 2%。

IPO 配合 eps = 0.3 且无 KL 项现已成为默认。IcePop、PPO 和 CISPO 仍可作为可选损失使用。GRPO 也获得两个选项:长度加权基线和精确的 prompt 均值损失聚合,这可以防止具有长轨迹的 prompt 主导梯度。完整设置和复现配置见 docs/ipo.md.
此版本中的其他 RL 变更:
- Top-p 和 top-k 采样现在在训练器中精确重放,使用从 vLLM 捕获的采样掩码。
- 训练器批次保持恒定大小:编排器回填被过滤掉的样本。
- RL 默认冻结 MoE 路由器,这可以防止训练器的专家选择偏离推理所采样的专家选择。
新模型
prime-rl 中的每个架构现在都运行在我们自己的优化实现上。此版本新增:
- DeepSeek V4 Flash, 配备上述内核和环形上下文并行。
- Qwen3.8 Flash Next, 具备:
- n-gram(engram)嵌入按词汇行跨数据并行 rank 分片
- 索引稀疏注意力
- Gated DeltaNet
- 超连接残差
- sigmoid 门控 MoE
- Nemotron-H (Nano 和 Super),在打包文档边界处进行 Mamba-2 状态重置,并支持 Ulysses 上下文并行。
- 来自内联 rollout 的多模态 RL。 图像在 rollout、打包和传输过程中保持内联,而不是作为像素张量传输。vLLM 返回扩展后的 prompt ID 和图像占位符范围,因此每个图像 token 在训练中精确对齐。支持 Qwen-VL 和 Kimi K2.5。
统一评测栈
评测 CLI 已从 verifiers 迁移到 prime-rl。 uv run eval 可在任何环境上评估任何模型,既可独立运行,也可作为训练运行的在线评测:
- 它通过 verifiers 环境服务器运行,具有自适应并发。
- 它显示在本地仪表盘中。
- 它接受多个
[[source]]块。 --resume会从 trace 流继续被中断的运行,只重新运行缺失的 rollout。
每个训练和评测源都有一个 select 块(include/exclude、shuffle、skip、limit)。它由 verifiers 的共享任务选择机制支撑,因此 prime-rl 和 vf-eval 会为相同配置选择相同的任务。超时的 rollout 现在有独立的结果:在评测中计分,并被排除在训练批次之外。
uv run eval gsm8k
uv run eval @ sources.toml --env.retries.max-retries 3
verifiers 0.4.0
prime-rl 0.10.0 随附 verifiers 0.4.0,后者完成了向 v1 的迁移:旧版 v0 栈已被移除,CLI 现在为 vf-*。详情见 verifiers 发布说明 。
致谢
感谢所有为这些版本做出贡献的人,并欢迎 prime-rl 的新贡献者: @parkerpettit, @yafshar, @kcoopermiller, @biswapanda, @Alex-Shan, @cabrinha, @nxphi47, @akirillo, @Apocrathia, @artzhuravel 和 @skpulipaka26.
立即试用: prime-rl 0.10.0 和 verifiers 0.4.0.