12 points par xguru 2024-05-06 | 1 commentaires | Partager sur WhatsApp
  • 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