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 都提供了不同程度的容错支持。
最后更新于
