TorchTitan - Pretraining LLM Nativo PyTorch Cheatsheet
TorchTitan è una piattaforma open-source nativa PyTorch per il pretraining su larga scala di modelli generativi (LLM). È un”implementazione di riferimento pulita delle tecniche di addestramento distribuito più recenti di PyTorch, componendo parallelismo 4D — dati, tensore, pipeline e contesto paralleli — in modo modulare, in cima a FSDP2, torch.compile e checkpoint distribuito, con scaling elastico. È il punto di partenza preferito per i team che vogliono preaddestramento di modelli usando scaling nativo PyTorch piuttosto che uno stack di terze parti.
L”addestramento distribuito è ad alta intensità di risorse. Convalida le configurazioni su un modello/scala piccolo prima di impegnarti in una grande esecuzione multi-nodo.
Installazione
| Metodo | Comando |
|---|
| Dal sorgente | git clone https://github.com/pytorch/torchtitan && cd torchtitan && pip install -e . |
| Requisiti | PyTorch recente (spesso consigliato notturno), GPU CUDA |
| Dataset | Utilizza dataset/tokenizer HF |
| Verifica | esegui una configurazione di debug su 1 GPU |
Dimensioni del Parallelismo (4D)
| Dimensione | Divide |
|---|
| Data Parallel (FSDP2) | Il batch, parametri sharding/optimizer/grads |
| Tensor Parallel | Singoli livelli attraverso GPU |
| Pipeline Parallel | Il modello in stadi attraverso GPU |
| Context Parallel | Sequenze lunghe attraverso GPU |
Questi si compongono: ad es. dp × tp × pp × cp mappa un modello su una mesh GPU grande.
Configurazione
TorchTitan è guidato da file di configurazione TOML più override da riga di comando.
# Avvia l''addestramento con una configurazione (multi-GPU via torchrun)
CONFIG_FILE=./train_configs/llama3_8b.toml ./run_train.sh
| Sezione config | Controlla |
|---|
[model] | Architettura, dimensione, sapore |
[training] | Dimensione batch, step, lunghezza seq, LR |
[parallelism] | data_parallel_shard_degree, tensor_parallel_degree, pipeline_parallel_degree, context_parallel_degree |
[optimizer] | Optimizer + iperparametri |
[checkpoint] | Frequenza/percorsi checkpoint distribuiti |
[activation_checkpoint] | Politica di ricomputazione |
Caratteristiche Principali
| Caratteristica | Beneficio |
|---|
| FSDP2 | Parallelismo dei dati completamente condiviso moderno |
torch.compile | Compilazione del grafico per la velocità |
| Checkpoint distribuito asincrono | Salva/riprendi esecuzioni enormi in modo efficiente |
| Float8 / bassa precisione | Addestramento più veloce su hardware supportato |
| Scaling elastico | Adattati alla disponibilità di GPU in cambiamento |
| Meta-device init | Costruisci enormi modelli senza OOM all”init |
Avvio Multi-Nodo
# torchrun attraverso i nodi (concettuale)
torchrun --nnodes=4 --nproc_per_node=8 \
--rdzv_backend=c10d --rdzv_endpoint=$MASTER:29500 \
-m torchtitan.train --job.config_file llama3_70b.toml
| Override | Esempio |
|---|
| Gradi paralleli | --parallelism.tensor_parallel_degree 8 |
| Step | --training.steps 10000 |
| Lunghezza seq | --training.seq_len 8192 |
| Compila | --training.compile |
Monitoraggio & Checkpoint
| Aspetto | Come |
|---|
| Logging | Integrazione TensorBoard / W&B |
| Metriche | Perdita, token/sec, MFU (utilizzo FLOP del modello) |
| Checkpoint | Checkpoint distribuito (DCP) salva/carica |
| Riprendi | Punta la configurazione a uno step di checkpoint |
TorchTitan vs Altri Framework di Training
| Aspetto | TorchTitan | Megatron-LM | Nanotron |
|---|
| Origine | Team PyTorch | NVIDIA | Hugging Face |
| Stile | Nativo PyTorch, componibile | Feature-rich, maturo | Minimalista 3D |
| Parallelismo | 4D (dp/tp/pp/cp) | 3D+ (esteso) | 3D |
| Migliore per | Scaling di riferimento nativo PyTorch | MoE/denso di scala massima | Addestramento 3D piccolo e hackerabile |
Risorse