Files
LLaMA-Factory/docs/zh/feature-guide/model_saving.md
2026-09-14 16:09:48 +08:00

62 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 模型保存与恢复
训练结束时 `save_model()` 保存最终模型;训练过程中可以按 step 或 epoch 保存 checkpoint。
## 保存训练 Checkpoint
`save_steps` 按更新步数触发保存,`save_epochs` 按数据遍历进度触发保存。同时设置时,训练器根据 `save_epochs` 重新计算并覆盖 `save_steps`。纯 `dynamic_batching` 只支持按 step 保存。
以下字段位于训练 YAML 的顶层:
```yaml
save_steps: 500
save_epochs: null
save_total_limit: 3
save_ckpt_as_hf: false
```
`save_steps` 与 `save_epochs` 控制触发时机。`save_total_limit` 删除最旧的完整 checkpoint。
## 从 Checkpoint 恢复训练
`resume_from_checkpoint` 恢复训练状态。以下配置从当前 `output_dir` 中自动查找 checkpoint:
```yaml
resume_from_checkpoint: auto
```
`auto` 在 `output_dir` 下寻找最新的完整 checkpoint,也可以直接填写 checkpoint 路径。未设置 `resume_from_checkpoint` 时,即使 `output_dir` 中存在 checkpoint,也不会触发续训。
## 不同后端的保存格式
| 训练后端 | 默认 checkpoint | `save_ckpt_as_hf: true` |
|----------|-------------------|--------------------------|
| FSDP2 / FSDPTurbo | 保存用于续训的分布式 checkpoint | 额外在 checkpoint 中生成 `hf_model` 目录 |
| DeepSpeed | 保存 DeepSpeed 训练状态 | 额外在 checkpoint 中生成 `hf_model` 目录 |
| 单设备 / DDP | 模型权重使用 HF 格式保存 | 不生成额外的 `hf_model` 目录 |
FSDP2、FSDPTurbo 和 DeepSpeed 启用 `save_ckpt_as_hf` 后,仍会保留用于恢复训练的原始 checkpoint,同时额外保存 HF 格式模型。聚合完整模型权重会提高保存时的内存占用。
`save_ckpt_as_hf: false` 是默认值,保存中间 checkpoint 时不额外聚合 HF 格式权重。
## 初始化权重与恢复训练
| 配置 | 用途 | 加载时机 | 恢复内容 |
|------|------|----------|----------|
| `dist_config.dcp_path` | 使用 DCP 权重初始化模型 | FSDP2/FSDPTurbo 模型分片阶段 | 仅模型权重 |
| `resume_from_checkpoint` | 从训练 checkpoint 继续训练 | Trainer 初始化阶段 | 模型、优化器、学习率调度器、批次进度、训练步数及可用的随机数状态 |
以下配置使用已有 DCP 模型权重初始化新训练:
```yaml
dist_config:
name: fsdp2
dcp_path: path/to/dcp_model
```
以下配置从 `output_dir` 中最新的完整 checkpoint 恢复训练状态:
```yaml
resume_from_checkpoint: auto
```