Chapter 03
快速上手:跑通官方 Llama-3 8B
TorchTitan 的入门体验非常顺:找一个 toml、torchrun 启动。本章在 8×A100 上预训 Llama-3 8B 跑通。
3.1看一份 train_config
路径:train_configs/llama3_8b.toml,关键段落:
[job]
dump_folder = "./outputs"
description = "Llama 3 8B training"
[profiling]
enable_profiling = false
save_traces_folder = "profile_trace"
profile_freq = 100
[model]
name = "llama3"
flavor = "8B"
norm_type = "rmsnorm"
tokenizer_path = "./tokenizer/tokenizer.model"
[optimizer]
name = "AdamW"
lr = 3e-4
[training]
batch_size = 1
seq_len = 8192
warmup_steps = 200
max_norm = 1.0
steps = 1000
data_parallel_replicate_degree = 1
data_parallel_shard_degree = -1 # auto
tensor_parallel_degree = 1
compile = false
dataset = "c4"
[experimental]
pipeline_parallel_degree = 1
enable_async_tensor_parallel = false
context_parallel_degree = 1
[checkpoint]
enable_checkpoint = true
folder = "checkpoint"
interval = 500
[float8]
enable_float8_linear = false
3.2启动
# 单机 8 卡
NGPU=8 CONFIG_FILE=./train_configs/llama3_8b.toml \
./run_llama_train.sh
# 等价 torchrun
torchrun --nproc_per_node=8 \
torchtitan/train.py \
--job.config_file ./train_configs/llama3_8b.toml
训完产物:
./outputs/
├── tb/ # tensorboard 日志
├── memory_snapshot/ # memory tracker(如开启)
└── checkpoint/ # dcp 格式 ckpt
3.3命令行 override
toml 字段都能命令行覆盖,用 . 分隔层级:
torchrun --nproc_per_node=8 torchtitan/train.py \
--job.config_file ./train_configs/llama3_8b.toml \
--training.steps 100 \
--training.batch_size 2 \
--optimizer.lr 1e-4 \
--training.compile true
3.4多机
# 节点 0
torchrun --nproc_per_node=8 --nnodes=4 \
--node_rank=0 \
--master_addr=10.0.0.5 --master_port=12345 \
torchtitan/train.py --job.config_file ./llama3_70b.toml
# 节点 1/2/3 同样,node_rank 不同
3.5训练过程看什么
# tensorboard
tensorboard --logdir ./outputs/tb
# stdout 每隔 N 步
[GPU0] step: 100 loss: 3.50 memory: 65.2GB(82.3%) mfu: 52.1% iter_time: 0.85s
典型指标:
- loss:Llama-3 8B 在 C4 上从 ~10 降到 ~3.5 需要 ~10k step;
- mfu:A100 上 50% 算合格;
- memory:< 90% GPU 总容量;
- iter_time:8B / 8K seqlen ≈ 0.8-1.0s。
3.6常见踩坑
| 现象 | 处理 |
|---|---|
| "tokenizer not found" | 下载 Llama-3 tokenizer.model 放 ./tokenizer/ |
| OOM 第 0 step | 降 seq_len;开 activation checkpoint;增 dp_shard_degree |
| data_parallel_shard_degree=-1 算错 | 显式指定(比如 8) |
| data loader 喂不上 | 装 datasets >= 2.20;c4 第一次跑要预下载 |
3.7这章你需要带走的
- 启动两步:选 toml + torchrun;
- 命令行 override 用
--段.字段 值; - 典型 8 卡 8B 配置在
train_configs/llama3_8b.toml; - tensorboard 实时看 loss / mfu / memory。