Zum Inhalt springen

Nanotron - Minimalistic 3D-Parallel LLM Training Cheatsheet

Nanotron - Minimalistic 3D-Parallel LLM Training Cheatsheet

Nanotron (von Hugging Face) ist ein minimalistisches Framework für das Pretraining großer Sprachmodelle mit 3D-Parallelität — Daten, Tensor und Pipeline Parallel — implementiert in bewusst lesbarem Python. Sein Ziel ist es, klein und hackbar genug zu sein, um es tatsächlich zu verstehen, und dennoch das Training über viele GPUs zu verteilen. Es ist eine starke Wahl, wenn du die Mechanik von verteiltem Pretraining lernen oder anpassen möchtest, ohne die Komplexität der größten Frameworks.

Pretraining ist rechenintensiv; fang klein an. Validiere eine Konfiguration auf einem winzigen Modell und ein paar GPUs, bevor du skalierst.

Installation

MethodCommand
From sourcegit clone https://github.com/huggingface/nanotron && cd nanotron && pip install -e .
Flash attentionpip install flash-attn (empfohlen)
RequirementsPyTorch + CUDA GPUs
Verifyrun an example config on 1–2 GPUs

3D Parallelism

DimensionSplitsConfig key
Data Parallel (DP)Den Batch über Replicasdp
Tensor Parallel (TP)Schichten über GPUstp
Pipeline Parallel (PP)Das Modell in Stufenpp

Das Produkt dp × tp × pp muss deiner Gesamtzahl von GPUs entsprechen.

Configuration (YAML)

Nanotron Training wird durch eine YAML-Konfiguration definiert, die das Modell, Daten, Parallelität und Optimizer beschreibt.

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

Launching Training

# Single node, multiple GPUs
torchrun --nproc_per_node=8 run_train.py --config-file config.yaml

# Generate a starter config
python examples/config_tiny_llama.py
KeyBedeutung
run_train.pyHauptes Training-Einstiegspunkt
--config-fileDie YAML Training-Konfiguration
pp_enginePipeline Schedule (z.B. 1F1B, AFAB)
micro_batch_sizePro-Step Micro Batch
batch_accumulation_per_replicaGradient Accumulation

Data

OptionAnmerkung
Pretokenized datasetsPunkt-Konfiguration auf tokenisierten Daten
HF datasetsStream/Lade über Hugging Face
NanosetNanotrons effizientes Datensatz-Format
TokenizerGesetzt über die Tokenizer-Konfiguration

Checkpoints & Resume

AspectHow
Save frequencycheckpoints.checkpoint_interval
Save pathcheckpoints.checkpoints_path
Resume--config-file + point at a saved checkpoint
ShardedCheckpoints sind Parallelität-aware

Monitoring

MetricBedeutung
loss / lm_lossTraining Loss
tokens/sDurchsatz
grad normGradient Magnitude (Stabilität)
LoggingW&B / TensorBoard Integration

Nanotron vs Other Training Frameworks

AspectNanotronTorchTitanMegatron-LM
PhilosophyMinimal, HackbarPyTorch-Native ReferenceFeature-Rich, Max-Scale
Parallelism3D (dp/tp/pp)4D (adds context)3D+ Extensive
ReadabilityHoch (Learn from it)HochNiedriger (großes Codebase)
Best forUnderstanding/Customizing 3DNative PyTorch ScalingFrontier-Scale Training

Resources