HyperAIHyperAI

Command Palette

Search for a command to run...

Un GPT en 200 lignes de Python : le cœur algorithmique d’un modèle d’intelligence artificielle, dévoilé

microgpt est un projet artistique et pédagogique qui présente un modèle de langage GPT entièrement fonctionnel en 200 lignes de Python pur, sans dépendances externes. Il incarne l’essence algorithmique des grands modèles de langage (LLM) en réunissant tous les composants clés : dataset, tokeniseur, moteur d’autodérivation (autograd), architecture de réseau neuronal inspirée de GPT-2, optimiseur Adam, boucle d’entraînement et boucle d’inférence. Le tout tient dans un seul fichier, conçu pour être compréhensible, modifiable et exécutable directement. Le dataset utilisé est simple : 32 000 noms en minuscules, un par ligne. Chaque nom est traité comme un document. L’objectif du modèle est d’apprendre les motifs statistiques de ces noms pour en générer de nouveaux, parfois plausibles mais fictifs — comme « karia » ou « emma » — ce qu’on appelle des « hallucinations ». Le tokeniseur est rudimentaire mais efficace : chaque caractère (a-z) est associé à un identifiant entier, plus un token spécial BOS (Beginning of Sequence) pour marquer le début d’un document. Le vocabulaire total compte 27 tokens. Ce système, bien que simple, illustre le principe fondamental : tout texte doit être converti en séquence d’entiers pour être traité par le modèle. L’élément le plus complexe est l’autodérivation, implémentée via une classe Value qui encapsule un nombre scalaire et suit les opérations mathématiques (addition, multiplication, exponentielle, etc.) en gardant trace de la dépendance entre les variables. Cette architecture permet de calculer automatiquement les gradients via la règle de la chaîne, exactement comme PyTorch, mais sur des scalaires. Le calcul de la dérivée se fait en parcourant le graphe de calcul en ordre topologique inverse, en accumulant les gradients à chaque embranchement. Les paramètres du modèle — environ 4 192 dans ce cas — sont initialisés aléatoirement. Ils représentent la « connaissance » du modèle. L’architecture suit celle de GPT-2 : embeddings de tokens et de positions, normalisation RMS, attention multi-têtes, blocs MLP avec connexion résiduelle, et sortie via une projection finale vers le vocabulaire. L’attention permet à chaque token de « regarder » les précédents, ce qui est fondamental pour la compréhension contextuelle. La boucle d’entraînement fonctionne en itérant sur les documents, en faisant passer chaque token à travers le modèle, en calculant la perte (log-vraisemblance négative) et en appliquant la descente de gradient via Adam. La perte diminue progressivement de ~3,3 (aléatoire) à ~2,37, ce qui indique que le modèle apprend bien les régularités des noms. En inférence, le modèle génère de nouveaux noms en partant de BOS, en choisissant aléatoirement le prochain token selon une distribution de probabilités ajustée par un paramètre de température. Une température basse rend les sorties plus prévisibles, une température élevée plus créative. Ce projet est le fruit d’une décennie d’exploration pédagogique, issu de projets comme micrograd, makemore et nanogpt. Il démontre que la complexité des LLM modernes repose sur des principes simples, répétés et combinés. Bien que microgpt soit lent (exécuté en Python pur, sans GPU), il illustre parfaitement les mécanismes sous-jacents à ChatGPT et autres modèles avancés. À l’échelle réelle, les différences sont d’ordre d’efficacité : données massives (trillions de tokens), tokenisation subword (comme BPE), calcul par lots sur GPU, architectures plus profondes et larges, optimisation fine, post-entraînement par apprentissage par renforcement, et optimisations d’inférence (quantification, cache KV, décodage spéculatif). Mais le cœur algorithmique reste identique. En somme, microgpt n’est pas une solution pratique, mais une œuvre de clarté. Il prouve que l’intelligence artificielle des grands modèles de langage repose sur des mathématiques élémentaires, bien comprises, et qu’on peut tout comprendre en 200 lignes. Il invite à la curiosité, à l’expérimentation, et à la prise de conscience que la puissance des LLM ne vient pas de magie, mais de simplicité, de répétition et de calcul massif.

Liens associés

Hacker NewsHacker News
Un GPT en 200 lignes de Python : le cœur algorithmique d’un modèle d’intelligence artificielle, dévoilé | Articles tendance | HyperAI