7.7 检查点管理与容错

大规模训练任务往往持续数周甚至数月,硬件故障几乎不可避免。稳健的检查点管理和容错机制是确保训练能够成功完成的工程基石。

7.7.1 检查点的内容与策略

一个完整的训练检查点应保存所有恢复训练所需的状态:模型参数、优化器状态(一阶/二阶矩)、学习率调度器状态、当前步数、随机数生成器状态,以及数据加载器的位置(确保断点续训时不重复使用已见数据)。

检查点保存频率是一个权衡:太频繁会导致大量 I/O 开销(保存一个 70B 模型的完整检查点涉及数百 GB 的写入),太稀少则意味着故障后损失更多的训练进度。常见做法是每 500~2000 步保存一次。

7.7.2 检查点平均

检查点平均(Checkpoint Averaging)是一种简单而有效的提升最终模型性能的技巧。在训练后期,取若干连续检查点的参数权重求平均,通常能获得比任何单个检查点更好的性能(约 0.2-0.5 的改善)。

其原理与模型集成类似:不同检查点对应损失曲面上略有不同的位置,取平均后的模型更接近损失盆地的中心,泛化性能更好。

7.7.3 容错机制

大规模集群上的故障类型包括 GPU 硬件错误、网络中断、节点宕机等。常见的容错策略包括:

  • 自动重启:检测到节点失败后自动从最近的检查点恢复训练

  • 弹性训练:支持在 GPU 数量变化时动态调整并行配置

  • 冗余存储:检查点保存到分布式文件系统或对象存储,避免单点故障

框架如 DeepSpeed、Megatron-LM 和 Ray Train 都提供了不同程度的容错支持。

最后更新于