基于 SGLang 的全栈生产级后训练系统 Miles v0.1 发布,涵盖数据工程、分布式训练、RLHF 等完整流程,可用于构建和微调前沿模型。
Fast Agentic Rollout by SGLang
Token-In-Token-Out (TITO)
Efficient Rollout Routing Replay (R3)
Low-precision Training
Memory Efficiency & Disk Offload
Two Training Backends
Verified Day-0 Model Support
Other Post-Training Recipes
On-Policy Distillation (OPD)
Code Quality Principle
Multi-Hardware Support
Example: Training GLM-5.2 on Terminal-Use Tasks with 64 NVIDIA GB300 GPUs
我们推出 Miles v0.1,这是一个面向前沿后训练的全栈生产级系统,也是我们首个 Miles 版本的继任者 [1]。在 slime [16] 简洁设计的基础上,Miles 围绕一个简单原则优化 RL 训练循环的每个阶段:处处可验证、简洁且可定制。Miles 以准确性、效率、可靠性和可扩展性为首要目标,旨在让前沿规模的 RL 对研究者和开发者都触手可及。在本博客文章中,我们将全程介绍 Miles。
Miles 中的 RL 训练任务是以下阶段的循环:
Rollout — SGLang 引擎生成轨迹。在 AI 智能体 RL 中,每个多轮次 rollout 会话与各自隔离的环境交互,环境执行动作并产生奖励。
Training — 完成的轨迹组由训练器(NVIDIA Megatron-LM 或 FSDP)消费,计算 RL 损失并更新策略。
Weight update — 新权重以最小化中断的方式同步回 rollout 集群,不影响正在进行的 rollout。
接下来,我们将逐一介绍循环中的每个环节,以突出说明 Miles 如何实现准确性、效率、可靠性和可扩展性。

图 1. Miles 全异步 RL 循环。
Miles 中的每次 rollout 都由 SGLang 生成。基于 SGLang 原生的推理效率,Miles 释放了完整的 AI 智能体训练工作流程:多轮会话、工具执行、沙盒环境以及 token 级忠实的轨迹捕获。
Miles 通过原生集成 SGLang [15] 提供快速 AI 智能体 rollout,该集成针对长序列多轮生成进行了优化。AI 智能体轨迹的长度差异很大,每轮新对话会复用大部分先前的上下文。默认情况下,Miles 使用 SGLang 路由器,将同一会话的所有轮次保留在同一 SGLang 引擎和 DP rank 上(如果启用了 DP attention),以复用缓存的前缀,同时将新会话分配给负载最低的 rank,从而避免少数长轨迹使部分集群过载。SGLang 路由器还会提前为长会话预留 KV-cache 容量。这些特性确保了均衡且稳定的 rollout 并发,使 AI 智能体训练中的缓存命中率保持高位。
对于长上下文、工具使用和 AI 智能体工作负载,rollout 时间主要由少数拖尾样本决定。同步调度会加剧拖尾问题,因为训练器必须空闲等待,直到批次中最慢的轨迹返回,同时 rollout 引擎必须等待优化器完成模型更新。Miles 的全异步 RL 通过允许 rollout 引擎持续生成来消除这种相互阻塞:rollout 生成在训练器消费已完成的组并更新模型时持续飞行。双方互不阻塞。

图 2. 全异步 RL 如何处理长尾。不同颜色表示不同的权重版本;绿色片段代表工具调用时间。
调度以样本粒度运行:每个完成的轨迹立即释放一个槽位,尽管轨迹长度差异很大,仍能保持生成并发的稳定。已完成的组进入有界数据缓冲区,将 rollout 吞吐量与训练节奏解耦。该缓冲区还形成了一个可定制的策略边界,用户可以在不修改调度或执行的情况下决定保留、重试、丢弃哪些样本,或将哪些样本标记为过期而拒绝。
为使评估异步化,Miles 提供了三种评估模式,以模型权重的来源区分。
共享引擎评估 使用 rollout 集群并临时暂停新提交,适用于小型调试集,无需额外 GPU。
专用评估 使用从检查点快照加载的独立 GPU 集群,允许训练和 rollout 不间断继续进行。
外部评估 将检查点目录传递给任何用户提供的评估器,包括非 SGLang 服务。
这三种模式都将结果与产生它们的检查点和训练步次关联。如果评估在几步之后才完成,Miles 会报告该延迟,而不是错误地将结果归因;评估失败会跳过该评估点,而不是终止训练。

图 3. 评估模式:共享 rollout 引擎会阻塞生成,而检查点快照则将评估交给专用集群或外部服务,无需停止训练。
在 AI 智能体 RL 中,大部分工作发生在隔离的环境中。例如,训练一个编码 AI 智能体意味着为每个任务给模型提供自己的沙盒:它运行命令、编辑文件、读取返回结果,最后由测试套件决定任务是否解决。环境持有该状态、执行动作并运行产生奖励的验证器。Miles 同时运行许多这样的 episode,以训练器可以学习的形式记录每条轨迹,并将验证器的结果作为奖励传递。
环境通过插拔点接入 Miles。Miles 在 rollout 堆栈的不同层级提供了多个插拔点,因此环境可以根据需要接管或多或少部分的 rollout。我们为现有生态系统提供了集成,包括 Harbor、HUD、NeMo Gym、OpenEnv 和 Prime Intellect 验证器。你也可以引入自己的环境,通过相同的接入点插入。
沙盒可以在你选择的任何后端上运行。我们支持多种后端,包括 AgentENV、Daytona、E2B 和 Modal。每个 episode 都会从该任务自己的镜像中获取一个全新的沙盒,因此 episode 之间不共享任何内容,运行后也不会保留任何残留状态。
Miles v0.1 提供了针对 AI 智能体编码和终端任务维护的端到端配方。它们在真实硬件上经过验证,可以直接启动使用。
在多轮 AI 智能体 RL 中,模型输出在进入下一轮之前会经过消息解析、工具执行和聊天模板渲染。这个过程可能改变 tokenization、裁剪历史推理或重新序列化工具调用,导致训练器看到的 token 上下文与 rollout 期间实际使用的不同。
Miles 中的 TITO 会话服务器 [6] 保留模型生成的精确 token ID。在每个新轮次中,它只 tokenize 新追加的消息,并与现有前缀合并。这允许将完整轨迹组装成一个连续的训练样本,保留原始 rollout 的对数概率,同时对非模型生成的 token 进行损失掩码。对于每个模型家族,TITO 通过 CPU 往返测试和真实 SGLang GPU 会话进行验证,保障了 R3、OPD 和 zero-KL 对齐所需的 token 级精确性。
基于 TITO,Miles 正在为黑盒 AI 智能体 harness 开发训练配方,例如 Claude Code 和 Codex。这些 harness 在运行时生成子智能体并压缩上下文,因此每个任务的轨迹数量是动态的且预先未知的。Miles 因此通过会话服务器记录完整轨迹树,在训练侧应用变长批大小所需的损失归一化,保持梯度尺度一致。

图 4. Token 进,Token 出。会话服务器保留引擎产生的精确 token id,因此即使 harness 是不透明的黑盒,训练器也能看到模型实际生成的 token。
MoE RL 对 rollout 和训练之间微小的数值差异非常敏感:单个 top-k 路由翻转会改变 token 计算和接收梯度的专家权重。为解决这一问题,Miles 的 Rollout Routing Replay (R3) 在 rollout 期间记录 SGLang 的专家路由结果,并在训练期间回放它们。这种回放在 SGLang 中高效处理,与普通路由相比仅增加最小开销。
Trainer 是 RL 的支柱。在 Miles 中,我们提供了大量训练器优化,使 RL 稳定、快速且资源高效。
Miles 支持 NVFP4、MXFP8、FP8 的 rollout,以及 NVFP4、MXFP8、FP8 的端到端训练配方,并对大多数模型支持 INT4 量化感知训练(QAT)[3]。此前的文章深入介绍了 FP8 [2] 和 INT4 QAT [3] 的配方。
要在 RL 中捕捉 Blackwell 的低精度吞吐量,仅交换 GEMM 数据类型是不够的:rollout 侧和训练侧的量化必须一致,否则这种不匹配会在权重更新过程中累积,导致策略发散。为此,我们构建了 Blackwell 原生的 MXFP8 和 NVFP8 配方 [9],作为整个技术栈的端到端精度契约:MXFP8 以硬件块级缩放运行 rollout、前向传播和双梯度 GEMM;NVFP4 以 per-token 方式量化 MoE 专家权重,并使用在线激活缩放以避免批次相关的量化伪影;逐位精度的量化器契约确保训练和 rollout 内核看到相同的量化值,并配有细粒度标志以将敏感层保持在 BF16。配方通过 SGLang 和 Megatron-LM 之间的低 KL 散度进行了验证。所有低精度配置在保持 reward 曲线紧密跟踪 BF16 基线的同时,减少了 rollout 时间。
内存效率与磁盘卸载
在 16 个节点上异步训练 744B 参数模型带来了严重的内存问题。Miles 配备了复杂内存优化,大规模运行依赖于此,首先从优化器开始:优化器状态可以卸载到 CPU 或节点本地的 NVMe,并在每个优化器步骤中按 bucket 流式传回,因此它们无需同时驻留在 GPU 上。在本文结尾演示的示例中,正是这种 NVMe 优化器状态流式传输使 GLM-5.2 优化器能够与 32 个 GB300 GPU 上的训练引擎共存。除了卸载,Miles 还启用了一系列其他 GPU 和 CPU 内存占用减少,在示例 GLM-5.2 运行中每个 GPU 节省 30+ GB HBM 内存,当训练器与 rollout 引擎共置时,每个节点可节省数百 GB 的 CPU 内存。
两个训练后端
Miles 在一个接口背后支持两个训练后端:NVIDIA Megatron-LM 和 PyTorch FSDP。单个启动标志选择其中哪个在 GPU 上拥有模型;后端实现五个方法,其上所有内容保持不变。
Megatron-LM 是默认后端,也是模型配方的编写目标。它在内部通过张量并行、流水线并行、上下文并行、专家并行和专家张量并行来分割模型,并支持 CPU 和 NVMe 优化器卸载、按 bucket 的优化器状态流式传输,以及与并行方式无关的检查点,因此后续可以更改布局而无需重新转换。
FSDP 在 PyTorch FSDP2 下训练模型自己的 HuggingFace 实现。配置和权重直接从 HuggingFace 目录加载,因此无需转换步骤,也无需编写架构标志,并行方式仅为数据并行。需要小幅修正的架构将修正注册为 adaptation spec,而不是 fork 模型代码。
在每个训练步骤中,优化器更新模型权重后,新权重必须在所有 rollout 引擎之间同步。当训练和 rollout 运行在不同 GPU 上时,权重同步可能成为流水线的主要瓶颈。Miles 为不同的部署场景提供了两条优化路径。通过 P2P 权重传输 [5],训练 rank 为目标 SGLang 布局重新分片每个权重 bucket,并仅将所需分片直接写入 rollout-rank 内存(通过 RDMA)。这避免了将完整模型广播到每个 rank,并并行使用多个训练 rank 作为发送方。收益随模型规模和专家并行度增长:对于 Kimi-K2 1T,P2P 将权重更新时间从 53.3 秒减少到 7.2 秒。
对于没有直接 NCCL 或 RDMA 连接性的 rollout 集群,Miles 支持磁盘增量更新。连续的 RL 步骤通常只改变模型字节的一小部分,因此 Miles 只需发布相对于前一策略版本的增量权重,而不是传输完整检查点。Rollout 引擎在生成继续进行的同时应用并验证增量权重,然后仅暂停以将组合权重加载到 SGLang。通常 BF16 rollout 的增量权重仅包含 2% 的参数,FP4 rollout 为 0.5%。在 GLM-4.7-Flash 运行中,这将使每次更新的 payload 从 62.4 GB 减少到 0.69–0.83 GB,同时将生成暂停时间保持在 3–5 秒以内。
经验证的 Day-0 模型支持
Miles 在权重公开的当天(与 SGLang 同步)上线新的前沿模型。Kimi-K3 [13]、DeepSeek-V4 [10]、Inkling [12]、Qwen3.8 [14] 和 NVIDIA Nemotron 3 Ultra [11] 都在发布当天即可在 Miles 中训练,因为 SGLang 中的推理路径和 Miles 中的 RL 配方是并行启动的,而不是顺序进行。Day-0 覆盖不限于单一架构系列:它涵盖 dense 和 MoE 模型、混合注意力和多模态输入。除了 Day-0 之外,几乎所有开放的 frontier 模型都在 Miles 上运行,包括 DeepSeek-V3.2、Kimi-K2.6、Qwen3.8、GLM-5.2、Gemma-4、GPT-OSS 等。对于每个支持的模型,我们在 Miles 中提供 CI 守护的配方。完整列表见此处。
其他 Post-training 配方
除了核心 RL 循环,Miles 还是一个通用的 post-training 平台上述描述的 rollout 引擎、训练器和权重更新路径是共享组件而非 RL 专用机制,它们可以组合成其他训练范式:LoRA RL、on-policy 蒸馏(OPD)和监督微调(SFT),后者使用 SFT 损失运行相同训练器且无需 rollout 引擎。本节介绍 LoRA RL 和 OPD(大部分 Miles 特定工作所在之处),最后以 Zero-KL Alignment 收尾,它消除了 rollout 和训练之间的数值不匹配,从而使 on-policy 数据真正 on-policy。
Miles 支持跨训练、权重同步和 SGLang rollout 的端到端 LoRA 强化学习,适用于 LLM 和扩散模型。基础模型保持冻结和驻留,而 Miles 仅训练和同步适配器,SGLang 在 rollout 期间应用最新适配器。
Miles 支持 dense 和 MoE 模型,包括 GPT-OSS、GLM、Kimi K2/K3 和 Inkling。对于 GLM-5.2 744B-A40B,可训练参数仅占 212 MB,约为模型 BF16 基础权重大小的 0.014%——显著降低了训练成本。
除了节省内存,LoRA 在 RL 训练中还带来了效率优势:
每次训练器步骤时间更短:训练器仅为小型低秩适配器计算权重梯度和优化器更新,减少了梯度计算、优化器工作负载、内存流量和分布式通信,从而提高了整体训练效率。
轻量高效的权重同步:Miles 只需同步更新的 LoRA 适配器。它将分布式 TP 和 EP 分片打包成少量扁平集合,然后直接将服务就绪的张量传输到共置的 SGLang worker,无需在主机内存中暂存。由于仅传输 LoRA 权重,这种方法显著减少了传输时间。
Miles 还提供了一个多 LoRA RL 后端,用于在共享基础模型上训练和服务独立配置的 LoRA 适配器。这个实验性后端仅更新变更的适配器,并通过 SGLang 路由混合适配器 rollout,为一个具有更低计算、内存、通信和运营成本的 Tinker 兼容平台奠定了基础。
On-Policy 蒸馏(OPD)
Miles 支持 on-policy 蒸馏 [8],允许学生从其自身 rollout 分布上的教师指导中学习。反向 KL 被实现为一种"reward",因此用户可以选择用常规 GRPO/PPO 风格的 reward 来补充蒸馏。在反向 KL 的近似方式上,用户还可以选择在仅从学生采样的 token 计算,或从具有 top-K 概率的 token 集合计算。
对于长上下文工作负载,Miles 使用稀疏的 per-position 教师评分:教师仅对每个生成位置所需的候选 token 进行评分。这避免了不必要的构造、通信和解析开销。Miles 还为一系列 OPD 配方提供了可配置的候选选择和加权策略。
在 B200 节点上对 Qwen3.5-35B-A3B 进行自蒸馏实验中,仅使用反向 KL"reward",OPD 将平均 rollout 长度从 18.6K 减少到约 6K token,同时将留出 DAPO 性能从 84.6% 提高到 89.5%。这表明 OPD 能够在对基准性能影响最小的情况下迁移行为。

图 5. On-policy 蒸馏。教师对学生生成的 token 进行评分,反向 KL 信号驱动更新,可选择与任务 reward 结合。
Miles 支持零 KL 对齐(Zero-KL Alignment),通过在模型权重之外对齐注意力机制、GEMM运算、算子精度、批处理行为及其他执行细节,使 rollout 引擎和训练引擎之间的数值差异最小化。在支持的配置下,训练与 rollout 的对数概率差可以精确保持为零。
零 KL 对齐目前仅支持 Qwen 3 模型系列,但我们计划 soon 支持更多模型架构、内核和并行配置。
至此,我们已经完整介绍了 Miles 中的 RL 训练循环,所有这些功能都建立在我们的代码质量原则之上:Miles 应该易于阅读和扩展。训练驱动器有意写得类似伪代码,而主要组件(如 rollout 函数、数据源、损失函数和奖励函数)则位于小型、类型化的接口背后。Rollout 技术栈被分为智能体层(agent)、生成层(generation)和 rollout 层,因此环境或智能体框架可以只替换所需的层,同时复用其他所有层。这使得构建自定义 RL 训练循环变得直接,无需 fork 或重写 Miles。
Miles 的设计理念不局限于 LLM,还延伸到了扩散模型。在 Miles-diffusion 中,sglang-diffusion 作为高性能 rollout 引擎,返回完整的去噪轨迹及每步的对数概率。FSDP2 训练器在混合分片和 SP 下消费选定的 SDE 步骤并优化 RL 目标。继承自 Miles 的设计,Flow-GRPO、DiffusionNFT 和 SFT 都在单一训练器中统一,支持可插拔的损失、rollout 和奖励组件。初步支持的模型包括 SD3.5、Qwen-Image、Wan2.2、LTX-2.3、Cosmos3 和 Minimax-H3,每个模型都有曲线验证的配方。
在 rollout 端,sglang-diffusion rollout 将生成组织成微组(microgroup),复用编码器结果并对样本进行批处理。在 group size 为 16、512×512 分辨率的 Qwen-Image 上,相比普通串行生成实现了 5.87 倍的加速。每个微组随后被反序列化并作为独立的异步流进行奖励评分,以与其他流重叠。在训练端,可选的确定性模式实现了位级可复现性,结合文档化的曲线和端到端 CI 验证配方质量。为解决训练推理不匹配并保持对精度敏感的 DiT 参数,FSDP2 被修补以支持细粒度的每参数 dtype 控制。
Miles 在 NVIDIA 和 AMD GPU 上运行相同的训练循环。NVIDIA 覆盖范围从 A100 到 GB300,后者是本文参考运行和 Blackwell 低精度配方的硬件基础。AMD 支持通过 HIP 和 RCCL 实现原生 ROCm:Miles 在 MI300X 到 MI355X 上运行,共享相同的 SGLang rollout 集成和专用 Docker 镜像,CI 对两个厂商一视同仁,在 NVIDIA 和 AMD 运行器上均执行端到端训练测试。
作为智能体 RL 训练的端到端示例,我们演示如何使用 Miles 在终端编码任务上训练 GLM-5.2 744B-A40B 模型,使用完全异步的 RL,跨 64 张 NVIDIA GB300 GPU,其中 32 张 GPU 用于 rollout,32 张 GPU 用于训练。为实现最佳性能,我们将训练并行度设为 TP 2 / PP 4 / CP 4 / EP 8,推理并行度设为 TP 8 / EP 8,并启用多 token 预测(MTP)。每个多轮终端智能体使用 Miles 中的 OpenEnv 集成在独立沙箱中运行。在本次参考运行中,我们使用 65k 最大序列长度和 64 的批大小。
参考运行稳定完成 100 步类 terminal-bench 编码任务 rollout,训练步骤维持约 4.5 分钟,rollout 权重平均滞后训练器 1.7 步。
通过样本级异步调度、DP 感知且负载均衡的路由以及均衡的 SGLang 服务器配置,Rollout 和训练几乎完全重叠。Rollout 达到了 96% 的前缀缓存命中率,并发稳定。
得益于 Miles 启用的大幅内存优化,我们能够将 744B 模型的异步训练装入 64 张 GPU,其中训练引擎仅托管在 32 张 GB300 GPU 上。
此次运行的完整启动脚本可在此处找到。

图 6. GLM-5.2 智能体 RL 训练示例中的指标。
[1] Introducing Miles — RL Framework To Fire Up Large-Scale MoE Training
[2] Unified FP8: Moving Beyond Mixed Precision for Stable and Accelerated MoE RL
[3] Squeezing 1TB Model Rollout into a Single H200: INT4 QAT RL End-to-End Practice
[4] ROCm Support for Miles: Large-Scale RL Post-Training on AMD Instinct™ GPUs
[5] Updating 1T parameters in seconds — P2P weight transfer in Large Scale Distributed RL
[6] No Token Left Behind: Demystifying Token-In-Token-Out in Miles
[7] Bringing DeepSeek-V4 Flash RL Training to AMD Instinct MI355X GPUs with Miles
[9] Towards Blackwell-Native 8-bit and 4-bit RL: End-to-End MXFP8 and NVFP4 RL in Miles
[10] DeepSeek-V4 on Day 0: From Fast Inference to Verified RL with SGLang and Miles
[11] SGLang and Miles Add Day-0 Support for NVIDIA Nemotron 3 Ultra for Long-Running Autonomous Agents
[12] SGLang and Miles Add Day-0 Support for Inkling, a Frontier Multimodal Model
[13] SGLang and Miles Add Day-0 Support for Kimi K3
[14] SGLang and Miles Add Day-0 Support for Qwen3.8
我们感谢 Miles 和 SGLang 的所有社区贡献者的宝贵贡献和持续支持 ❤️