面向 RL 后训练的角色级容错系统(OSDI 2026)

原题:RobustRL: Role-based Fault Tolerance System for RL Post-Training

一句话总结:RL 后训练把 trainer、rollout 与 tool interaction 异步交错,整任务重启会丢掉昂贵 trajectory;RobustRL 以 role/phase-aware detection、只重启故障角色、rollout 借机预热 trainer、per-step checkpoint 和 UCX dynamic reconnect,把 256-GPU、每 10% steps 注入故障时的 ETTR 从 ByteRobust 约 60% 提到 80% 以上,并缩短 8.4%–17.4% 训练时间。

问题与动机

LLM RL post-training 不是纯 training:rollout generation、tool call、trainer update 和 weight synchronization 按 sync、async 或 semi-sync 交错。rollout 可因等待外部工具而合法地长时间没有 GPU activity,trainer 又可能在 rollout 长尾期间发生故障。把 pre-training 容错直接套上来,要么把合法 idle 误判为 fault,要么等所有 rank idle 才发现 trainer fault;任一 machine error 还会触发整任务重启,丢弃 trajectory 和 agent environment state(图 2/3)。

RobustRL 的核心目标是 failure isolation:把 trainer、rollout 和 management role 当作独立 distributed subtask,只恢复故障 role,再让它与存活 role 动态重连。作者将流程概括为 Detect–Restart–Reconnect,覆盖 sync、async、semi-sync 三类架构和 trainer/rollout machine failure。

关键观察 / 隐含假设

  • 观察 1:不同 role 的“健康行为”不同。trainer training phase 应持续有 TensorCore activity;rollout 会因 tool wait 或 request gap 合法 idle,因此必须先看 throughput,再 heartbeat(§4、图 5)。
    • 依赖假设:role phase 可被 runtime 准确标识,60 s/5 min threshold 适配 workload。
    • 可能失效场景:超长 advantage computation、silent data corruption、极低请求率 rollout 或 scheduler straggler 会混淆 hang 与合法 idle。
  • 观察 2:RL step 常持续数分钟到数小时,per-step checkpoint 的约 3 s GPU-to-memory blocking 很小;保存每步 weight 可避免恢复 trainer 与 living rollout 的 version 不一致(§2.3、§7.4.2)。
    • 依赖假设:host memory/HDFS 带宽足够,checkpoint 能在下一 step 内异步落盘且不造成 memory pressure。
  • 观察 3:async/semi-sync 中 rollout machine 已具备同类 GPU/environment,可临时替代故障 trainer 的 gang member,避免等待新 machine 和额外 idle standby(§5.1.3、图 8)。
    • 依赖假设:trainer/rollout hardware 同质、同 datacenter,且保留至少 max(DP,TP,PP,EP,CP) 个可借 rollout capacity。
  • 假设 1:role-local restart 足以处理 machine fault;可复现 code/config error 应回退到 whole-task restart。
    • 证据强度:中;workflow 用 first-iteration/repeated exception/repeated restart failure 区分,但复杂根因诊断仍依赖 heuristic。

核心方法

control plane 的 phase-aware analyzer 为 trainer 与 rollout 分配不同 detector。trainer 只在 training phase 监测 5 分钟 TensorCore inactivity;rollout 每 60 s 先查 TPS,TPS=0 才 heartbeat。management role 用 affinity 放到非 trainer/rollout machine,避免替换 GPU node 时连控制角色一起杀死(§3–§4)。

trainer fault 时 TaskRunner 终止并重建 trainer worker,从上一 per-step checkpoint 恢复,并让 RequestManager 保留的当前 trajectory 直接交给恢复 trainer。async/semi-sync 可 kill 一个 rollout、立即加入 trainer gang,同时后台调度 replacement rollout;sync mode 无独立 rollout,不能用这一 warm-standby 技巧(§5.1、图 6–8)。

rollout fault 时 RequestManager 在每个 tool turn 保存 trajectory prefix,living rollout 接管后续生成;AgentWorker 与 sandbox 不在故障 machine,因此 environment state 可保留。恢复 rollout 从 trainer 或最新 rollout relay 拉 weight,避免全任务停顿(§5.2.2)。

reconnect 用 UCX point-to-point 替代 NCCL 固定 collective group。trainer 各 DP rank 通过 GPU-to-GPU zero-copy、DLPack/CuPy buffer 向对应 rollout 发送 shard;已更新 rollout 成为 relay,其他 outdated/recovered rollout 异步加入。每份 weight 同时只由一个 rollout 拉取,失败时保留已成功进度并改选 relay(图 9)。

设计取舍

  • 细粒度恢复换状态协议复杂度:必须跨 RequestManager、checkpoint、weight version、relay set 和 role lifecycle 维护一致性。
  • per-step durability 换 host/disk资源:阻塞仅约 3 s,但需要每 rank pinned host mapping、HDFS capacity 与持续写带宽。
  • rollout 借机换 inference capacity:trainer更快恢复,却暂时减少 rollout concurrency;只适合 async/semi-sync 与硬件同质部署。
  • dynamic UCX 换 collective 简洁性:支持任意恢复节点加入,但需自行做 shard mapping、relay、retry 与 bandwidth coordination。
  • 边界条件:故障越频繁、rollout 越昂贵,收益越大;约 2% 的低故障率小规模训练中相对 ByteRobust 没有显著优势(§8)。

实验与结果

  • testbed 为 32 machines/256 H20 96 GB GPUs、每机 8 GPU、900 GB/s NVLink、4×200 Gbps NIC、2 TB memory;verl 0.5.x、FSDP2、vLLM、ByteCheckpoint/HDFS(§7.1)。
  • Qwen3-8B/32B Math 与 32B SWE、100 steps、每 10% steps 随机注入 trainer fault;相对 ByteRobust,RobustRL 分别节省 0.8–2.1 h、1.4–1.6 h、3.5–4.5 h,fault overhead 少于总时间 5%,ByteRobust 约 20%(图 11)。
  • Qwen3-8B-Math semi-sync 的 sliding ETTR 在 fault window 相对 ByteRobust 高 18%–24%;摘要报告 256 GPU stress case 的 ETTR 超过 80%,ByteRobust 约 60%,end-to-end 快 8.4%–17.4%(图 12)。
  • sync/semi-sync 的 normalized reward trend 大体相似,但因 FlashAttention/CUDA atomic 与 streaming schedule 不 deterministic,曲线并不完全对齐(图 13)。
  • trainer restart 随 model/cluster config 约 173–227 s,而 whole RL task restart 约 256–403 s;32B rollout replacement 包括 schedule、container、engine、weight sync 合计约 119 s,期间多 replica 保持 token throughput(图 15/17)。
  • role-aware rollout detector 相对 cluster-level detector 最多提前约 1000 s;8B/32B/235B 的 UCX weight sync 接近 NCCL,且 rollout 数超过 trainer 时 relay scaling 更好(图 16、18/19)。
  • ByteCheckpoint GPU-to-memory blocking 约 3 s,memory-to-disk 约 10 s 且异步;failure 每 10 steps 时,3/5-step checkpoint 分别引入 1/5 offline steps,并可见 reward growth 退化(图 20–22)。

论断—证据表

论断证据评测边界置信度
role-local recovery 比 whole-task restart 保留更多有效 RL 工作图 11/12Qwen3 8B/32B Math/SWE,128/256 GPUs,10% step fault injection
trainer restart 可显著缩短恢复路径图 158B/32B 与 64–256 GPUs;ByteRobust 已去掉 machine reschedule
per-step checkpoint overhead 对长 RL step 较小图 20/21FSDP2/Megatron、8B/32B/235B、HDFS testbed
UCX dynamic relay 保持可接受 weight sync 性能图 18/198B/32B/235B、4×200 Gbps NIC
恢复后训练趋势未明显偏离 baseline图 13/22Math task、100 steps;本身 non-deterministic

批判性分析

论证链条

论文准确抓住 RL 与 pre-training 的差别:rollout state 昂贵且 role 异步,failure domain 应与 role 对齐。detect、restart、reconnect 三段分别有机制和实验支撑。需要收窄的是“comprehensive”:实现重点是 GPU machine error,silent corruption、straggler、cross-role root cause 和 management-plane failure 只是扩展接口或讨论。

假设压力测试

warm rollout 假设同质 hardware 和同 datacenter,而现实常将 trainer 放 H800、rollout 放 H20;论文建议额外同质 warm rollout,这重新引入 standby capacity。per-step checkpoint 假设每步很长,在短-response/high-throughput RL 或更频繁 optimizer step 中占比会上升。trainer 5 分钟 idle threshold 也可能让真实 fault 浪费大量 GPU time。

实验可信度

模型、任务、三种 schedule mode、failure frequency、checkpoint 与 communication 分解较全面,256 GPU 规模有说服力。不过主要 end-to-end 是人为每 10% steps 注入 trainer fault,远高于给出的 256-GPU i.i.d. production projection(约 117 h 一次);baseline ByteRobust 还去掉 machine rescheduling,虽使比较更保守,却不能代表真实 end-to-end scheduling variance。rollout failure 多为组件分析,没有与 production fault trace 重放。

系统性缺陷

8K Python LOC 嵌入 Ray/verl,控制面本身会成为新 failure source。RequestManager 保存多 turn trajectory、relay 保存最新 weight、host checkpoint 保存 optimizer/model state,形成三套 durable/ephemeral state;论文未给它们在 control-plane crash 后的恢复协议。检测 heuristic 对 silent hang、slow network、tool outage 与 cross-role memory leak 的 root cause 仍不可靠。

局限与后续工作

  • 局限 1:低故障率时优势有限,stress injection 不能直接代表 production availability gain。
  • 局限 2:fault diagnosis 仍以 inactivity/heartbeat/exception 为主,不能处理 silent data corruption 与跨角色根因(§8)。
  • 局限 3:rollout warm trainer 依赖同质机器,heterogeneous RL deployment 需要额外预留兼容 rollout。
  • 后续工作 1:重放真实 GPU/network/tool failure trace,分别报告 detection precision/recall、false recovery、lost trajectory tokens 与 ETTR。
  • 后续工作 2:注入 TaskRunner、RequestManager、relay 与 HDFS failure,验证 control-plane crash 后 weight/trajectory/checkpoint version 能否一致恢复。
  • 后续工作 3:建立 checkpoint interval 与 step duration、failure rate、storage bandwidth 的模型,用 reward degradation 和 ETTR 联合选择间隔。

相关