20250326

什么是 checkpoint?

LLM 领域中,经常能看到一个术语 checkpoint,它是指

模型在训练过程中的某个特定时间点保存下来的参数状态和其他训练相关信息。

具体包含以下内容:

  • 模型参数(weights):网络中各层的权重和偏置。
  • 优化器状态:如 Adam 的动量、学习率等信息,用于继续训练时保持优化器连续性。
  • 训练进度:如已经训练了多少步(steps)、轮次(epochs)。
  • 其他元数据:如学习率调度器状态、训练时的一些配置信息等。

为什么需要 checkpoint?

  • 中断恢复:训练大模型耗时很长,可能因为系统重启、资源回收等原因中断。checkpoint 让训练可以从中断点恢复,而不需要从头开始。
  • 版本保存:用于记录模型在不同训练阶段的表现,可以回滚到较优的模型状态。
  • 推理部署:训练完毕后,通常会选择表现最好的某个 checkpoint,用于推理或上线部署。
  • 微调起点:其他任务上进行迁移学习(fine-tuning)时,可以从某个 checkpoint 加载预训练模型。

checkpoint 的实际使用场景

只做模型部署/推理、不需要继续训练时,只需保存模型参数即可。

如果想要中断恢复训练,必须保存优化器 optimizer 和训练轮次 epoch 信息。

假如需要在预训练模型上做微调,则需要保存模型参数 weights 和 tokenizer。

有时,你会保存某个模型的多个 checkpoint ,以便对模型的不同版本进行性能对比分析。

checkpoint 目录结构

以下是一个典型的 Hugging Face Transformers 训练过程中生成的 checkpoint 目录结构。

CleanShot 2025-03-26 at 22.45.27.jpg

每个 checkpoint-xxxx 目录就是一个完整的保存点,可以独立用来恢复训练或用于推理。