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
| Method | Command |
|---|
| From source | git clone https://github.com/huggingface/nanotron && cd nanotron && pip install -e . |
| Flash attention | pip install flash-attn (empfohlen) |
| Requirements | PyTorch + CUDA GPUs |
| Verify | run an example config on 1–2 GPUs |
3D Parallelism
| Dimension | Splits | Config key |
|---|
| Data Parallel (DP) | Den Batch über Replicas | dp |
| Tensor Parallel (TP) | Schichten über GPUs | tp |
| Pipeline Parallel (PP) | Das Modell in Stufen | pp |
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
| Key | Bedeutung |
|---|
run_train.py | Hauptes Training-Einstiegspunkt |
--config-file | Die YAML Training-Konfiguration |
pp_engine | Pipeline Schedule (z.B. 1F1B, AFAB) |
micro_batch_size | Pro-Step Micro Batch |
batch_accumulation_per_replica | Gradient Accumulation |
Data
| Option | Anmerkung |
|---|
| Pretokenized datasets | Punkt-Konfiguration auf tokenisierten Daten |
| HF datasets | Stream/Lade über Hugging Face |
| Nanoset | Nanotrons effizientes Datensatz-Format |
| Tokenizer | Gesetzt über die Tokenizer-Konfiguration |
Checkpoints & Resume
| Aspect | How |
|---|
| Save frequency | checkpoints.checkpoint_interval |
| Save path | checkpoints.checkpoints_path |
| Resume | --config-file + point at a saved checkpoint |
| Sharded | Checkpoints sind Parallelität-aware |
Monitoring
| Metric | Bedeutung |
|---|
| loss / lm_loss | Training Loss |
| tokens/s | Durchsatz |
| grad norm | Gradient Magnitude (Stabilität) |
| Logging | W&B / TensorBoard Integration |
Nanotron vs Other Training Frameworks
| Aspect | Nanotron | TorchTitan | Megatron-LM |
|---|
| Philosophy | Minimal, Hackbar | PyTorch-Native Reference | Feature-Rich, Max-Scale |
| Parallelism | 3D (dp/tp/pp) | 4D (adds context) | 3D+ Extensive |
| Readability | Hoch (Learn from it) | Hoch | Niedriger (großes Codebase) |
| Best for | Understanding/Customizing 3D | Native PyTorch Scaling | Frontier-Scale Training |
Resources