nanogpt

Par mkurman · zorai

npx skills add https://github.com/mkurman/zorai --skill nanogpt

name: nanogpt description: "Pré-entraînement et fine-tuning minimal GPT (nanoGPT). Le dépôt le plus simple et le plus rapide pour entraîner des GPT de taille moyenne avec ~300 lignes de model.py et ~300 lignes de train.py. Reproduit GPT-2 (124M) sur OpenWebText. Supporte DDP multi-GPU/multi-nœud, entraînement au niveau caractère, chargement de poids depuis les checkpoints HuggingFace GPT-2, et fine-tuning simple. Note : remplacé par nanochat pour les nouveaux projets ; ce dépôt reste précieux comme implémentation de référence et outil d'apprentissage." license: MIT license tags: [gpt-pretraining, autoregressive-language-modeling, ddp-training, checkpoint-finetuning, nanogpt] metadata: skill-author: K-Dense Inc. -----|--------|--------|-------|---------|-------------| | Shakespeare char | ~10M | 6 | 6 | 384 | 1 GPU, 3 min | | GPT-2 small | 124M | 12 | 12 | 768 | 8×A100, 4 days | | GPT-2 medium | 350M | 24 | 16 | 1024 | Modify config | | GPT-2 large | 774M | 36 | 20 | 1280 | Modify config | | GPT-2 XL | 1,5B | 48 | 25 | 1600 | Multi-node |

10. Evaluation and Benchmarks

# Benchmark training speed
python train.py config/train_gpt2.py --eval_only

# Loss tracking
# nanoGPT-reported GPT-2 (124M) on OpenWebText: val loss 2.85
# OpenAI GPT-2 (124M) on WebText: val loss ~3.11
# (domain gap between WebText and OpenWebText accounts for difference)

# Custom benchmarks
python train.py config/train_shakespeare_char.py --eval_iters=200

Key Patterns

  1. Les configs sont des fichiers Python, pas du YAML — flexibilité maximale, faciles à comparer
  2. *`init_from='scratch'|'resume'|'gpt2'`** — basculer entre les modes d'entraînement
  3. Toujours utiliser --compile=True sur GPU pour ~2× d'accélération
  4. Accumulation de gradient avec gradient_accumulation_steps émule des batch sizes plus grands
  5. Les données sont des fichiers .bin uint16 bruts — tokenisées une seule fois, chargées via memmap
  6. Initialisation sur meta device pour les gros modèles — n'alloue que si nécessaire
  7. Weight tying entre wte (embedding) et lm_head — pratique standard GPT
  8. Utiliser torchrun pour multi-GPU — pas python -m torch.distributed.launch

References

Skills similaires