指南训练 / 微调

大模型训练Checkpoint存储与恢复怎么设计

Checkpoint设计的目标不是多存文件,而是在故障后按约定时间恢复正确状态。本文覆盖状态范围、分布式格式、写入提交、分层存储、保留和恢复演练。

大模型Checkpoint训练恢复分布式Checkpoint模型训练Checkpoint存储容灾演练
Slug
llm-training-checkpoint-storage-recovery-design
更新
2026-07-20
来源
3
关系
3

先给结论:用恢复目标反推Checkpoint架构

Checkpoint设计应先确定可接受的训练进度丢失、最长恢复时间、单个检查点大小和保留周期,再决定写入频率、存储层级与并行方式。只测量峰值写入带宽,不做完整恢复演练,不能证明训练可恢复。

Checkpoint中应保存什么

  • 模型参数及其分片信息。
  • 优化器状态、学习率调度器状态和混合精度缩放状态。
  • 全局步数、数据迭代位置、随机数状态和必要的数据采样信息。
  • 模型、代码、容器、框架、分布式拓扑和配置版本。
  • 完整性校验值、manifest和成功提交标记。

Checkpoint适合使用多层存储

层级用途设计重点
节点本地NVMe快速暂存、异步落盘缓冲节点故障后可能不可用,不能作为唯一副本
共享高性能存储并行保存、跨节点恢复元数据能力、大文件/小文件模式、并行带宽和拥塞隔离
容量层/对象存储长期保留、跨故障域保护上传完整性、版本、生命周期和恢复回调时间

容量规划要同时考虑保留数量与临时空间

第一轮可用“单个Checkpoint逻辑容量 × 本地同时保留数量”估算基础容量,然后加入写入中间态、分片元数据、转换副本、上传缓冲和文件系统预留。不同优化器和混合精度策略的状态容量不同,不应用参数量直接承诺最终Checkpoint大小。

使用原子提交,避免把半成品当成可恢复版本

  1. 将各rank分片写入临时目录或新版本前缀。
  2. 验证分片数量、大小、校验值和manifest。
  3. 只有所有参与者完成后,才写入成功标记并更新“最新可恢复版本”指针。
  4. 恢复时只读取已提交版本,忽略不完整临时目录。

恢复演练要覆盖哪些故障

故障场景应验证记录
单进程/单GPU失败作业重启、最新完整版本识别进度丢失和恢复时间
单节点失败从共享存储重新分配rank拓扑变化、重分片和数据迭代位置
存储中断半成品不会被误认为成功版本原子提交、重试和清理日志
集群拓扑改变框架是否支持加载时重分片框架版本、并行策略和兼容性

保留策略要避免“只留最新”

建议同时保留高频短周期、低频长周期和里程碑版本。最新检查点可能已经带有训练数值异常、数据问题或文件损坏,因此需要能回退到更早的已验证版本。

先写恢复合同,再决定保存频率

恢复合同要明确可接受的数据回退量RPO、故障后恢复时限RTO、允许改变的并行规模、恢复后第一步验证和责任人。保存间隔应同时考虑单步成本、Checkpoint写入时间、故障概率和重算成本,不能简单套用固定分钟数。

恢复对象必须核对的状态缺失后果
模型与优化器参数、动量、分片映射无法等价续训或收敛轨迹变化
训练进度步数、学习率调度、随机数状态重复或跳过数据,调度错位
数据管道采样器、数据游标与版本样本顺序无法复现
运行环境代码、容器、配置和依赖文件可读但任务无法启动

PyTorch Distributed Checkpoint面向分布式状态保存与加载,可将保存和加载过程分布到多个rank。接口与行为可能随PyTorch版本变化,恢复设计应锁定版本并保存状态字典结构。

Megatron Core的分布式Checkpoint包含对不同并行配置加载与重分片的支持,但优化器格式和兼容边界会随版本调整。迁移并行规模前要核对具体格式,不能只验证模型权重能否读取。

把一次保存拆成写入、校验与提交

训练进程先写入临时目录,为每个分片记录大小与校验信息;全部rank完成后生成清单,再以单一提交标志把该版本变为可见。保留程序只清理已提交且不再受保护的版本。对象存储、并行文件系统和本地NVMe的原子语义不同,必须按目标后端实现。

NeMo对分布式Checkpoint的说明强调并行感知的分片与加载。实际恢复不仅要测同规模重启,还要覆盖节点减少、并行配置变化、分片缺失和元数据损坏等路径。

恢复演练要从空环境开始

演练应在不依赖原训练进程内存的环境中拉起:选择指定Checkpoint、验证清单、加载状态、运行若干步、比较损失与关键状态,再记录恢复时间。只做“能看到文件”或“单个权重可加载”不能证明训练可恢复。

演练记录还要覆盖读取吞吐、各rank到达时间、失败分片、重试次数和恢复后的第一个可比较训练点。若恢复需要人工修改路径、并行参数或状态字典,必须把操作写成受版本控制的运行手册,并再次从干净环境执行。只有人员、脚本和存储副本同时可用,RTO才有实际意义。

赋创可以提供哪些支持

赋创可从AI训练集群和存储基础设施角度,协助梳理Checkpoint容量、并行带宽、本地NVMe与共享存储层级、网络路径、监控、保留策略和恢复演练。最终保存频率和恢复目标应由客户结合训练成本与风险确认。

常见问题

Checkpoint是不是存得越频繁越好?

不是。保存越频繁,训练进度丢失可能越小,但写入带宽、元数据、空间和作业干扰也会增加。应通过PoC找到合理周期。

Checkpoint只写本地NVMe可以吗?

可以用作高速暂存,但不建议作为唯一副本。节点或本地盘故障时,可能同时丢失训练作业和检查点。

备份了Checkpoint是否就不需要恢复演练?

不是。文件存在不等于能够在当前框架、拓扑和配置下成功恢复。恢复演练是发布前的必要验收项。

Checkpoint容量预算的核查口径

容量预算应包含单份完整状态、保留代数、写入临时副本、校验与元数据空间、跨层复制和异常任务残留。赋创可协助存储拓扑、带宽测试、分层路径和恢复演练环境;训练状态清单与恢复正确性由客户训练团队确认。

恢复演练通过后,还应保存本次Checkpoint标识、恢复命令、环境指纹、实际RPO与RTO、校验结果和异常处置记录。后续任何格式或并行策略变更,都以这份记录作为复测基线。

方案咨询

需要把方案落到实际配置?

联系赋创获取算力、软件栈和交付路径建议。

咨询方案浏览指南