- 8月18日,RadixArk 发布 Miles v0.1,一个面向 LLM 和多模态模型后训练的开源强化学习框架,fork 自 slime,采用 Apache-2.0 许可证。
- 架构上由 SGLang 负责 rollout、Megatron-LM(可选 PyTorch FSDP2)负责训练,支持全异步 RL:rollout 与训练互不阻塞。
- 官方参考运行:64 张 NVIDIA GB300(32 张训练 + 32 张 rollout)对 744B 参数的 GLM-5.2 做终端任务 agentic RL,训练步长约 4.5 分钟,rollout 权重平均滞后 1.7 步,前缀缓存命中率 96%。
- 正确性机制:Token-In-Token-Out(TITO)保证训练侧看到的 token 与 rollout 实际生成的完全一致;Rollout Routing Replay(R3)消除 MoE 模型训练与推理之间的路由不一致。
- 权重同步:P2P RDMA 路径把 1T 参数模型(Kimi-K2)的单次权重更新从 53.3 秒压到 7.2 秒;disk-delta 路径把 GLM-4.7-Flash 的单次更新负载从 62.4 GB 降到 0.69-0.83 GB(均为官方口径)。
- 据发布信息,项目历时 9 个月,有 72 位贡献者、1,326 次提交和 85 项 GPU 端到端 CI 测试;GitHub 仓库目前已有 2,100+ star。
Miles 是什么:一条从 prompt 到新权重的 RL 流水线
Miles 是一个大规模模型后训练的 RL 框架。给它一个模型、一批带奖励信号的任务和一堆 GPU,它输出一个经过强化学习更新的模型。官方把精度、效率、可靠性和可扩展性列为这个框架的一等目标,定位是"production-ready"。
一个 Miles 训练任务是一个三段循环。第一段是 rollout:SGLang 引擎基于当前策略生成轨迹,agentic 任务中每个多轮会话都在独立沙箱环境里执行动作并拿到奖励。第二段是训练:Megatron-LM 或 FSDP2 训练器消费完成的轨迹组,计算 RL 损失并更新策略。第三段是权重回传:新权重以最小中断同步回 rollout 集群,循环继续。
这个结构与 veRL、OpenRLHF 等框架处在同一赛道。Miles 的差异点在于,它围绕大规模 agentic RL 的三个工程痛点做了专门设计:长尾拖慢、数值不一致和权重同步开销。
核心设计之一:全异步调度,不等最慢的那条轨迹
agentic RL 的轨迹长度差异极大,训练时间往往由少数"长尾"轨迹决定。同步调度下,训练器要等批次里最慢的轨迹返回才能开工,rollout 引擎也要等优化器更新完才能继续生成,两边互相空等。
Miles 的全异步 RL 把调度粒度降到单个样本:一条轨迹完成就立即释放一个生成槽位,完成的轨迹组进入一个有界数据缓冲区,rollout 吞吐和训练节奏由此解耦。这个缓冲区同时是策略边界,用户可以自定义保留、重试或丢弃哪些样本。评估也是异步的,提供共享引擎、独立 GPU 集群和外部评估器三种模式,评估延迟会被如实报告而不是错记到当前 checkpoint 上。
官方参考运行给出了这套机制的量产级数据:64 张 GB300 上训练 GLM-5.2(744B 总参数、40B 激活),100 步终端编码任务 rollout 稳定完成,rollout 与训练几乎完全重叠,rollout 侧维持 96% 的前缀缓存命中率。这组数字是官方口径,尚无第三方复测。
核心设计之二:TITO 与 R3,消除训推之间的数值不一致
RL 训练有个隐蔽的坑:rollout 引擎实际生成的内容,和训练器以为自己看到的内容,可能不一样。多轮 agentic 场景中,消息解析、工具执行和 chat template 渲染都可能改变 token 化结果。MoE 模型还有另一个坑:rollout 和训练之间一个 top-k 专家路由的翻转,就会让梯度流向不同的专家权重。
Miles 用两个机制分别处理。TITO 的会话服务器保留模型生成的原始 token ID,新一轮只对追加的消息做 token 化并拼接到已有前缀上,轨迹由此组装成连续的训练样本,不做"反 token 化再重新 token 化"的往返。R3 则在 rollout 时记录 SGLang 的专家路由结果,训练前向时直接重放。官方称在支持的配置下,训练与 rollout 的 log-probability 差异可以严格为零(Zero-KL Alignment,目前仅支持 Qwen3 系列)。
效率侧还有两项值得知道的设计。Blackwell 原生的 MXFP8 和 NVFP4 端到端 recipe 把量化做成跨栈的"精度合同",官方称奖励曲线贴合 BF16 基线且 rollout 更快。权重更新提供两条路径:P2P RDMA 直接写目标引擎显存,1T 模型的更新从 53.3 秒降到 7.2 秒;无 RDMA 连通时用 disk-delta,BF16 rollout 通常只需传约 2% 的参数。
适用场景与效果边界
Miles 最适合三类场景:大规模 MoE 模型的 RL 后训练(万亿参数级是它的设计靶心);agentic 任务训练,内置 Harbor、NeMo Gym、OpenEnv、Verifiers 等环境连接器,沙箱可跑在 AgentENV、Daytona、E2B 或 Modal 上;以及低成本的适配器路线,LoRA RL 下 GLM-5.2 的可训练参数只有 212 MB,约为 BF16 基座权重的 0.014%。它也覆盖了 RL 之外的后训练:SFT、on-policy distillation(OPD),以及通过 Miles-diffusion 支持扩散模型的 Flow-GRPO 和 DiffusionNFT。
边界同样要写清楚。Zero-KL Alignment 目前只支持 Qwen3 系列;multi-LoRA 后端仍是实验性质;FSDP2 后端只有数据并行,官方 recipe、并行切分和最大的模型都在 Megatron-LM 一侧。v0.1 是首个版本号意义上的发布,上述性能数字全部来自官方博客,截至 8月19日尚无第三方独立复测,社区也还没有形成大规模的使用反馈。选型时建议先在小模型上验证自己的 workload,再放大规模。
快速上手:8 卡跑通第一个 GRPO 任务
官方 Quick Start 的前置条件是一台 8 卡节点(H100 / H200 / B 系列)、至少 500 GB 空闲磁盘和带 GPU 访问的 Docker。整个流程在一小时内可以跑通,目标是启动一个 Qwen3-4B 的 GRPO 训练并看到奖励上升。
先拉取并进入官方容器:
然后下载模型与数据(17k 数学题为训练集,AIME-2024 为评估集),并把 HuggingFace 权重转换为 Megatron 的分片格式:
最后一条命令启动训练:
成功的标志是日志中 rollout/raw_reward 稳步上升。这个 recipe 默认启用 --colocate,4 个 SGLang 引擎和训练器共享 8 张卡交替工作;每 20 个 rollout 存一次 checkpoint 并在 AIME-2024 上评估一次。任务中断后用同一条命令重启即可从最近的 checkpoint 恢复。换其他模型不用换流程,官方文档为 GLM-5.2、DeepSeek-V4、Kimi K2.6、Qwen3.8 等模型提供了各自的 recipe。 在 RL 框架生态中的位置
Miles 背后是 RadixArk,也就是推理引擎 SGLang 的开发团队。项目 fork 自 slime 并与其共同演进,9 个月内积累了 72 位贡献者和 1,326 次提交。它最独特的资产是和 SGLang 的同源关系:Kimi-K3、DeepSeek-V4、Qwen3.8、Nemotron 3 Ultra 等模型在权重发布当天就能在 Miles 里训练,因为 SGLang 的推理路径和 Miles 的 RL recipe 是并行适配的,而不是先后排队。
对正在选型的团队,可以按五步推进:先在 8 卡节点上用官方 Qwen3-4B recipe 跑通流程;确认自己的环境能通过 Harbor 或 OpenEnv 连接器接入;MoE 模型务必开启 R3,多轮 agentic 任务确认走 TITO;规模上到多机后再评估 P2P 与 disk-delta 两条权重同步路径;低精度 recipe 先对照 BF16 基线验证奖励曲线再全量启用。