大模型断点续训配置:从保存检查点到异常恢复

大模型训练动辄几十小时甚至几天,中途断电、OOM、机器故障都会让训练中断。
断点续训配置的核心就是定期把模型权重、优化器状态和训练步数保存到磁盘,并在重启后从最近的检查点继续训练,而不是从头开始。
本文按零基础可操作的方式,讲清楚保存策略、恢复命令和验证方法。

先确认你的训练框架和检查点机制

不同训练框架的断点续训参数不同,先确认你用的是原生 PyTorch、Hugging Face Transformers Trainer,还是 DeepSpeed 启动。
本文以常见的 transformers + deepspeed 组合为例,系统环境为 Linux,训练脚本通过 torchrun 或 deepspeed 命令启动。

准备条件:

  • 训练脚本已能正常启动并跑通前几个 step。
  • 有一个可写的持久化目录存放检查点,例如 /data/checkpoints/my_model。
  • 确认磁盘剩余空间能容纳至少 2 到 3 个完整检查点(大模型检查点通常包含模型权重、优化器状态和调度器状态,体积较大)。
  • 记录当前训练脚本的启动命令和关键参数,后续恢复要用同一套参数。

配置检查点保存:频率和内容都要对

断点续训能否成功,第一步取决于检查点是否保存完整。
在 Transformers Trainer 中,常用参数如下:

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="/data/checkpoints/my_model",
    save_strategy="steps",
    save_steps=500,
    save_total_limit=3,
    logging_steps=50,
    report_to="none",
    # 其他训练参数...
)

关键点说明:

  • save_strategy="steps":按训练步数保存,而不是按 epoch。大模型一个 epoch 可能很长,按步保存更实用。
  • save_steps=500:每 500 步保存一次。步数太小会频繁写盘拖慢训练,太大则中断后丢失的进度多,建议根据单步耗时和磁盘 IO 权衡。
  • save_total_limit=3:最多保留 3 个检查点,避免磁盘被写满。注意该参数会删除旧检查点,如果磁盘充足可适当调大。
  • output_dir 必须指向持久化存储,不要放在 /tmp 或容器临时层。

如果使用 DeepSpeed,还需要在 DeepSpeed 配置 JSON 中确认检查点相关设置。
DeepSpeed 默认会在 output_dir 下生成 global_stepXXXXXX 目录,里面包含 mp_rank_00_model_states.pt、优化器状态分片等文件。
不要手动修改这些文件名。

中断后恢复训练:命令和参数要一致

训练中断后,先进入检查点目录,确认最新的 global_step 目录存在且文件完整:

ls -lh /data/checkpoints/my_model
# 应看到类似 global_step500、global_step1000 的目录
ls -lh /data/checkpoints/my_model/global_step1000

恢复训练时,在启动命令中加入 --resume_from_checkpoint 参数,指向具体检查点目录:

torchrun --nproc_per_node=8 train.py \
  --resume_from_checkpoint /data/checkpoints/my_model/global_step1000 \
  --output_dir /data/checkpoints/my_model \
  --deepspeed ds_config.json \
  # 其他训练参数保持不变

如果使用 deepspeed 命令启动,写法类似:

deepspeed --num_gpus=8 train.py \
  --resume_from_checkpoint /data/checkpoints/my_model/global_step1000 \
  --output_dir /data/checkpoints/my_model \
  --deepspeed ds_config.json

注意:恢复时训练脚本的其他超参数(学习率、batch size、数据路径)应与中断前保持一致,否则可能造成学习率调度错位或数据顺序异常。

常见报错和避坑清单

  • 报错找不到 trainer_state.json:说明检查点目录不完整,可能是保存过程中被中断。优先使用上一个完整的 global_step 目录。
  • 恢复后 loss 突然变大:检查是否误用了不同学习率或数据打乱种子,确认 resume_from_checkpoint 指向的步数与日志一致。
  • DeepSpeed 恢复报 mp_rank 文件缺失:通常是保存时进程数变化或文件被清理。不要手动拼接不同检查点的分片文件。
  • 磁盘写满导致训练挂起:save_total_limit 不要设得过大,并定期用 df -h 查看检查点目录所在分区。
  • 容器环境重启后检查点丢失:确保 output_dir 挂载的是宿主机持久化卷,而不是容器内部路径。

验证续训是否真正生效

恢复后观察训练日志中的 global_step 是否从上次保存的步数继续递增,而不是从 0 开始。
同时查看 loss 曲线是否与中断前平滑衔接。
如果日志显示从 0 开始,说明 resume_from_checkpoint 没有生效,检查参数路径是否写错或启动命令是否被外层脚本覆盖。

最后,建议在正式长跑前用少量数据做一次“手动中断再恢复”的演练,确认检查点目录、恢复命令和磁盘空间都正常,再投入正式训练。
断点续训配置不是一次设置就永远可靠,每次调整训练脚本后都应复查保存和恢复参数是否仍然匹配。

分享到:
上一篇
大模型训练日志分析:从日志定位 loss 异常与训练卡死
下一篇
大模型数据标注教程:从零搭建可用的标注流程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意