Aller au contenu

TorchTitan - Préentraînement LLM natif PyTorch

TorchTitan - Préentraînement LLM natif PyTorch

TorchTitan est une plateforme open-source native PyTorch pour le préentraînement de modèles génératifs (LLM) à grande échelle. C’est une implémentation de référence épurée des dernières techniques d’entraînement distribué de PyTorch, composant le parallélisme 4D — parallélisme des données, tenseurs, pipeline et contexte — de manière modulaire, sur la base de FSDP2, torch.compile et checkpointing distribué, avec mise à l’échelle élastique. C’est le point de départ idéal pour les équipes qui veulent préentraîner des modèles en utilisant la mise à l’échelle native PyTorch plutôt qu’une pile tierce.

L’entraînement distribué est intensif en ressources. Validez les configs sur un petit modèle/échelle avant de vous engager dans une grande exécution multi-nœud.

Installation

MéthodeCommande
Depuis la sourcegit clone https://github.com/pytorch/torchtitan && cd torchtitan && pip install -e .
ExigencesPyTorch récent (nightly souvent recommandé), GPUs CUDA
DatasetsUtilise les datasets HF / tokenizers
Vérifierexécuter une config de débogage sur 1 GPU

Dimensions du parallélisme (4D)

DimensionDivise
Parallélisme des données (FSDP2)Le lot, sharding des params/optimiseur/grads
Parallélisme des tenseursLes couches individuelles sur les GPUs
Parallélisme des pipelinesLe modèle en étapes sur les GPUs
Parallélisme du contexteLes longues séquences sur les GPUs

Celles-ci se composent : par ex. dp × tp × pp × cp mappe un modèle sur une grande grille GPU.

Configuration

TorchTitan est piloté par des fichiers de config TOML plus des remplacements en ligne de commande.

# Launch training with a config (multi-GPU via torchrun)
CONFIG_FILE=./train_configs/llama3_8b.toml ./run_train.sh
Section configContrôle
[model]Architecture, taille, saveur
[training]Taille du lot, étapes, longueur seq, LR
[parallelism]data_parallel_shard_degree, tensor_parallel_degree, pipeline_parallel_degree, context_parallel_degree
[optimizer]Optimiseur + hyperparamètres
[checkpoint]Fréquence/chemins des points de contrôle distribués
[activation_checkpoint]Politique de recomputation

Caractéristiques clés

CaractéristiqueAvantage
FSDP2Parallélisme de données entièrement sharder moderne
torch.compileCompilation de graphe pour la vitesse
Checkpointing distribué asynchroneEnregistrer/reprendre efficacement les grandes exécutions
Float8 / basse précisionFormation plus rapide sur le matériel pris en charge
Mise à l’échelle élastiqueS’adapter à la disponibilité des GPU changeante
Initialisation du dispositif MetaConstruire d’énormes modèles sans OOM lors de l’init

Lancement multi-nœud

# torchrun across nodes (conceptual)
torchrun --nnodes=4 --nproc_per_node=8 \
  --rdzv_backend=c10d --rdzv_endpoint=$MASTER:29500 \
  -m torchtitan.train --job.config_file llama3_70b.toml
RemplacerExemple
Degrés parallèles--parallelism.tensor_parallel_degree 8
Étapes--training.steps 10000
Longueur seq--training.seq_len 8192
Compiler--training.compile

Surveillance et points de contrôle

AspectComment
LoggingIntégration TensorBoard / W&B
MétriquesLoss, tokens/sec, MFU (utilisation du modèle FLOPs)
Points de contrôleCheckpoint distribué (DCP) save/load
ReprendrePointez le config vers une étape de checkpoint

TorchTitan vs autres cadres d’entraînement

AspectTorchTitanMegatron-LMNanotron
OrigineÉquipe PyTorchNVIDIAHugging Face
StyleNatif PyTorch, composableRiche en fonctionnalités, matureMinimaliste 3D
Parallélisme4D (dp/tp/pp/cp)3D+ (extensive)3D
Meilleur pourMise à l’échelle native PyTorch de référenceModèles MoE/dense à grande échelleFormation 3D petite et modifiable

Ressources