- MicroGPT est une implémentation minimale d’un modèle GPT écrite en 200 lignes de Python pur, conçue pour permettre de comprendre visuellement l’architecture essentielle des grands modèles de langage
- Il est entraîné sur un jeu de données de 32 000 prénoms humains pour générer de nouveaux noms, et visualise étape par étape les processus de tokenisation, de prédiction, de calcul de perte et de rétropropagation
- Il explique, code à l’appui, les principaux composants de GPT comme Softmax, Cross-Entropy Loss, Backpropagation, Embedding et Attention
- Pendant l’entraînement, il utilise l’optimiseur Adam pour réduire progressivement la perte, puis génère divers noms via le réglage de la température (Temperature Sampling)
- Sous une forme simplifiée de l’algorithme central des grands modèles comme ChatGPT, il s’agit d’un support pédagogique pour comprendre le fonctionnement interne des LLM
Présentation de MicroGPT
- Explication visuelle du processus d’entraînement et d’inférence d’un modèle GPT à partir d’un script Python de 200 lignes écrit par Andrej Karpathy
- Implémenté uniquement en Python pur, sans bibliothèque externe
- Inclut tel quel l’algorithme de base des grands modèles de langage comme ChatGPT
- L’article montre chaque étape du modèle de manière progressive, avec une approche visuelle accessible aux débutants
Jeu de données et objectif d’entraînement
- Utilise comme données d’entraînement 32 000 prénoms humains (par exemple : emma, olivia, ava)
- Chaque prénom est considéré comme un document, et le modèle apprend les motifs de caractères des noms
- Après entraînement, il génère de nouveaux noms comme « kamon », « karai », « anna » ou « anton »
- Le modèle apprend les relations statistiques entre caractères, la longueur des noms et les motifs phonétiques de début et de fin
Conversion du texte en nombres
- Comme un réseau de neurones ne traite que des nombres, chaque caractère est converti en ID entier
- a–z sont mappés à 0–25, et BOS (Beginning of Sequence) à 26
- Le token BOS marque le début et la fin du nom
- Le tiktoken de GPT-4 tokenise en fragments de texte plutôt qu’en caractères, mais le principe reste le même
Prédiction du token suivant
- Le modèle prévoit le caractère suivant à partir du contexte donné
- Exemple : [BOS] → “e”, [BOS, e] → “m”, [BOS, e, m] → “m”, [BOS, e, m, m] → “a”
- Chaque étape crée une paire entrée (contexte) / cible (caractère suivant), selon la même méthode que ChatGPT
Softmax et calcul des probabilités
- La sortie du modèle se compose de 27 logits, convertis en probabilités via Softmax
- Chaque logit est exponentié puis divisé par la somme pour produire une distribution de probabilités
- La soustraction de la valeur maximale est une stabilisation destinée à éviter l’overflow
- Le résultat de Softmax représente la probabilité d’apparition de chaque token suivant
Calcul de la perte : Cross-Entropy
- La précision de la prédiction est calculée par −log(p)
- Plus la probabilité correcte est élevée, plus la perte est faible ; plus elle se rapproche de 0, plus la perte devient grande
- Quand p=1, la perte vaut 0 ; quand p→0, elle tend vers l’infini
- L’entraînement progresse dans le sens de la minimisation de cette perte
Rétropropagation (Backpropagation)
- À partir de la perte, on calcule l’influence de chaque paramètre sur celle-ci
- La dérivation se fait au moyen d’un graphe de calcul où toutes les opérations (add, multiply, exp, log, etc.) sont représentées comme des nœuds
- Chaque nœud stocke ses entrées et sa dérivée locale, puis propage les gradients en sens inverse
- Exemple : L = a⋅b + a (a=2, b=3) → le gradient de a est 4.0 (somme de deux chemins)
- Principe identique à
loss.backward() de PyTorch
Embedding
- Chaque ID de token est converti en vecteur à 16 dimensions afin d’apprendre sa signification
- Les embeddings de token et de position sont additionnés puis utilisés comme entrée
- Le rôle d’un même caractère varie selon sa position
- Après apprentissage, des caractères similaires (par exemple les voyelles) obtiennent des vecteurs similaires
Attention
- Chaque token produit des vecteurs Query, Key et Value
- La pertinence est calculée via le produit scalaire entre Query et Key, puis les poids sont obtenus par Softmax
- La somme pondérée des Value est utilisée comme sortie
- Un Causal Mask est appliqué afin de ne pas référencer les tokens futurs
- Quatre têtes d’attention fonctionnent en parallèle et apprennent des motifs différents
Structure complète de GPT
- Les tokens d’entrée passent par les étapes suivantes
- Embedding + embedding positionnel
- Normalisation RMSNorm
- Attention multi-tête
- Connexion résiduelle (Residual)
- MLP (extension à 64 dimensions → ReLU → réduction à 16 dimensions)
- Nouvelle connexion résiduelle puis calcul des logits de sortie
- Les connexions résiduelles évitent la disparition du gradient
- RMSNorm stabilise l’entraînement en maintenant l’amplitude des activations à un niveau constant
Boucle d’entraînement
- Entraînement répété 1 000 fois
- Sélection du nom → tokenisation → propagation avant → calcul de la perte → rétropropagation → mise à jour des paramètres
- Utilise l’optimiseur Adam
- Convergence stable grâce au momentum et au taux d’apprentissage adaptatif
- La perte initiale diminue d’environ 3.3 à 2.37
- Les noms générés évoluent progressivement d’un état aléatoire vers des formes plus naturelles
Inférence et échantillonnage
- Après l’entraînement, la génération démarre avec BOS puis prédit le token suivant de manière répétée
- La génération se poursuit jusqu’à ce que BOS réapparaisse
- Le Temperature permet d’ajuster la diversité de l’échantillonnage
- Plus elle est basse, plus le résultat est déterministe (moyen) ; plus elle est élevée, plus le résultat est créatif mais instable
- La température adéquate pour générer des noms est d’environ 0.5
- Exemple de sortie : « karai »
Efficacité et passage à l’échelle
- MicroGPT est une implémentation complète simplifiée de l’algorithme central de GPT
- La différence avec ChatGPT n’est qu’une question d’échelle
- Au lieu de 32 000 noms et 4 192 paramètres, on passe à des milliers de milliards de tokens et des centaines de milliards de paramètres
- À la place d’opérations scalaires sur CPU, on utilise des opérations tensorielles sur GPU
- La boucle de base reste la même : tokenisation → embedding → attention → prédiction → perte → rétropropagation → mise à jour
Conclusion
- MicroGPT est un modèle pédagogique permettant d’apprendre de manière intuitive le fonctionnement interne de GPT
- En simplifiant la structure complexe des grands LLM, il permet de faire l’expérience directe des mécanismes essentiels d’un modèle de langage
Aucun commentaire pour le moment.