Nanotron - Framework di Training LLM Parallelo 3D Minimalista Cheatsheet
Nanotron (di Hugging Face) è un framework minimalista per il pretraining di grandi modelli linguistici con parallelismo 3D — dati, tensore e pipeline paralleli — implementato in Python deliberatamente leggibile. Il suo obiettivo è essere abbastanza piccolo e hackerabile da capire veramente, pur distribuendo l”addestramento su molte GPU. È una scelta forte quando vuoi imparare o personalizzare la meccanica del pretraining distribuito senza la complessità dei framework più grandi.
Il pretraining è pesante dal punto di vista computazionale; inizia piccolo. Convalida una configurazione su un modello minuscolo e un paio di GPU prima di scalare.
Installazione
| Metodo | Comando |
|---|
| Dal sorgente | git clone https://github.com/huggingface/nanotron && cd nanotron && pip install -e . |
| Flash attention | pip install flash-attn (consigliato) |
| Requisiti | PyTorch + GPU CUDA |
| Verifica | esegui una configurazione di esempio su 1–2 GPU |
Parallelismo 3D
| Dimensione | Divide | Chiave config |
|---|
| Data Parallel (DP) | Il batch attraverso le repliche | dp |
| Tensor Parallel (TP) | Livelli attraverso GPU | tp |
| Pipeline Parallel (PP) | Il modello in stadi | pp |
Il prodotto dp × tp × pp deve essere uguale al tuo numero totale di GPU.
Configurazione (YAML)
L”addestramento di Nanotron è definito da una configurazione YAML che descrive il modello, i dati, il parallelismo e l”optimizer.
parallelism:
dp: 2
tp: 2
pp: 2
pp_engine: 1f1b # pipeline schedule
model:
model_config:
hidden_size: 2048
num_hidden_layers: 24
num_attention_heads: 16
optimizer:
learning_rate_scheduler:
learning_rate: 3.0e-4
optimizer_factory:
adam_beta1: 0.9
adam_beta2: 0.95
tokens:
sequence_length: 2048
micro_batch_size: 4
batch_accumulation_per_replica: 8
Avvio dell”Addestramento
# Singolo nodo, multiple GPU
torchrun --nproc_per_node=8 run_train.py --config-file config.yaml
# Genera una configurazione di partenza
python examples/config_tiny_llama.py
| Chiave | Significato |
|---|
run_train.py | Punto di ingresso principale dell”addestramento |
--config-file | Il file di configurazione dell”addestramento YAML |
pp_engine | Pipeline schedule (ad es. 1F1B, AFAB) |
micro_batch_size | Micro batch per step |
batch_accumulation_per_replica | Accumulo del gradiente |
Dati
| Opzione | Nota |
|---|
| Dataset pre-tokenizzati | Punta config ai dati tokenizzati |
| Dataset HF | Flusso/caricamenti tramite Hugging Face |
| Nanoset | Formato dataset efficiente di Nanotron |
| Tokenizer | Imposta tramite la configurazione del tokenizer |
Checkpoint e Riprendi
| Aspetto | Come |
|---|
| Salva frequenza | checkpoints.checkpoint_interval |
| Salva percorso | checkpoints.checkpoints_path |
| Riprendi | --config-file + punta a un checkpoint salvato |
| Sharded | I checkpoint sono consapevoli del parallelismo |
Monitoraggio
| Metrica | Significato |
|---|
| loss / lm_loss | Perdita dell”addestramento |
| token/s | Throughput |
| grad norm | Magnitudine del gradiente (stabilità) |
| Logging | Integrazione W&B / TensorBoard |
Nanotron vs Altri Framework di Training
| Aspetto | Nanotron | TorchTitan | Megatron-LM |
|---|
| Filosofia | Minimo, hackerabile | Riferimento nativo PyTorch | Feature-rich, scala massima |
| Parallelismo | 3D (dp/tp/pp) | 4D (aggiunge contesto) | 3D+ esteso |
| Leggibilità | Alta (impara da esso) | Alta | Inferiore (grande codebase) |
| Migliore per | Comprensione/personalizzazione 3D | Scaling PyTorch nativo | Addestramento su scala frontiera |
Risorse