
Miles容错机制详解SGLang引擎挂掉后如何原地恢复训练不停车【免费下载链接】milesMiles is an enterprise-facing reinforcement learning framework for LLM and VLM post-training, forked from and co-evolving with slime.项目地址: https://gitcode.com/GitHub_Trending/miles1/milesMilesMiles Framework是一个面向企业级 LLM/VLM 后训练的高性能强化学习框架用 SGLang 做 rollout 推理、Megatron-LM 做训练。而 Miles 容错机制Fault Tolerance正是它面向生产的核心能力当某个 SGLang 推理引擎崩溃时Miles 会在原地自动检测、拉起并回灌最新权重训练不重启、不停车。下面带你从「怎么开」到「怎么工作」完整拆解这套机制。为什么大规模 RL 训练「停不起」在千卡甚至万卡规模的 RL 训练中一次意外中断的代价是整个 rollout 批次作废多张 GPU 同时空转等待断点续训要重新加载检查点、重建进程组分钟到小时级损失引擎 OOM、NCCL 超时、驱动异常在长训练中几乎是「必然会发生的」而不是小概率事件。Miles 的容错设计目标就一句话单点故障不扩散故障节点原地换血训练循环继续转。官方端到端测试甚至验证了在随机崩溃注入下模型依然能收敛到和无故障基线相同的 gsm8k 精度阈值见 tests/e2e/ft/。一键开启--use-fault-tolerance 怎么用开启容错只需要一个开关并按需选择作用组件参数默认值作用--use-fault-tolerance关闭总开关启用容错机制--ft-componentsrollout选择容错对象rolloutSGLang 引擎或train训练副本可多选--rollout-health-check-interval30.0srollout 引擎心跳检查间隔--rollout-health-check-timeout30.0s单次心跳超时时间超时即判死--api-server-port容错开启时自动启用本地 HTTP API Server 端口供控制器驱动各 Cell--mini-ft-controller-poll-interval10.0s迷你容错控制器轮询 Cell 健康状态间隔--mini-ft-controller-resume-delay10.0s悬停后重新拉起 Cell 的延迟参数定义见 miles/utils/arguments.py机制文档见 docs/advanced/fault-tolerance.md。一个最小示例rollout 容错python train.py \ --use-fault-tolerance \ --ft-components rollout \ ... # 其余常规训练参数Rollout 容错心跳监测 → 判死 → 原地换引擎Rollout 侧的恢复链路分三步全程无需人工介入心跳监测每个 rollout 服务组都有一个健康检查器miles/utils/ft_utils/health_checker.py周期性向每个 SGLang 引擎发送health_generate探针请求。心跳超时无响应且失败次数超过阈值该引擎即被判定死亡并强制下线。延迟恢复gated recovery被杀掉的引擎槽位置为「空」。真正的重建发生在下一次权重更新之前——恢复逻辑会找到所有空槽位按原配置拉起新引擎、释放显存占用然后紧接着把训练侧最新权重推送给新引擎。这一步保证换上去的引擎「出生即最新」不会用旧权重继续生成污染数据。路由无感router 层把请求继续分散到存活引擎上恢复期间其余引擎照常服务整批 rollout 不会因单引擎死亡而失败。这套「死亡 → 空槽 → 权重更新前重建 → 灌权重」的闭环正是「原地恢复、不停车」的关键训练主循环照常推进只是多花几秒拉起新引擎。Train 容错独立 DP Cell 与自动换血若选择--ft-components trainMiles 会自动开启一组配套能力见 miles/utils/arguments.py 中的自动配置逻辑indep_dp每个数据并行副本是独立进程组单个 Cell 挂掉不会拖累其他副本——其余 Cell 以 N-1 的规模照常提交本步更新避免集体通信卡死本地检查点atomic 算法每个 rank 独立落盘、无集合通信崩溃后可快速读取权重校验和 事件分析器恢复后自动比对各 Cell 间权重是否逐位一致确保「换血」没有引入状态漂移。恢复执行者是常驻守护线程的迷你容错控制器miles/utils/ft_utils/mini_ft_controller.py它轮询 API Server 的 Cell 健康状态对不健康 Cell 执行「suspend → 等待 → resume」的自动修复若修复本身失败会按指数退避5s、10s、20s…上限 300s重试避免风暴式重拉。整个训练侧时序是故障 → 收缩到存活副本 → 本步照常提交 → 后台把故障 Cell 从健康 Cell 拉取状态重新拉起 → 后续步骤恢复满编。它真的可靠吗看 Miles 的故障注入测试Miles 没有「我觉得能恢复」而是用故障注入实测tests/e2e/ft/README.md测试场景验证内容scenario_no_failure无故障时容错路径与常规 DP 训练结果一致无性能/数值回退scenario_with_failure注入进程崩溃后缩容 → 恢复 → 再训练数值与基线对齐scenario_deterministic故障恢复的状态拷贝逐位精确冷启动与断点续训双场景scenario_ft_random随机间隔随机方式杀进程SIGKILL、segfault 等训练无挂死跑满 30 步scenario_realistic_gsm8k250 轮真实 gsm8k RL 训练中持续注错最终精度不达标即失败快速上手清单单节点/小规模实验先只开--ft-components rollout成本最低覆盖最常见的引擎 OOM 场景长时生产训练rollouttrain全开配合本地检查点获得训练侧自愈使用 DeepGEMM 等需要较长编译期时适当调大--rollout-health-check-first-wait避免编译期间误判恢复后想确认引擎权重正确打开事件分析器会自动记录引擎权重校验和事件可用于事后审计。更多参数说明见 docs/user-guide/cli-reference.mdrollout 侧恢复实现位于 miles/ray/rollout/训练侧自动配置与验证逻辑见 miles/utils/arguments.py。一句话总结Miles 把「引擎挂掉」从训练事故降级成了一次几秒的引擎热替换——心跳判死、空槽重建、权重更新前原地换血三件套让大规模 RL 后训练真正做到不停车。【免费下载链接】milesMiles is an enterprise-facing reinforcement learning framework for LLM and VLM post-training, forked from and co-evolving with slime.项目地址: https://gitcode.com/GitHub_Trending/miles1/miles创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考