Zubnet AI学习Wiki › 检查点
训练

检查点

别名:模型检查点、快照
训练过程中模型状态的保存快照——包括权重、优化器状态、学习率调度和训练步数。检查点让你能在中断后恢复训练(硬件故障、抢占)、评估模型的中间版本,以及在训练退化时回滚到较早版本。每隔几千步保存检查点是标准做法。

为什么重要

训练大型模型需要数天到数月。没有检查点,100,000步训练中在第90,000步的GPU故障意味着从头开始。检查点是保险:它们增量保存进度,这样你只会丢失自上次检查点以来的工作。它们还支持模型选择——有时较早的检查点在评估指标上表现优于最终版本。

深度解析

70B模型的完整检查点包括:模型权重(FP16约140 GB)、优化器状态(Adam约280 GB,它为每个参数存储两个移动平均值)、学习率调度器状态、随机数生成器状态和当前训练步数。总计:每个检查点约420 GB。将其保存到磁盘需要相当长的时间和存储空间,这就是为什么检查点是周期性而非每步进行的。

检查点策略

常见策略:每N步保存(简单但占用大量存储)、只保存最近K个检查点(删除旧的以节省空间)、基于评估指标保存(保留验证损失最佳的检查点),以及使用异步检查点(在后台保存同时继续下一批训练)。大型训练运行通常使用所有这些:在快速NVMe存储上频繁保存本地检查点,加上定期将远程检查点保存到网络存储以进行灾难恢复。

检查点转换

不同框架使用不同的检查点格式:PyTorch的state_dict、Hugging Face的safetensors、FSDP的分片检查点和DeepSpeed的ZeRO检查点。格式之间的转换是常见任务——你可能用DeepSpeed训练(跨GPU分片),但需要单个合并检查点用于推理或上传到Hugging Face。safetensors格式正在成为共享标准,因为它加载快速且内存安全。

相关概念

← 所有术语
← 梯度检查点 检索 →