[ PROMPT_NODE_22736 ]
checkpoint
[ SKILL_DOCUMENTATION ]
# TorchTitan 中的检查点 (Checkpointing)
TorchTitan 使用 PyTorch 分布式检查点 (DCP) 来实现容错且可互操作的检查点保存。
## 基本配置
toml
[checkpoint]
enable = true
folder = "checkpoint"
interval = 500
## 仅保存模型 (更小的检查点)
排除优化器状态和训练元数据:
toml
[checkpoint]
enable = true
last_save_model_only = true
export_dtype = "bfloat16" # 可选:以低精度导出
## 加载时排除键
针对修改后的设置进行部分检查点加载:
toml
[checkpoint]
enable = true
exclude_from_loading = ["data_loader", "lr_scheduler"]
CLI 等效命令:
bash
--checkpoint.exclude_from_loading data_loader,lr_scheduler
## 创建种子检查点 (Seed Checkpoints)
流水线并行 (Pipeline Parallelism) 所必需,以确保初始化一致:
bash
NGPU=1 CONFIG_FILE= ./run_train.sh
--checkpoint.enable
--checkpoint.create_seed_checkpoint
--parallelism.data_parallel_replicate_degree 1
--parallelism.data_parallel_shard_degree 1
--parallelism.tensor_parallel_degree 1
--parallelism.pipeline_parallel_degree 1
--parallelism.context_parallel_degree 1
--parallelism.expert_parallel_degree 1
这将在单个 CPU 上初始化,以确保在任何 GPU 数量下都能实现可复现的初始化。
## 异步检查点
通过异步写入减少检查点开销:
toml
[checkpoint]
enable = true
async_mode = "async" # 选项: "disabled", "async", "async_with_pinned_mem"
## HuggingFace 转换
### 训练期间
直接以 HuggingFace 格式保存:
toml
[checkpoint]
last_save_in_hf = true
last_save_model_only = true
从 HuggingFace 加载:
toml
[checkpoint]
initial_load_in_hf = true
[model]
hf_assets_path = "./path/to/hf/checkpoint"
### 离线转换
无需运行训练即可转换:
bash
# HuggingFace -> TorchTitan
python ./scripts/checkpoint_conversion/convert_from_hf.py
--model_name llama3
--model_flavor 8B
# TorchTitan -> HuggingFace
python ./scripts/checkpoint_conversion/convert_to_hf.py
--hf_assets_path ./assets/hf/Llama3.1-8B
--model_name llama3
--model_flavor 8B
### 示例
bash
python ./scripts/convert_from_hf.py
~/.cache/huggingface/hub/models--meta-llama--Meta-Llama-3-8B/snapshots/8cde5ca8380496c9a6cc7ef3a8b46a0372a1d920/
./initial_load_path/
--model_name llama3
--model_flavor 8B
## 转换为 Si