ReCoVer: Resilient LLM Pre-Training System via Fault-Tolerant Collective and Versatile Workload¶
会议: NeurIPS 2026
arXiv: 2605.11215
OpenReview: https://openreview.net/forum?id=rqxWoOlmvG
代码: 待开源(论文明确标注:Under review, code will be open-sourced afterwards)
领域: 预训练
关键词: 大语言模型预训练、前向容错恢复、故障感知集合通信、多副本工作负荷自适应、训练轨迹等价性
一句话总结¶
针对十万卡大模型预训练中频繁硬件故障导致的巨大检查点重启开销与轨迹漂移问题,ReCoVer 提出了由底层故障自愈通信原语、中间步内细粒度梯度快照恢复与顶层弹性工作负荷策略构成的三层协议体系,在无需回滚重放与冗余热备的前提下,始终维持单步微批次总量恒定,实现了与无故障基准严格随机等价的端到端鲁棒预训练。
研究背景与动机¶
前沿大语言模型(LLM)的预训练需求推动超算集群规模急剧膨胀到十万甚至百万 GPU 级别(如 LLaMA-4 的 100k GPU 及 Grok-4 的 200k GPU)。在如此庞大的硬件规模下,平均无故障时间(MTBF)随 GPU 数量呈反比急剧缩短,从 16k GPU 时的 3 小时骤降至 100k GPU 时的仅 18 分钟。传统的“检查点-重启”(Checkpoint-Restart)机制需要重新初始化通信后端与流水线、重新加载参数与优化器状态并从上一个检查点重算,单次恢复耗时常达 10 分钟。这意味着在 18 分钟的故障周期内仅有 8 分钟在做有效计算,超过 50% 的算力被白白浪费。随着集群继续扩容,当 MTBF 逼近重启开销时,有效计算吞吐甚至会趋近于零,亟需能够实现故障原地自愈且无需回滚的前向恢复(Forward Recovery)方案。
然而,现有的前向恢复尝试在三个关键维度上存在严重缺陷。首先是层间割裂:底层通信容错(如 MPI-ULFM 或 NCCL 容错拓展)缺乏对现代大模型复杂的多集合通信、多进程组结构及严苛性能约束的端到端适配;其次是缺乏范式通用性:基于流水线气泡替换或动态调度调整的系统往往深度绑定特定流水线并行策略,无法直接扩展到混合分片数据并行(HSDP)等新兴体系;最致命的是破坏了计算等价性:现有的快速容错方案(如 FTAR)在节点故障后直接丢弃故障副本或依赖降级规模运行,导致单步累积的微批次总数发生改变,这剧烈改变了梯度噪声尺度(Gradient-Noise Scale)并引发训练损失抖动,在连续高频故障下累积漂移、偏离正常训练收敛路径。
针对这些矛盾,本文提出不能依赖被动重启或牺牲批大小来妥协,而必须在全训练栈各层贯彻一个严格的不变量。核心 idea:构建一套通信层、步内恢复层与负荷调度层解耦的三层容错预训练系统,通过动态重排幸存副本的微批次配额严格保持每步全局微批次总量恒定,结合原地故障通信收缩与分桶快照回滚,在无需热备与回滚重算的前提下实现与无故障运行在统计上严格等价的训练轨迹。
方法详解¶
整体框架¶
ReCoVer 将大模型预训练过程抽象为单步同步累积循环,将整个模型完整副本(Replica)视为原子容错单元,自底向上构建了三层协同协议栈:底层基于 ULFM 扩展构建了具备故障探测、通信域自愈(Shrink)与全局共识的集合通信原语;中间层负责步内细粒度事务管理,通过单步内针对 FP32 梯度累积缓冲区的按桶快照与世界纪元(World Epoch)版本追踪,确保只有在统一成员关系下累积的梯度才被提交;顶层设计了弹性工作负荷策略(Versatile-Workload Policy),将幸存副本动态划分为主副本、辅副本及预备热备角色,并根据故障是否穿透策略边界实时补发微批次并重排稳态配额。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["单步前向与反向传播<br/>各副本独立执行局部梯度累积"] --> B["阶段1:ULFM 防御性集合通信<br/>探测故障并原位收缩通信域至幸存副本"]
B --> C["阶段2:步内细粒度梯度快照恢复<br/>比对世界纪元回滚受污染桶并消除异步分歧"]
C -->|判定是否超出备用副本配额| D["阶段3:弹性工作负荷配额重平衡<br/>动态补算微批次确保全局总量恒定为 B"]
D --> E["参数更新与稳态策略递进<br/>优化器执行严格等价更新并重构下一轮角色"]
关键设计¶
1. ULFM 驱动的故障防御型集合通信:防止通信死锁并原位收缩通信域
传统 NCCL 或标准 MPI 遇到进程崩溃时会由于等待对端握手而无限期挂起或直接抛出致命异常中止作业。ReCoVer 基于用户级故障缓解(ULFM)扩展了 PyTorch 的底层通信后端 ProcessGroupULFM,将故障隔离粒度约束在副本之间。在执行全局规约前,原语首先调用 MPIX_Comm_agree 探测健康状态;若捕捉到节点故障,则立即吊销当前通信句柄并执行 MPIX_Comm_shrink 剔除故障节点,原地建立仅包含幸存副本的新通信域,同时递增单调递增的世界纪元编号 \(\epsilon_{\text{cur}}\)。随后,幸存者在新通信域内通过全局规约快速同步故障角色元数据并对齐视图,确保上层调度无需重启进程即可获得强一致的存活拓扑。针对多卡大模型,副本内部的 TP/PP 组采用 NCCL 屏障作为副本一致性门控(Replica-Consistency Gate),内部任何单卡故障均由看门狗触发整副本原子退出,而跨副本组则通过 ULFM 确保全局训练持续向前推进。
2. 步内细粒度梯度快照恢复:防止梯度污染与跨纪元权重失衡 在大模型长迭代中,单步全局批通常包含数十至上百个微批次,迭代耗时达分钟级,故障发生在梯度同步中途极为普遍。此时若已有部分梯度桶在原拓扑下完成了跨节点规约,而后续梯度桶在收缩后的拓扑中规约,会导致单步内不同参数桶的归一化权重失衡甚至引入未定义值。ReCoVer 在执行每个梯度桶的全局规约前,先为本地梯度缓冲区创建轻量快照 \(S(b)\) 并打上当前纪元时间戳 \(\epsilon(b)\)。一旦发生通信故障,系统检索所有陈旧桶(即 \(\epsilon(b) < \epsilon_{\text{cur}}\)),并在调度层提供两种恢复路径:对于未跨越策略边界(有备用副本替补)的情形,系统采用阻塞式恢复,在优化器更新前将受损桶回滚并立即在新通信域中同步重传;若跨越了策略边界需要补算微批次,系统则在独立的 CUDA 流上非阻塞异步执行梯度内存恢复,将其与额外微批次的前向计算完全重叠,消除了显式的通信阻塞开销。
3. 弹性工作负荷配额重平衡:严格保持全局微批次恒定与统计等价 为了彻底解决剔除节点后由于全局批尺寸缩小导致梯度噪声尺度变化和训练轨迹漂移的顽疾(挑战 C2/C3),ReCoVer 确立了单步必须严格维持 \(B = W_{\text{init}} \cdot G_{\text{init}}\) 个微批次梯度的核心不变量。ReCoVer 将幸存副本抽象为四种角色:贡献主要累积步数 \(G_{\text{cur}}\) 的主要副本(Major)、负责吸收无法整除余数的辅副本(Minor,贡献 \(R_{\text{cur}} < G_{\text{cur}}\))、以及执行相同前反向计算但规约前置零梯度的预备副本(Major-spare / Minor-spare)。当发生故障且存在可用预备副本时,幸存者只需在原语内选举提拔该预备副本,即可无缝吸收损失;当预备副本耗尽跨越策略边界时,系统触发策略边界步:根据幸存副本数 \(W_{\text{cur}}\) 与已完成贡献 \(C_{\text{cur}}\),自适应求解最小整数附加步数 \(G_{\text{ext}} = \lceil (B - C_{\text{cur}}) / W_{\text{cur}} \rceil\),并选派部分节点作为边界辅副本,精确补偿损失的微批次总额使得 \(\sum_{r \in \text{survivors}} C_r(t) = B\)。在优化器步提交后,系统递增稳态步长并更新各角色的常态配额。结合数据流的大规模可交换性假设,此机制在数学上证明了损失函数下降与无故障参考基线严格同分布。
损失函数 / 训练策略¶
ReCoVer 在预训练框架(如 Nanotron 3D 并行与 PyTorch HSDP)中无侵入式植入。梯度更新完全遵循标准优化器步骤,其关键策略是在归一化梯度时,强制以预设恒定目标批大小 \(B = W_{\text{init}} \cdot G_{\text{init}}\) 作为全局除数(Divisor),而不随幸存副本数动态缩放。在 3D 并行模式下,为了防止前向反向阶段与昂贵的跨节点通信交织导致 NCCL 看门狗误报,ReCoVer 将反向传播中产生的 FP32 梯度缓存延后排队,统一在全局微批次结束后的显式阶段并发规约;在 HSDP 模式下,则剥离 FSDP 默认的跨副本轴自动除法,交由统一事务管理器调度,实现了计算引擎与底层容错控制状态机的严密解耦。
实验关键数据¶
主实验¶
主实验在国家实验室前沿超算(128 个计算节点,共 512 块 NVIDIA A100 40GB GPU,Slingshot 高速互连)上开展,评估 7B 参数 LLaMA 架构模型在 C4 数据集上的预训练表现。初始配置为 \(W_{\text{init}} = 64\) 个副本(TP=4, PP=2, DP=64),初始累积步数 \(G_{\text{init}} = 128\),单步全局批尺寸 \(B = 8192\)。在整个训练过程中每隔 5 步随机注入一次单卡致命崩溃,累计导致 256 块 GPU 掉线(副本数由 64 缩减至 32)。同时在 32 节点(128 卡)上与传统周期性检查点重启基准展开全面吞吐与算力浪费对比。
| 评估场景 / 指标 | 无故障参考基线 (NCCL) | 经典检查点重启基线 | ReCoVer-3D (本文) | 相对优势 / 表现 |
|---|---|---|---|---|
| 训练轨迹损失收敛 | 稳定平滑收敛 | 随周期中断重置 | 与无故障基准完全重合 | 累计损失无毛刺、无漂移 |
| 单卡有效计算吞吐 (Tokens/s/GPU) | ~1100 (恒定) | ~490 - 520 (平缓) | 1100 \(\to\) 1450 (单调递增) | 较基准提升达 \(2.23\times\) |
| 234 GPU-小时累计处理 Token | 参照上限 | 136 M Tokens | 238 M Tokens (+102 M) | 吞吐提升 +74.9% |
| HSDP 架构 1338 GPU-小时 Token | 参照上限 | 基线吞吐 | 较基准大幅增加 | 累计吞吐提升 +47.4% |
消融实验与开销分解¶
对故障恢复各阶段开销的分解以及负荷调度策略对收敛等价性的影响进行深入消融:
| 机制配置 / 检查点间隔 (\(N\)) | 故障处理与重启停顿开销 | 优化轨迹保真度 | 有效吞吐趋势 | 核心归因说明 |
|---|---|---|---|---|
| ReCoVer 完整方案 (StaticWorld) | 几乎恒定在 ~10 秒内 | 严格重合无波动 | 随故障发生持续上升 | 单步配额恒定,通信开销被算力充分均摊 |
| 退化方案 (AdaptiveWorld) | ~10 秒 (无重算停顿) | 显著漂移且发散 | 持续降低 | 丢弃节点后微批次变小,破坏梯度噪声尺度 |
| 传统检查点重启 (\(N=2\)) | 累积重算约 30 秒 | 阶段性回滚对齐 | 维持低位 (~500) | 即使在最严苛的高频保存下仍输给本文 |
| 传统检查点重启 (\(N=16\)) | 累积重算约 180 秒 | 阶段性回滚对齐 | 维持低位 (~500) | 间隔扩大导致回滚重算量成正比剧烈膨胀 |
| 传统检查点重启 (\(N=64\)) | 累积重算 > 600 秒 | 阶段性回滚对齐 | 极度恶化 (<300) | 接近故障间隔极值,有效计算吞吐趋近于零 |
关键发现¶
- 负荷自适应引发的反直觉吞吐超越:在 512 卡训练中,当掉线 256 块 GPU 后,ReCoVer 的单卡有效吞吐(Effective Throughput)不仅没有下降,反而从起初略低于 NCCL 逆势攀升并反超无故障基准。其根源在于:随着幸存副本减少,为了补齐固定的 \(B\) 个微批次,单副本内的梯度累积步数被迫自适应增加,大幅提高了单步计算时间与通信时间的比例,使通信开销被高度均摊,硬件利用率更趋近于纯计算上限。
- 训练轨迹的严苛等价性:在经历长达 256 块 GPU 逐步离线(相当于一半集群算力蒸发)的恶劣场景下,ReCoVer-3D 与 ReCoVer-HSDP 的损失下降曲线与无故障单调跑完的 NCCL 黄金曲线肉眼完全无法区分,彻底验证了基于数据流可交换性的恒定微批次不变量的数学自洽性。
- 对检查点周期的免敏性:在单次故障开销分解中,传统基线的停顿开销随检查点间隔 \(N\) 呈线性激增,而 ReCoVer 的恢复代价完全平躺,即便与传统基线最理想的极高频检查点(\(N=2\))相比,ReCoVer 依旧展现出绝对的耗时优势。
亮点与洞察¶
- 将系统容错问题升维为数学分布保持问题:以往系统往往将容错局限在“进程别挂”或“丢弃节点继续跑”,忽视了超大模型优化器对超参数(尤其是全局批大小)的高敏感性。ReCoVer 首次提出并严格坚守了单步全局微批次恒定不变量,用多角色负荷自平衡填补了硬件拓扑抖动与算法优化轨迹之间的鸿沟。
- 异步快照流与前向计算完美重叠的工程智慧:在跨越策略边界的恢复过程中,ReCoVer 没有在主计算流上进行繁重的阻塞式内存拷贝与全规约重发,而是将历史脏梯度的快照复原下放到独立的 CUDA 流中,与额外补偿微批次的前向计算完全并行,实现了近乎零额外开销的步内容错自愈。
局限与展望¶
- 未利用故障副本中的健康节点:当前系统将完整模型副本(如 TP×PP 构成的整组)视为原子失效单元,若一个 8 卡副本中仅有 1 块 GPU 硬件损坏,其余 7 块正常工作的 GPU 也会被直接放弃退出,造成了暂时的局部算力闲置。
- 单向淘汰缺乏动态热重入机制:当前实现聚焦于存活节点的单向自适应支撑,若损坏的节点被物理修复或新节点被分配入集群,系统尚不支持在不重启全局任务的情况下将新节点动态纳管并逆向调整角色负载。
- 通信库依赖与跨平台移植挑战:ULFM 目前对标准 NCCL 商业闭源生态的直接注入存在依赖限制,在非 Slingshot 或特定 RoCE 网络拓扑下的生产级集群部署需要定制化维护底层 MPIX 运行时。
思考与启示¶
- 规模化预训练的核心瓶颈由算力转向可用性:随着模型参数与集群规模逼近物理极限,传统的无故障假设彻底瓦解,系统层面的容错设计必须与算法层面的超参数稳定性深度解耦与协同。
- 以数学不变量指导系统架构设计:系统设计不能仅着眼于进程级“生与死”,保持优化轨迹数学等价性(如恒定全局微批次)才是确保大模型训练收敛与复现性的基石。
- 通信库与并行范式的解耦抽象:未来万卡级以上 AI 基础设施应将通信拓扑修复与上层分布式并行调度(HSDP/3D Parallelism)标准化抽象,避免重复造轮子。
适用场景与落地建议¶
- 超大规模算力集群(10k~100k+ GPU)长周期基座模型预训练:高频掉卡场景下可直接挽救数倍算力浪费。
- 不稳定网络与异构算力环境:节点可用性动态波动时的弹性训练流水线调度。
相关工作与启发¶
- vs FTAR (Salpekar et al., 2026):FTAR 在 10 万卡集群上实现了基于 NCCL 撤销与异步重入的 HSDP 容错,但在副本修复完成前采用降级规模运行,会导致单步批大小缩水和损失函数抖动。ReCoVer 在通信自愈的基础上,通过多角色配额动态调度严格守住了全局批大小恒定,彻底保证了优化等价性。
- vs Bamboo (Thorpe et al., 2023) / Oobleck (Jang et al., 2023):上述系统深度依赖流水线并行的结构特性,通过预留冗余流水线阶段或重构调度流水线气泡实现容错,难以适配 HSDP 等数据分片范式。ReCoVer 将容错粒度解耦到副本维度与通信原语层,无缝兼容 3D 混合并行与 HSDP 范式。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 巧妙结合 MPI-ULFM 与动态微批次调度机制,首次在大模型预训练上实现无损于优化轨迹的前向故障恢复。
- 实验充分度: ⭐⭐⭐⭐⭐ 在国家实验室 512 块 A100 超算集群上完成端到端 7B/1B 模型验证,模拟了高达 256 卡连续掉线的极端工况,并提供了完备的理论等价性证明。
- 写作质量: ⭐⭐⭐⭐⭐ 系统分层架构清晰透彻,算法伪代码与数值演化案例推演详尽,图文高度呼应。
- 价值: ⭐⭐⭐⭐⭐ 对于正在冲刺百万卡集群、受困于 MTBF 极短与检查点频繁中断的工业界基础模型训练具有极高的落地指导意义。