AREX Feed Article
SkyRL IsoExec:vLLM 与 Megatron 的 logprob 差从 1.6e-2 压到 6.7e-7
8 月 21 日,vLLM 官方账号发布,介绍 NovaSky 的 SkyRL 团队带来的新成果 IsoExec:一套让 RL 训练中 rollout 引擎与训练器在 token logprob 上逐位一致(bitwise parity)的执行抽象。同一天,刊出技术长文《IsoExec: Unified Execution to Eliminate Trainer-Inference Mismatch in SkyRL》,并附上实现代码仓库。
推文公布的数字是这次发布的核心:在 Qwen3.5-35B-A3B 上跑 DAPO,单节点 8×H100,同步 RL 训练 50 步,rollout 与训练的平均 logprob 绝对差从 1.6e-2 降到 6.7e-7,缩小约 2.4 万倍;为此付出的全步开销是 25.3%。vLLM 称,在不同张量并行(TP)、专家并行(EP)、序列并行(SP)布局下,位级一致仍然成立,vLLM 的 scheduler 与 CUDA graphs 也照常可用。
同一策略,两套引擎,算出两个 logprob
问题出在浮点数的非结合性上。解释,on-policy RL 在理论上假设 rollout 与训练评估的是同一策略:rollout 引擎按策略采样 token,训练器之后用同一份参数重算它的 logprob。实际系统里,推理引擎(vLLM、SGLang)与训练框架(Megatron、FSDP)各自为不同负载优化,kernel、batch 形状、执行模式、分布式布局都不一样,执行同一数学模型时的归约顺序(reduction order)因此不同,输出 token 概率随之偏离。
这个偏差有真实的后果。博客援引字节跳动 VeXact 研究称,mismatch 本身就能让 REINFORCE 和 GRPO 运行失稳,在 KL 估计器来得及反应之前扭曲优势加权损失;又引 Fireworks 的报告:一次 GLM-5.2 运行中训练-推理 KL 约 0.013,clipping 丢弃了约 45% 的 token,reward 在第 20 步附近崩溃,而位级对齐的运行零 clip、保持稳定。
此前的工作只覆盖问题的一部分:Thinking Machines 形式化了 batch invariance;vLLM × TorchTitan 的位级一致工作把匹配 kernel 同时装进两个引擎,但仍需维护两份对齐的模型副本;TBIK 专注于不同并行配置下的位级一致。IsoExec 的 README 写明自己的做法:直接移除差异,而不是修正它。
IsoExec 的两件套:契约钉死舍入,模型统一 kernel
IsoExec 由两部分组成。执行契约以框架无关的形式声明一切影响浮点舍入的执行选择,包括 kernel 实现、累加 dtype、归约顺序,并按 case(trainer_fwd、engine_prefill、engine_decode 等)规定每个算子区域用什么实现、钉死哪些常量。契约的 identities 是序列化内容的 SHA-256 摘要:semantic 摘要核对两端描述同一逻辑模型,numerical_policy 摘要覆盖所有影响数值结果的选择,deployment 摘要只覆盖不影响 bit 的配置。的 README 说明,训练与 rollout 两个进程在权重同步前交换内容哈希的契约,组合不一致就拒绝启动,而不是默默产出错误的重要性比。
另一部分是统一模型:一组经验证在训练、prefill、decode 之间位级一致的 kernel。GEMM 侧沿用 TBIK 的固定归约树思路,但改沿 K 维实现:pik 把 K 维分成连续叶块,每叶用确定性 Tensor Core MMA 加 FP32 累加,rank 到叶的映射与二元算术调度固定,NCCL 只负责搬运部分和。专家并行下,专家输出按固定路由顺序合并,而非按 rank 顺序;序列并行下复用同一归约树,每个 rank 只保留自己的输出切片。博客称这使 trainer logits 在开关 SP 时位级相同。
契约由各运行时的 adapter 安装并监督:装 kernel 时核对声明的并行规模,未经验证的规模直接拒绝。vLLM 侧的 scheduler、KV cache 管理、CUDA graph 捕获都不受影响,推文与博客都明确写出了这一点。整套机制默认关闭:只有环境变量 SKYRL_ISOEXEC=1 才生效,关闭时行为与上游 SkyRL 完全一致。博客称该抽象已在稠密(MiMo-7B)、MLA MoE(GLM-4.7-Flash)、混合(Qwen3.5-9B)、混合 MoE(Qwen3.5-35B-A3B)四类模型上应用。
Gated DeltaNet 的第三条路:chunkwise-parallel recurrent
线性注意力架构是 mismatch 的重灾区:训练与 prefill 用 chunkwise-parallel 算法,decode 用循环式算法,数学等价但浮点舍入不同。博客给出的量级参照:比较 FLA 的 chunkwise-parallel kernel 与 vLLM 的 fused recurrent kernel,Gated DeltaNet 层输出的逐元素绝对差最大达 0.25。
TorchTitan 团队的做法是把前向全部改成 recurrent 形式、chunkwise 只用于反向,从而消除 mismatch,但代价是 rollout prefill 与训练前向在序列维度上串行化。博客引述其报告:数学类负载慢约 2–3 倍,terminal-agent 负载慢约 5 倍,难以用于完整训练。
IsoExec 的 chunkwise-parallel recurrent(CPR)保留 recurrence 作为主函数,但按 chunk 并行求值:训练与 prefill 先算每个 chunk 边界的循环状态,再用并行 recurrent scan 算 chunk 内部输出;decode 用循环形式,但每 chunk_size 个 token 重同步一次隐藏状态,让三种阶段的舍入节奏一致。博客给出的单层成本:训练前向+反向(1×10,240 tokens)从原生 5.177 ms 到 CPR 7.386 ms(1.43 倍);prefill(5×2,048)从 0.844 ms 到 1.412 ms(1.67 倍);decode(256 序列 × 1 token)从 0.0612 ms 到 0.0846 ms(1.38 倍)。对照极端方案:decode 全用 chunkwise 慢 36.6 倍,训练全用 recurrent 慢 4.42 倍。
误差降四个数量级,代价是全步开销 25.3%
实验在单节点 8×H100 上进行:Qwen3.5-35B-A3B、DAPO-Math-17k、同步 RL、50 步,与 SkyRL 原生栈(vLLM + Megatron,最高吞吐配置)对比。50 步内,rollout 对训练的 logprob 平均绝对差从 1.6e-2 降到 6.7e-7。
时间账同样来自博客:平均生成每步从 591.3 秒到 776.6 秒(+31.3%),策略训练从 498.6 秒到 591.3 秒(+18.6%),完整 RL 步从 1224.6 秒到 1534.0 秒(+25.3%),即推文所说的 full-step overhead。
博客没有回避一个边界:50 步太短,“我们没有观察到消除契约覆盖的训练-推理不一致带来有意义的 reward 提升”。
发布当天,Stoica 与 Eric Tang 先后表态
推文发出约一个半小时后,SkyRL 团队成员 Eric Tang(X 简介为 “building SkyRL @anyscalecompute”,也出现在博客致谢名单中)发称:“zero-kl RL working on qwen3.5-35B with just 23% overhead in SkyRL! really cool work from @JiangAlexander1”(zero-kl RL 在 SkyRL 中跑通 qwen3.5-35B,开销只有 23%,@JiangAlexander1 的作品真的很酷)。“zero-kl” 正对应 IsoExec 的效果:重要性比恒为 1,不再需要 KL 修正项。
在推文发出约两个半小时后转发了它。约三小时后,UC Berkeley 教授、Databricks、Anyscale、LMArena、Conviva 联合创始人 Ion Stoica(SkyRL 系列论文的作者之一)发称:“Ensuring numerical consistency between policy execution and optimization is key to RL. The IsoExec work resolves this challenge, enabling reproducibility at scale.”(确保策略执行与优化之间的数值一致性是 RL 的关键;IsoExec 解决了这一挑战,让规模化可复现成为可能。)
vLLM 推文致谢 @JiangAlexander1(Alexander Jiang)与 SkyRL 团队;博客致谢写明工作由 Alexander Jiang 与 SkyRL 团队完成。实现代码以 fork 形式放在 zanderjiang/SkyRL-IsoExec(Apache-2.0 许可,仓库创建于 8 月 19 日),支持 Qwen3 稠密、Megatron MoE、Qwen3.5 混合 GatedDeltaNet 三类模型;SkyRL 的 README 注明项目在 Berkeley Sky Computing Lab 完成、与 Anyscale 合作。
位级一致之后,reward 还没有变好
IsoExec 的边界在发布材料里写得很清楚:位级一致只覆盖契约声明并验证过的范围,而且目前只是手段。50 步内没有观察到 reward 提升,更长训练是否受益尚未验证;博客列出的下一步是 Blackwell 支持、context parallelism 不变性、稀疏注意力和 Block-FP8 MoE。
对依赖重要性比的 RL 训练来说,logprob 差从 1.6e-2 到 6.7e-7 意味着“rollout 与训练评估同一策略”在契约覆盖的范围内以逐位精度成立;reward 会不会因此变好,是这份发布留给下一轮实验的问题。
参考链接
- vLLM 官方推文:
- vLLM 博客《IsoExec: Unified Execution to Eliminate Trainer-Inference Mismatch in SkyRL》:
- SkyRL-IsoExec 代码仓库:
- Eric Tang 推文:
- Ion Stoica 推文:
- NovaSky 官方账号转发推文: