← 返回 2026-09-09

Miles v0.1:面向前沿模型的生产级强化学习后训练系统 Miles v0.1: Production-Level Post-Training

RadixArk, Tom Chen, Mao Cheng, Shi Dong, Kangrui Du, Yanbin Jiang, Jiajun Li, Yiming Li, Tao Lin, Yusheng Su, Andy Ye, Yueming Yuan, Zhichen Zeng 📅 2026-09-08 👍 54 2026-09-12 18:30
Agentic RL MoE训练 RL后训练系统 低精度训练 异步训练 权重同步

全栈 RL 后训练系统:token 级保真 rollout、全异步调度与三种权重同步传输

前置知识

GRPO(组相对策略优化)

一种无需价值网络的策略梯度算法:对同一 prompt 采样一组轨迹,用组内奖励的均值和方差把每条轨迹的奖励归一化为优势 $A_i=(r_i-\bar{r})/\mathrm{std}(r)$,再按策略梯度更新。由于优势是组内相对比较,同一 prompt 的多条轨迹必须一起生成、一起消费。

Miles 的调度、缓冲、丢弃和奖励计算都以「轨迹组」为基本单位,而不是单条轨迹;不理解 GRPO 的组相对结构,就无法理解其 rollout 架构和数据流设计。

MoE(混合专家模型)

Transformer 每层用可学习路由器给每个 token 打分,选出 top-$k$ 个专家 FFN 计算,其余专家闲置,从而总参数巨大而激活参数少(如 GLM-5.2 总参 744B、每 token 仅激活 40B)。路由选择依赖浮点数值,训练与推理引擎的 kernel 差异可能让同一 token 被路由到不同专家。

本文两大核心机制——R3 路由重放与低精度「共享契约」——都是为了解决 MoE 模型在 rollout 与训练两侧路由/数值不一致导致的训练失配问题。

KV cache 与前缀缓存

自回归推理把历史 token 的注意力 Key/Value 缓存下来避免重复计算;多轮对话中,下一轮若仍在持有该缓存的引擎上执行,只需 prefill 新增后缀,否则要重算整段历史。缓存绑定在具体引擎实例上,请求被路由到别处即失效。

Miles 用亲和性路由把同一多轮会话固定在同一引擎(乃至同一 DP rank),参考运行中前缀缓存命中率达 96%,这是 agentic rollout 吞吐的关键来源。

训练-推理失配与重要性采样比

on-policy RL 假设训练端与采样端对同一序列给出相同概率。但 SGLang 与 Megatron 使用不同 kernel、精度和批形状,同一权重算出的 $\log\pi$ 存在偏差,使重要性比率 $r=\exp(\log\pi_{\mathrm{train}}-\log\pi_{\mathrm{rollout}})$ 偏离 1,梯度实际面向一条「从未发生过的轨迹」。

这是贯穿全文的主线:TITO(token 精确保存)、R3(路由重放)、真 on-policy 对齐(位级一致)与 TIS/clip-or-pop 修分别针对这一失配的不同成因。

低精度数值格式与块缩放

FP8/FP4 等格式用更少比特做存储与矩阵乘法,GPU 张量核心速率大约随精度减半而翻倍。块缩放在低比特下维持动态范围:如 FP8 blockwise 用 128×128 块配 FP32 scale,MXFP8 每 32 个值共享 UE8M0 scale,NVFP4 在 FP32 张量级 scale 内嵌套每块 E4M3 scale。

Miles 的低精度配方要求 rollout 与训练两侧用同一种量化路径(共享契约),否则量化差异会逐层累积成灾难性的训练-推理失配,这是其效率主张的前提。

LoRA(低秩适配)

冻结基座模型权重,为选定模块学习一对低秩矩阵的乘积 $\Delta W=BA$ 作为加性修正,只训练极小部分参数。优化器状态从每参数 12 字节(FP32 master + 两个 Adam 动量)缩到仅适配器大小,权重同步也只需传输适配器。

Miles 把 LoRA 适配器作为训练循环的工作单元,是其在发布日训练 Kimi K3、2.4T 参数 Qwen3.8 等超大规模 MoE 的唯一可行方式。

研究动机

前沿规模的后训练早已不是「生成一批短补全、再更新一次」的简单循环:rollout 变成多轮、调用工具、与外部环境交互的 agentic 轨迹,被训练的模型常是万亿参数级 MoE(如 Kimi K2 1T-A32B)。这带来两类系统性难题。其一是效率:同步「轮流」调度下,训练器必须等批次里最慢的轨迹返回,引擎又要等优化器算完,长上下文和工具调用任务的大量 GPU 时间耗在空闲气泡里;权重同步本身也是瓶颈——对 Kimi K2 做一次完整 NCCL 广播接近一分钟。其二是保真:训练端对轨迹的视角会与策略实际采样的内容静默分叉——多轮消息经过解析、工具执行、聊天模板重渲染会改变 tokenization;MoE 模型中训练与推理 kernel 的微小数值差异会让同一 token 在每层路由到不同专家;不同精度格式进一步放大分歧。这些错误不抛出异常,只悄悄腐蚀梯度;据 Ma et al. 的报告,MoE 路由不一致会剧烈破坏 RL 稳定性,甚至导致灾难性训练崩溃。

本文的目标是本文要构建一个全栈、生产可用的前沿后训练系统 Miles v0.1(基于 slime 的干净设计),以「组件可验证、干净、可定制」为单一原则,把准确性、效率、可靠性、可扩展性作为一等目标。具体目标包括:(1) 用 TITO session server 精确保存多轮轨迹的 token ID、logprob 与路由专家;(2) 用 R3 重放 MoE 专家路由;(3) 提供全异步调度和有界数据缓冲消除气泡并管理过期数据;(4) 提供 NCCL 广播、P2P RDMA、disk-delta 三种权重同步传输适配不同部署拓扑;(5) 建立 BF16/FP8/MXFP8/NVFP4 的端到端低精度契约;(6) 支持 Megatron-LM 与 FSDP 双训练后端;并把同一架构延伸到 LoRA RL、on-policy 蒸馏、真 on-policy 对齐、SFT 和扩散模型,最后用 64 块 GB300 训练 GLM-5.2 744B 的端到端案例验证整个栈。

与已有工作不同的是,现有开源 RL 框架多以算法为中心,把训练-推理数值失配当作可以用重要性采样截断等修正项「兜底」的次要问题。Miles 的独特切入是把数值保真提升为系统的一等设计约束,并逐层机制化:tokenization 交给服务端而非 agent harness 控制(TITO);专家路由当作数据重放而非重算(R3);精度格式由 rollout 与训练共享的位级一致量化器强制统一(四阶段契约);甚至通过逐操作 kernel 对齐实现两侧 $\log\pi$ 严格为零(真 on-policy 对齐)。每个机制都可验证:模型家族注册需过 CPU append-only 检查与 GPU 实测双重验证,权重传输后做逐张量位级校验,扩散配方按证据分级标注。另一个独特设计是用「三层嵌套插件」而非统一接口来兼容能力差异巨大的 agentic 环境框架。

核心方法

直觉上,RL 后训练是一条流水线:引擎产轨迹、训练器算梯度、新权重送回引擎。Miles 把三个环节解耦并各自做深。Rollout 侧基于 SGLang 引擎加路由器:带稳定路由键的亲和性路由把同一会话的所有请求固定到持有其 KV 前缀的引擎(或 DP rank),新会话按最少负载选引擎;中间是有界数据缓冲区,解耦两侧速率并统一做丢弃决策。训练侧支持 Megatron-LM/FSDP 双后端、五种优势估计器(GRPO、GSPO、两种 REINFORCE++、带价值网络的 PPO)和类型化损失接口(policy/value/supervised + 用户钩子)。权重同步提供三种传输:NCCL 广播(默认)、P2P RDMA 直写、仅需共享文件系统的 disk-delta 增量。调度上默认同步,可切换全异步模式(独立 GPU 池、sample 粒度补充生成槽位),两者共享全部组件。同一架构经小接口组合延伸到 LoRA RL、on-policy 蒸馏、真 on-policy 对齐、SFT 与扩散模型(Miles-Diffusion),所有扩展点通过 import 路径替换,无需 fork 系统。

核心创新是把「训练器看到的必须就是策略实际采样的」确立为系统不变式,并在每一层给出机制化保证,而不是事后用修正项吸收误差。(1) TITO session server 由服务端而非 harness 控制 tokenization:每轮完成即检查点化 prompt token ID、输出 token、logprob 与路由专家,后续轮复用最深可用检查点、只 tokenize 新增后缀,最终把多轮轨迹拼成一条连续训练序列并 loss-mask 非模型生成的 token。(2) R3 把每个 token 的专家分配视为数据的一部分,训练前向时重放 rollout 时的确切路由。(3) 低精度「共享契约」强制四个阶段(checkpoint 转换、训练前向、SGLang rollout、权重导出)使用同一个位级一致的量化器。(4) 真 on-policy 对齐进一步用 FlashAttention-3、batch-invariant GEMM、确定性配置与 prefill 重打分,使两侧逐 token $\log\pi$ 差异恰为零。与已有工作的本质区别:先消除失配的结构性成因,再用 TIS(截断重要性采样)或 clip-or-pop 处理无法消除的数值残余。

方法步骤详情

一次 Miles RL 迭代的完整流程:(1) Rollout——agent harness(如 Claude Code)向 TITO session server 发消息;server 按启动时显式注册的模型家族(Qwen3/GLM/Nemotron/Kimi/MiniMax/DeepSeek/Inkling)的聊天模板渲染 token ID,经带路由键的亲和性路由发往持有 KV 前缀的 SGLang 引擎;每轮完成后 checkpoint 化 token ID、logprob 与路由专家;会话扩展支持 linear(仅允许延伸尾部,产一条训练序列)与 branching(append-only 树,支持 Claude Code 式分叉/压缩,每个叶节点一条轨迹)两种规则;环境经三层插件之一接入(agent 层:Harbor/NeMo Gym/OpenEnv;generate 层:HUD/Strands/τ-bench;rollout 层:Prime Intellect Verifiers),沙箱由 Daytona/E2B/Modal 等提供。(2) 缓冲——完成的轨迹组进入容量为训练 batch 倍数的有界缓冲区,到达时检查超时与过滤器,被收集时检查 staleness(当前权重版本减组内最老权重版本)。(3) 训练——按 sample 粒度取批,GRPO 在组内归一化优势;若启用 R3 则重放路由专家;TIS 把重要性比截断到 $[0,2]$;Megatron 端以 TP×PP×CP×EP×DP 划分模型,优化器状态可流式落盘(FP32 master + 两动量共 12 字节/参数)。(4) 权重更新——Megatron 将权重 all-gather、转为 HF 布局、装满默认 512MB 的桶后 flush,经广播/P2P/disk-delta 到达引擎;在飞请求默认 retract(回滚后对新权重重放)。(5) 评估——每若干步可在共享引擎/专用舰队/外部服务三种模式下异步评估,评分严格归档到其测量的权重版本并校验版本一致性。

技术新颖性

技术新颖性体现在机制组合与工程深度,而非单一新算法。(1) TITO 配套「消息比较策略」:从严格到宽松三档匹配器处理 harness 不逐字重放消息的现实(如重序列化工具参数、省略 reasoning),严格档只比较模板真正读取的字段,并诚实分析最松档会静默合并不同历史的危险;新模型注册需过 CPU append-only 检查与 GPU 实测双重验证。(2) R3 把路由张量(每轨迹 $(\text{tokens}-1)\times\text{layers}\times k$ 个 32 位整数,32K token×60 层×$k{=}8$ 约 60MB)当作数据搬运而非重算,并明确其边界:密集模型无效、全异步下收益有限、GLM-5.2 参考运行未开启。(3) NVFP4 配方包括 four-over-six 块量化(在 4/6 两个候选幅度中取误差小者,且同步用于训练端 Transformer Engine 与推理端 FlashInfer kernel)和反传去量化选项。(4) P2P 权重传输用 CPU 常驻模型副本调用 SGLang 自己的权重装载函数,免去重实现分片规则;单一 pinned RDMA 缓冲区使主机内存随引擎数恒定。(5) disk-delta 提供 XOR(更紧凑但必须恰应用一次)与 Overwrite(幂等)两种增量编码加逐张量校验和。(6) 证据分级(fully/proxy gated、verified、not verified)与 CI 指标历史门禁把「支持」变成可审计声明。

The Miles RL loop.
Figure 1: The Miles RL loop.
The three evaluation modes on the training timeline.
Figure 2: The three evaluation modes on the training timeline.
Token-in, token-out.
Figure 3: Token-in, token-out.
On-policy distillation.
Figure 4: On-policy distillation.

实验结果

核心案例(100 步 GLM-5.2 744B-A40B 全异步 agentic RL,terminal-bench-2 任务,64 块 GB300 对半分 32 rollout/32 训练):中位训练步时 263 秒(取前 30 个测量步;step 0 预热 1042 秒被裁剪);亲和性路由使前缀缓存命中率稳定在 96%;在飞轨迹上限 128,因等待工具调用的轨迹不生成,实际同时生成约 90–100 个请求;训练-推理 logprob 散度 100 步均值 0.0369 且首尾基本持平,由 TIS 在更新中修正;原始任务奖励的 9 步滑动平均从 0.438 升至 0.556——作者明确声明这是单次运行观察而非显著性结论。权重同步上 P2P 对 NCCL 广播:Qwen3-30B-A3B(2 节点/侧)2.67→2.16 秒(−19.1%);GLM-5 744B(16 节点/侧)58.30→8.48 秒(−85.5%);Kimi K2 1T-A32B(32 节点/侧)53.28→7.23 秒(−86.4%,含约 884ms 的 GPU 重量化),且优势随舰队宽度而非模型大小增长,单节点上 P2P 反而最多慢 70%。优化器状态流式把 Qwen3-30B-A3B 的 actor 卸载从 24s 降到 5.2s、重载从 8.9s 降到 1.3s。On-policy 蒸馏在 Qwen3.5-35B-A3B 上仅 5 步就把 DAPO 持留集响应长度从 14,070 压到 6,132 token(−56%),精度 84.0%→85.2% 的变化落在约 1.6 点的评估标准误内,只能声称「长度减半而精度无可靠变化」。真 on-policy 对齐在 Qwen3-4B-Base 的 DAPO 上实现逐 token logprob 差异恰为 0,奖励曲线与基线一致但 rollout 变慢。Miles-Diffusion 的原始字节流反序列化把 LTX-2.3 的 rollout 从 157.4s 降到 87.6s、总步时从 321.9s 降到 252.1s。

The three reasons the buffer drops a finished group.
Table 1: The three reasons the buffer drops a finished group.
Buffer metrics reported on every training step.
Table 2: Buffer metrics reported on every training step.
The three evaluation modes under fully asynchronous rollout.
Table 3: The three evaluation modes under fully asynchronous rollout.
Three nested rollout plug-in layers.
Table 4: Three nested rollout plug-in layers.
Low-precision formats with an end-to-end Miles recipe, against the BF16 baseline.
Table 5: Low-precision formats with an end-to-end Miles recipe, against the BF16 baseline.
The two training backends.
Table 6: The two training backends.
The three weight-synchronization transports.
Table 7: The three weight-synchronization transports.
Time per weight update, P2P against NCCL broadcast, on H100 clusters.
Table 8: Time per weight update, P2P against NCCL broadcast, on H100 clusters.
Configuration of the GLM-5.2 agentic RL reference run.
Table 9: Configuration of the GLM-5.2 agentic RL reference run.
Metrics from the GLM-5.2 agentic RL reference run.
Figure 5: Metrics from the GLM-5.2 agentic RL reference run.
查看结构化数据
任务指标本文基线提升
Kimi K2 1T-A32B 权重同步(32 节点/侧 H100) 每次权重更新耗时 7.23 s(P2P,含约 884ms 重量化) 53.28 s(NCCL 广播) −86.4%
GLM-5 744B-A40B 权重同步(16 节点/侧 H100) 每次权重更新耗时 8.48 s(P2P) 58.30 s(NCCL 广播) −85.5%
Qwen3-30B-A3B 权重同步(2 节点/侧 H100) 每次权重更新耗时 2.16 s(P2P) 2.67 s(NCCL 广播) −19.1%
GLM-5.2 744B agentic RL 参考运行(64×GB300,100 步) 中位训练步时 / 前缀缓存命中率 / train-inference 散度 263 s / 96% / 均值 0.0369,奖励 0.438→0.556(9 步滑动平均) 无外部基线(自身单次运行) 观察性结果,无对照
Qwen3.5-35B-A3B on-policy 蒸馏(DAPO 持留集,5 步) 平均响应长度 / 精度 6,132 tokens / 85.2% 14,070 tokens / 84.0% 长度 −56%,精度变化(+1.2 点)在 ~1.6 点标准误内不显著
Qwen3-4B-Base 真 on-policy 对齐(DAPO) 两侧 logprob 逐 token 绝对差 恰为 0(位级一致) 非零数值偏差(未修正的 kernel/精度差异) 完全消除,代价是 rollout 变慢、奖励曲线与基线持平
LTX-2.3 扩散模型 RL(字节流反序列化优化) 每步 rollout 耗时 / 总步时 87.6 s / 252.1 s 157.4 s / 321.9 s rollout −44%,总步时 −21.7%
Qwen3-30B-A3B 优化器状态流式落盘 actor 卸载/重载耗时 卸载 5.2 s / 重载 1.3 s 卸载 24 s / 重载 8.9 s 卸载 −78%,重载 −85%

局限与改进

作者承认的局限:MXFP8 与 NVFP4 仍为 Beta,仅在少数模型上测试(NVFP4 目前只有 Qwen3-30B-A3B),且同样的量化在不同模型上行为可能不同;P2P 权重传输依赖 Megatron↔SGLang 统一权重名映射,只覆盖 Qwen2/Qwen3 dense、Qwen3-MoE、GLM4-MoE、DeepSeek-V3/V3.2 系,P2P 与 disk-delta 均不携带 LoRA 适配器,disk-delta 还拒绝 colocated、LoRA、预填充-解码分离组合;TITO 尚不支持图像/视频输入,VLM 只能直驱引擎底层接口;GLM-5.2 奖励提升、OPD 长度下降、真 on-policy 对齐等关键测量均来自单一配置/单次运行,只能算观察;day-0 支持的 Kimi K3 与 Qwen3.8 的 LoRA 配方仍在 open PR 而非 main;「支持」在不同 checkpoint 上含义不一(全规模验证、缩层 CI 切片、仅单元测试)。我的补充观察:(1) 全文没有任何与 veRL/OpenRLHF/slime 等同类系统的横向吞吐或 MFU 对比,所有数字都是自身前后对照或绝对值;(2) 奖励 0.438→0.556 无多种子、无置信区间,说服力有限;(3) R3 每轨迹约 60MB 的路由张量在超长 agentic 序列下的实际内存/带宽代价未给出实测;(4) 263 秒中位步时缺少同步调度或其它框架的对照,无法判断全异步带来的收益幅度;(5) 真实 on-policy 对齐只覆盖 Qwen3 0.6B/4B dense,恰好说明位级一致在最需要它的大 MoE 上尚不可得。

独立分析的弱点

(1) 数值保真的覆盖断层:真 on-policy 对齐仅支持 Qwen3 0.6B/4B dense,前沿大 MoE 只能退回 TIS 修正加可选 R3,而最关键的 GLM-5.2 参考运行甚至未开 R3——说明恰恰在最需要保真的场景,系统仍在用统计修正兜底;改进方向是把 batch-invariant kernel 与确定性配置扩展到 MoE/大模型,并量化其吞吐代价曲线供用户权衡。(2) staleness 的悲观定义(组内最老 token 决定整组年龄)在轨迹时长差异巨大(可达一个数量级)时会丢弃大量仍含可用梯度的数据;可探索 token 级过期加权或对过期组做部分重采样而非整组丢弃。(3) 异步评估三种模式各有硬伤:共享引擎暂停生成、快照导出是阻塞训练器的集体操作、外部服务只看 checkpoint 目录;可研究增量式导出或专用参数服务器解除阻塞。(4) P2P 在单节点反而慢至多 70% 且模型家族覆盖窄,disk-delta 排除 colocated/LoRA/预填充-解码分离——传输层可统一为一个自适应选择器并在更多架构上补齐映射。(5) 流式优化器状态强制同布局恢复、拒绝恢复非流式 checkpoint、同步复制拖慢保存,可用异步快照加布局转换层缓解。(6) 证据文化虽好,但核心 RL 结果(奖励曲线)本身未纳入多种子与显著性检验,与 diffusion 侧的逐 bit 门禁标准不对齐。

未来方向

作者提出的方向:把 TITO 扩展到图像/视频输入,使 VLM 连接器能上移到 agent 函数层;将 session server、操作驱动的 LoRA 后端、Tinker 兼容前端从 open PR 转正;扩展 P2P 与 disk-delta 的模型映射覆盖;把 MXFP8/NVFP4 从 Beta 推向成熟并覆盖更多模型家族;为更多架构建立 true-on-policy profile。基于本文成果可自然延伸的研究:(1) 在全异步框架下系统刻画 staleness-学习效率的帕累托前沿,自适应调节缓冲区容量、替换粒度与权重更新频率;(2) 把 R3 路由重放与 MoE 专家负载均衡/容量因子联合优化,研究路由重放对专家利用率的长期影响;(3) 探索 NVFP4 端到端全异步 RL 中量化噪声与 off-policy 程度的交互效应;(4) 把 diffusion 侧「逐 bit 对比 committed standard」的确定性测试基建移植回语言模型 CI,作为数值回归的统一门禁;(5) 建立跨 AMD/NVIDIA 的精度-硬件-模型三约束自动求解器,给定集群自动输出合法运行配置;(6) 用三种评估模式的时间线做评估资源调度的形式化分析(何时共享、何时专用);(7) 与同类系统(veRL、OpenRLHF)做受控横向基准,补上本文缺失的对比维度。

复现评估

复现条件总体较好但硬件门槛分层明显。开源情况:代码在 github.com/radixark/miles,文档站 miles.radixark.com 为 fully-async、agentic-rollout、LoRA、OPD、true-on-policy、P2P 等特性提供专题页;GLM-5.2 参考运行的启动脚本位于仓库 examples/experimental/openenv/glm52_tbench2,配置完整公开(TP2/PP4/CP4/EP8、65,536 token 会话、batch 64 轨迹等)。数据与模型:terminal-bench-2 任务、Qwen3/GLM/DeepSeek 等均为公开权重与任务集,但沙箱依赖 Daytona/E2B/Modal 等外部服务(terminal-bench 配方每 episode 建一个沙箱再销毁)。算力:案例研究需要 64 块 GB300(16 节点),Kimi K2 权重同步测量需要 32 节点/侧的 H100——普通实验室无法验证;Qwen3-4B/30B-A3B 规模可在 Hopper 或 AMD MI350 上复现,且 CI 对每个 PR 在 MI350 与 NVIDIA runner 上都跑端到端训练测试。风险点:结果多为单次运行;day-0 的 Kimi K3/Qwen3.8 配方、多 LoRA、MiniMax H3 扩散配方仍在 open PR;部分结论(如 OPD)依赖「教师 = 同模型 5 步 RL」这类特定设定。综合评级:中小规模机制(TITO、OPD、真 on-policy 于 Qwen3-4B、低精度契约)复现难度中等、可信度高;前沿规模数字(263s 步时、96% 缓存命中、P2P 大模型加速)基本只能由拥有大集群的团队验证。