检查点

Checkpoint

Checkpoint(检查点)是模型训练过程中定期保存的模型权重快照,可用于断点续训、模型评估或版本回滚。

详细解释

Checkpoint(检查点)是深度学习训练中的「存档点」。由于大模型训练成本极高(一次完整训练可能耗费数百万美元和数周时间),如果中途机器故障、数据错误、或者效果不佳,没有 Checkpoint 就意味着灾难性损失。

一个完整的 Checkpoint 通常包含:

  • 模型权重(model.safetensors):训练得到的参数
  • 优化器状态(optimizer.pt):Adam 的动量、二阶矩等
  • 学习率调度器状态:当前 epoch、step 数
  • 随机数种子:保证可复现
  • 分词器配置:vocab.json、merges.txt
  • 训练元数据:loss 曲线、超参数

Checkpoint 策略

策略说明适用场景
每 N 步保存一次防止 OOM 后丢失进度通用训练
只保存最优监控 val_loss,只在更低时保存微调、RLHF
Top-K 保留仅保留最近 K 个,删除更早的长期训练
LoRA 增量保存只保存 adapter 权重(KB 级)7B+ 大模型微调

微调中的 Checkpoint 实战

使用 HuggingFace Transformers 训练时:

from transformers import TrainingArguments

args = TrainingArguments(
    output_dir="./checkpoints",
    save_strategy="steps",
    save_steps=500,            # 每 500 步保存一次
    save_total_limit=3,        # 只保留最近 3 个
    evaluation_strategy="steps",
    load_best_model_at_end=True,  # 训练结束自动加载最优
    metric_for_best_model="eval_loss"
)
trainer = Trainer(model=model, args=args, ...)
trainer.train()

常见问题

LoRA 也需要 Checkpoint 吗?
需要,但 LoRA 权重通常只有几 MB-几十 MB,可以更频繁地保存(每 100 步)。唯元智创控制台提供 LoRA 训练托管,自动管理 Checkpoint 生命周期。
如何从 Checkpoint 恢复训练?
把 Trainer 的 resume_from_checkpoint 参数设为 True,或手动传入 checkpoint 路径。