Chapter 03

快速上手:跑通官方 Llama-3 8B

📌 commit af33f76一行 torchrun,30 分钟跑出 baseline

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

典型指标:

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这章你需要带走的