J'ai testé microGPT, l'IA qui tient sur une feuille A4... Et mon cerveau a explosé

Image d'illustration mettant en scène Arnard le Renard en costume corporate

Le 11 février 2026, Andrej Karpathy publiait sur GitHub une mini IA fonctionnelle en seulement 243 lignes de code et j'ai eu l'impression de sentir mon cerveau exploser.

Imaginez le moteur d'un ChatGPT, Claude ou Gemini, imprimable sur une simple page A4 recto verso ! Dingue ? Oui. Pourtant, c'est le cadeau qu'Andrej Karpathy nous a fait la semaine dernière sur GitHub... Et que j'ai immédiatement eu envie de tester en demandant à Claude Opus 4.6 d'en faire une première traduction en javascript.

Certes, son microGPT ne génère pas des pages de dissertation ou du code complexe comme un Claude, un Gemini ou un ChatGPT. Il ne manipule pas des milliards de paramètres dans des espaces mathématiques à plusieurs milliers de dimensions. Mais il traite une base d'environ 30 000 mots (des prénoms) pour placer 27 tokens dans un espace mathématique à 32 dimensions. Et c'est déjà monstrueux. Car ce court entraînement lui permet de générer ensuite de nouveaux prénoms, exactement de la même manière que ChatGPT génère des phrases entières.

Une nano IA à 27 tokens

Avec son code, Karpathy nous montre donc précisément comment fonctionne une IA générative. Et moi, pour la première fois de ma vie, j'ai vu s'animer littéralement sous mes yeux les concepts que j'enseigne dans les formations ChatGPT que je donne aux asbl de Belgique francophone.

D'abord, on prend un corpus de données. Karpathy a choisi des prénoms du monde entier, soit un fichier .txt de 32 000 entrées (mais il en reste 29 500 une fois qu'on a nettoyé les doublons). Ensuite, on en isole les plus petits constituants possibles : les tokens. Pour nos IA génératives courantes, ces tokens sont généralement des fragments de mots ou des syllabes. Dans microGPT, on revient à l'atome : ce sont les 26 lettres de l'alphabet en minuscules, sans accents ni caractères spéciaux. Plus un 27e token spécial, le BOS (Beginning Of Sequence), qui marque les débuts et les fins de mots.

Copie d'écran : ma version bidouillée'

Ma version "labo" bidouillée de microGPT, avec mes propres corpus de mots. C'est ici.

À lire aussi : Mon meilleur prompt 2025

La tokenisation en direct sous vos yeux

Pour commencer, le modèle arpente son corpus de données afin de transformer chaque token (donc chaque lettre, vous suivez ?) en une liste de nombres. Si l'on opte pour une valeur d'embedding égale à 32, alors les tokens seront caractérisés par une liste de 32 nombres. Cela permet de les placer dans un espace à 32 dimensions où ils seront géométriquement situés les uns par rapport aux autres. Imaginez une sorte de maison de 32 étages, mais dans laquelle chaque étage serait superposé aux 31 autres.

Dans cet espace, chaque lettre devient un point. D'abord, les lettres sont placées au hasard. Mais au fil de l'entraînement, celles qui se comportent de la même manière se rapprochent. Les voyelles migrent vers une même zone. Les consonnes qui s'associent souvent (comme le q et le u) deviennent voisines. Les fins de mot les plus fréquentes (e, s, x) forment leur propre quartier. Et dans cette géographie invisible, la distance entre deux points reflète la proximité statistique.

Pour déterminer cette localisation, le modèle fait des steps : il calcule la probabilité statistique qu'un token en suive un autre, puis il vérifie dans son corpus. Dans les premiers steps, il fait n'importe quoi. Par exemple, il peut estimer que le token k a 55 % de chances de suivre le token z. Mais ensuite, il vérifie en repassant ses données. Là, il constate que ce n'est pas le cas et que son taux d'erreur, la Loss, est important.

Alors il corrige. Et plus il fait de steps, plus la courbe de Loss descend. D'abord rapidement, quand le modèle apprend les régularités grossières (le e est la lettre la plus fréquente, le w est très rare). Puis de plus en plus lentement, quand il capte les bigrammes courants (qu, ch ou ou), puis les motifs plus longs et les terminaisons typiques. Enfin, lorsque la courbe se stabilise, ça signifie que le modèle a extrait toute la structure que sa taille lui permettait d'absorber.

... et on n'a plus qu'à régler la température

À la fin de l'entraînement, chaque token est à sa place dans l'espace vectoriel. Il ne reste plus qu'à générer. Le modèle pose alors un premier token (une lettre), puis calcule celui qui, statistiquement, a le plus de chances de suivre. Et c'est une variable ajustable, la température, qui permet de paramétrer ce choix :

Température proche de 0 : le modèle génère toujours les mêmes séquences, les plus probables. Aucun intérêt.

Température à 2 : il tient compte des stats mais y mêle une grande part de hasard, et produit des séquences absurdes.

Température à 0.6 ou 0.7 : la magie opère. Le modèle génère de tous nouveaux prénoms. Pas parce qu'il a « appris » comment ça marche, mais parce qu'il a observé de puissantes combinaisons statistiques.

Et si on poussait les potards à fond ?

Ce truc m'a rendu fou. D'abord, les prénoms de la version de Karpathy ne m'ont plus suffi. Je me suis senti comme les types d'OpenAI, de Meta ou d'Anthropic qui déchiraient les pages de milliers de livres pour les scanner à la chaîne et entraîner leurs modèles (sauf que j'ai utilisé des bases libres de droits !). Je voulais un corpus d'adjectifs en français, un autre de verbes, un troisième de noms communs. Alors j'ai prompté Claude pour qu'il trouve des données solides et me fourre tout ça dans des fichiers JSON : 24 000 adjectifs, 45 000 substantifs, 7 000 verbes à l'infinitif. Tous nettoyés pour ne garder que les 26 lettres de base, en minuscules, sans accents.

Puis j'ai eu envie de voir ce que ça donne quand on pousse la machine dans ses retranchements. Qu'est-ce qui se passe quand on monte l'embedding à 128 au lieu de 32 ? Et quand on pousse le nombre de steps à 2 000 au lieu de 300 ? Petit à petit, j'ai obligé Claude Opus 4.6 à enrichir l'outil.

Avec mon vieux PC, l'entraînement est devenu très lent. Mais ça a marché, bon sang ! C'était juste là, sur mon écran. J'ai vu de mes propres yeux la courbe de Loss descendre implacablement. Et à la fin, avec mes 45 000 substantifs français, mes 128 dimensions d'embedding et mes 8 têtes d'attention, mon nano modèle de quelques centaines de milliers de paramètres produisait des mots qui n'existent pas mais qui pourraient exister. Des mots qui « sonnent » français, respectent les enchaînements de consonnes et de voyelles de notre langue et arborent des terminaisons crédibles en -tion, -ment, -eur ou -age. Des petits miracles de poésie statistique.

Et si j'ajoutais du RLHF ?

J'étais lâché. J'ai voulu voir ce que ça donne si on imite le RLHF (Reinforcement Learning from Human Feedback), c'est-à-dire l'étape de validation humaine par laquelle passent tous les grands modèles.

Le principe est simple : on sélectionne les mots qu'on aime, on dégage ceux qui ne ressemblent à rien (pouce en haut / pouce en bas). Le modèle se réentraîne légèrement à chaque pouce levé, en alternant le mot choisi et des échantillons aléatoires du corpus pour ne pas oublier le reste. La génération s'affine. On finit par obtenir des mots de plus en plus convaincants.

Enfin, pour observer au plus près la mécanique, j'ai ajouté un moyen de visualiser l'attention portée par le modèle à chaque nouveau token en ajoutant une « carte de chaleur » qui montre ce que l'IA regarde. Et comme au fil de mes expérimentations j'ai fini par bricoler des modèles capables d'inventer des verbes ou des adjectifs incroyables, j'ai voulu ajouter une fonction d'import / export pour sauvegarder ceux qui m'avaient plu.

La boîte noire est ouverte

Le résultat final est là. Une mini IA qui tourne dans votre navigateur internet sans aucune dépendance externe, sans serveur caché, sans requête réseau. Juste du javascript et un corpus de données en JSON.

Bien sûr, elle ne génère que des mots, pas des phrases, et elle se trompe souvent. Mais elle fonctionne EXACTEMENT comme nos LLM (Large Language Models). La seule différence, c'est une question d'échelle. Embedding, attention multi-têtes, réseau de neurones, softmax, rétropropagation du gradient, optimiseur Adam : tout y est. Et ça tient en 243 lignes de code.

C'est vertigineux.

Car si vous regardez le code, si vous observez la courbe de Loss descendre et les mots émerger, vous ne trouvez QUE des maths. Des multiplications de matrices. Des exponentielles. Des dérivées partielles. Des soustractions de gradients. Uniquement des opérations à la portée d'un bon étudiant, voire d'un très bon élève de secondaire. Il n'y a pas une once de magie là-dedans. Pas de « pensée ». Pas d'intention. Pas de compréhension. Tout cela, je suis bien placé pour le savoir, puisque je passe mon temps à le répéter dans mes formations : une IA générative ne comprend rien, ne veut rien, ne sait rien ; elle ne fait que calculer. Sauf que cette fois, cette réalité que j'avais apprise dans les bouquins, je l'ai vue de mes propres yeux.

Comment des opérations arithmétiques peuvent-elles produire ce splendide mirage ? En 1960, le physicien Eugene Wigner publiait un article resté célèbre : The Unreasonable Effectiveness of Mathematics in the Natural Sciences (L'efficacité déraisonnable des mathématiques dans les sciences de la nature, consultablie ici). Sa thèse : il n'y a aucune raison a priori pour que des constructions mathématiques abstraites décrivent aussi bien le fonctionnement réel de l'univers. Par exemple les nombres complexes, inventés comme curiosité algébrique, et qui se sont retrouvés indispensables en mécanique quantique. Pour Wigner, un « cadeau que nous ne comprenons pas et ne méritons pas ».

Les réseaux de neurones donnent le même vertige, version 2026. Des multiplications de matrices qui inventent des mots en français. Personne n'a prouvé que ça devait marcher. Et pourtant c'est le cas.

Avec ces 243 lignes de code, Karpathy ouvre la boîte noire pour les gens comme moi, ceux qui n'ont jamais fait de maths complexes mais qui ont quand même envie de comprendre. Et ce qu'il y a dans la boîte est fascinant. Pas parce que c'est mystérieux. Mais, justement, parce que ça ne l'est plus.

Transparence charte IA : J'ai entièrement rédigé ce billet à la main, en tirant la langue, parce que c'était important pour moi de comprendre et de restituer. Claude Opus 4.6 a corrigé une formulation maladroite et pointé quelques répétitions disgracieuses. C'est aussi lui, en association avec Gemini 3 Pro, qui a forgé l'outil selon mes instructions et en respectant scrupuleusement le code de Karpathy.

Ce billet vous a plu ? Dites-le (anonymement) :