What is 检查点?
在训练过程中某个特定时间点保存的模型权重和训练状态的快照,支持恢复、评估和选择最佳性能版本。
Definition
检查点是模型在训练过程中某个特定时间点的完整状态的序列化快照。这包括模型权重、优化器状态(Adam的动量和方差缓冲区)、学习率调度器状态、当前步数和epoch数以及随机数生成器状态。定期保存检查点有多种用途:崩溃恢复(硬件故障后恢复训练)、模型选择(根据验证指标选择最佳性能版本)和实验管理(比较训练不同阶段的模型)。
在LLM微调中,检查点通常在每个epoch结束时保存,也可以在固定的步数间隔保存。每个检查点代表一个完整的模型,可以加载用于推理或继续训练。由于检查点捕获了完整的优化器状态,它们可以实现训练的精确恢复——继续的训练产生与不间断训练相同的结果。
检查点管理在规模化时成为重要的运维问题。一个7B模型的单个检查点可能为14-28 GB(取决于精度),加上优化器状态后,总量增至56-112 GB。每500 步保存检查点的训练任务可能累积TB级的检查点数据。团队必须实施保留策略——例如,仅保留按验证损失排名的前3个检查点和最近一个用于崩溃恢复的检查点。
Why It Matters
没有检查点,训练中的任何中断——硬件故障、共享计算资源上的抢占、进程意外终止——都意味着从头开始。对于运行数小时或数天的LLM微调任务来说,这代表着巨大的计算和时间浪费。检查点将训练从一个全有或全无的操作变为一个可恢复的、增量式的过程。
除了恢复之外,基于检查点的模型选择是一种关键的质量技术。模型通常在训练中途达到最佳验证性能,之后才开始在训练数据上过拟合。通过定期保存检查点并在验证集上评估每个检查点,团队可以选择泛化能力最好的检查点,而不是默认使用最终训练状态。
How It Works
检查点保存集成在训练循环中。在配置的间隔——每N步、每个epoch或由验证指标改善触发——训练器将模型状态序列化到磁盘。Hugging Face Transformers、PyTorch Lightning和Axolotl等现代训练框架都支持具有可配置策略的自动检查点管理。
检查点加载是反向过程:序列化的状态被反序列化并加载到模型和优化器对象中。对于仅推理使用,只需要加载模型权重——可以丢弃优化器状态,减少内存占用。有些框架支持检查点分片,将大型检查点拆分到多个文件以进行并行I/O,减少超大模型的保存和加载时间。
Example Use Case
一个团队对13B模型运行5个epoch的微调,每个epoch保存检查点。验证损失在epoch 3之前持续改善,但在epoch 4和5因过拟合而恶化。他们选择epoch 3的检查点作为生产模型,比epoch 5的模型性能高8%。如果没有检查点机制,他们要么部署过拟合的epoch 5模型,要么被迫用不同设置重新运行训练。
Key Takeaways
- 检查点是模型权重和训练状态的序列化快照。
- 它们支持崩溃恢复、模型选择和实验跟踪。
- 基于检查点的模型选择通常比使用最终训练状态产生更好的结果。
- 存储管理很重要——单个检查点可能有数十GB。
- 现代训练框架自动化检查点的保存、加载和保留策略。
How Ertas Helps
Ertas Studio在微调过程中自动保存检查点,让用户比较各检查点的验证指标,以选择最佳性能的模型版本进行GGUF导出和部署。
Related Resources
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.