1 points par GN⁺ 2026-03-03 | 1 commentaires | Partager sur WhatsApp
  • 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
    1. Embedding + embedding positionnel
    2. Normalisation RMSNorm
    3. Attention multi-tête
    4. Connexion résiduelle (Residual)
    5. MLP (extension à 64 dimensions → ReLU → réduction à 16 dimensions)
    6. 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

1 commentaires

 
GN⁺ 2026-03-03
Avis Hacker News
  • Il était indiqué qu’à la fin de l’entraînement, le modèle génère des noms comme "kamon", "karai", "anna", "anton", mais en réalité ces noms figurent déjà dans le dataset
    Il vaudrait mieux en utiliser d’autres — lien vers le dataset

    • Oui, ça donnait l’impression que tout l’article était écrit par une IA
    • Merci, je vais corriger ça
  • C’est présenté comme destiné aux débutants, mais je ne sais pas combien de débutants peuvent vraiment comprendre ce genre d’explications mathématiques
    Par exemple, la partie qui explique la formule de la cross-entropy loss m’a semblé beaucoup trop complexe

    • Je ne suis pas non plus un expert, mais comme j’ai quand même quelques connaissances, j’ai l’impression d’utiliser des formulations qui peuvent être difficiles pour un débutant
      Je vais y repenser
  • Ce que je ne comprends pas, c’est comment un modèle aussi simple peut finir par déboguer des problèmes de code arbitraires
    Je me demande comment l’inférence statistique se transforme en « capacité de raisonnement »
    À force d’utiliser Claude Code tous les jours, on finit vraiment par avoir l’impression que c’est le cas

    • Je pense que cette question est le plus grand mystère de la recherche en ML
      L’idée centrale, c’est que « si l’on peut toujours prédire correctement le mot suivant, alors on peut au final répondre correctement à toutes les questions »
      C’est pourquoi les progrès récents s’orientent vers la recherche de la « bonne réponse » via des approches fondées sur l’apprentissage par renforcement comme RLHF ou RLVR
    • Ce n’est pas simplement une inférence statistique au niveau des mots, c’est un processus répété d’inférence hiérarchique de structures sémantiques complexes
    • Un DNN n’est pas une inférence statistique au sens habituel du terme
      Mathématiquement, c’est plus proche d’un problème d’optimisation fondé sur le calcul différentiel
      Il ne s’agit pas seulement d’apprendre les statistiques du texte, mais de trouver une solution complexe pour prédire le token suivant
    • L’expression « inférence statistique » est une explication trop simplifiée
      Les réseaux de neurones ont certes une composante statistique, mais il y a aussi autre chose, comme pour le cerveau humain
  • J’ai lu l’article en entier, et même s’il y avait des passages utiles, j’ai eu une impression de « dessinez le reste de la chouette »
    On avait l’impression que les transitions entre les concepts manquaient, mais la structure interactive était bonne

    • Au début ça allait, puis on tombe rapidement sur des explications du genre « le MLP est un réseau feedforward à 2 couches, projette en 64 dimensions, applique ReLU, puis reprojette en 16 dimensions », et là le niveau de difficulté grimpe d’un coup
      J’aurais aimé que ce soit traité plus en profondeur
  • Je me demande si c’est devenu une mode, ces temps-ci, d’introduire volontairement des fautes d’orthographe ou de grammaire pour montrer qu’un texte n’a pas été écrit par un LLM
    On voyait pas mal de coquilles de ce type aussi bien dans le blog de Karpathy que dans cet article

    • Ce genre de contre-signal (counter signaling) va probablement devenir plus courant à l’avenir
    • J’ai l’impression de m’en rendre compte seulement maintenant
    • Pour être honnête, Karpathy n’est pas une figure si exceptionnelle que ça
      Il a surtout porté le projet Full Self Driving d’Elon pendant longtemps, et il n’est pas non plus resté très longtemps chez OpenAI
      Ces temps-ci, on dirait qu’il se concentre presque uniquement sur le code golf ou l’invention de néologismes
  • L’article original se trouve sur le blog de Karpathy — lien vers l’article microGPT

  • Certains disaient que c’était trop élémentaire, d’autres que c’était trop poussé, mais
    pour quelqu’un comme moi qui ne comprend pas très bien le fonctionnement interne des modèles, c’était une bonne vue d’ensemble
    Je n’ai pas tout compris, mais ça me semble être un bon point de départ pour commencer à apprendre

  • C’était l’un des tutoriels les plus utiles que j’aie vus jusqu’ici
    Même moi qui ne codais pas me suis mis à écrire du code grâce à l’IA
    Les explications sont simples et claires, donc ça aide beaucoup à réfléchir à ce qu’il faut demander à l’IA

  • Il semble que T-Mobile bloque cette page du blog
    lien vers la page d’avertissement de blocage

  • En lisant l’article, j’ai compris pourquoi il affichait des noms, mais je me demandais pourquoi avoir choisi précisément la génération de noms comme exemple

    • Les noms ne sont qu’un problème arbitraire choisi pour faire une démonstration du modèle
      N’importe quelles autres données auraient aussi pu convenir