Salta ai contenuti

Nanotron - Framework di Training LLM Parallelo 3D Minimalista Cheatsheet

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

MetodoComando
Dal sorgentegit clone https://github.com/huggingface/nanotron && cd nanotron && pip install -e .
Flash attentionpip install flash-attn (consigliato)
RequisitiPyTorch + GPU CUDA
Verificaesegui una configurazione di esempio su 1–2 GPU

Parallelismo 3D

DimensioneDivideChiave config
Data Parallel (DP)Il batch attraverso le replichedp
Tensor Parallel (TP)Livelli attraverso GPUtp
Pipeline Parallel (PP)Il modello in stadipp

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
ChiaveSignificato
run_train.pyPunto di ingresso principale dell”addestramento
--config-fileIl file di configurazione dell”addestramento YAML
pp_enginePipeline schedule (ad es. 1F1B, AFAB)
micro_batch_sizeMicro batch per step
batch_accumulation_per_replicaAccumulo del gradiente

Dati

OpzioneNota
Dataset pre-tokenizzatiPunta config ai dati tokenizzati
Dataset HFFlusso/caricamenti tramite Hugging Face
NanosetFormato dataset efficiente di Nanotron
TokenizerImposta tramite la configurazione del tokenizer

Checkpoint e Riprendi

AspettoCome
Salva frequenzacheckpoints.checkpoint_interval
Salva percorsocheckpoints.checkpoints_path
Riprendi--config-file + punta a un checkpoint salvato
ShardedI checkpoint sono consapevoli del parallelismo

Monitoraggio

MetricaSignificato
loss / lm_lossPerdita dell”addestramento
token/sThroughput
grad normMagnitudine del gradiente (stabilità)
LoggingIntegrazione W&B / TensorBoard

Nanotron vs Altri Framework di Training

AspettoNanotronTorchTitanMegatron-LM
FilosofiaMinimo, hackerabileRiferimento nativo PyTorchFeature-rich, scala massima
Parallelismo3D (dp/tp/pp)4D (aggiunge contesto)3D+ esteso
LeggibilitàAlta (impara da esso)AltaInferiore (grande codebase)
Migliore perComprensione/personalizzazione 3DScaling PyTorch nativoAddestramento su scala frontiera

Risorse