- Un code d’entraînement de LLM simple créé par Andrej Karpathy en pur C/CUDA
- Prend désormais en charge l’entraînement multi-GPU avec bfloat16 et Flash Attention
- Implémenté en ~3000 lignes de code C/CUDA, avec des performances globalement jusqu’à environ 7 % supérieures à celles de PyTorch
- Ce qui a été réalisé jusqu’à présent
- Entraînement en précision mixte (
bfloat16)
- Nombreuses optimisations de noyaux, dont
FusedClassifier, qui ne matérialise pas les logits normalisés (contrairement à l’actuel torch.compile)
- Flash Attention (directement depuis cuDNN)
- Structure de données
Packed128 forçant l’A100 à utiliser les instructions de chargement 128 bits (LDG.128) et de stockage (STS.128)
- L’entraînement multi-GPU est désormais aussi possible
- Première version de l’entraînement multi-GPU avec MPI+NCCL
- Profilage d’une exécution d’entraînement complète avec NVIDIA Nsight Compute
- Fusion de la PR pour ZeRO (partitionnement de l’état de l’optimiseur) niveau 1
- L’objectif est de créer une stack LLM stable, propre, testée, minimale, robuste et suffisamment optimisée pour reproduire directement en C/CUDA toute la mini-série GPT-2, de 124M à 1,6B de paramètres
1 commentaires
llm.c - entraîner des LLM en C/CUDA brut