Module 09 · Comprendre depuis zéro

Implémenter un Transformer de zéro

Écrire à la main un tokenizer et l'attention, construire un petit GPT complet, l'entraîner sur plus de trente mille poèmes Tang jusqu'à ce qu'il écrive des poèmes, puis la génération, le cache KV, et ce qui sépare encore le petit GPT d'un vrai grand modèle.

Leçons

  1. 01
    Écrire un tokenizer BPE à la main

    Le module 01 a dit que le modèle voit des tokens. Cette leçon écrit de vos mains un tokenizer BPE au niveau des octets, l'entraîne sur des poèmes Tang, montre comment il reconstitue pas à pas, à partir d'octets, des caractères chinois et des mots courants, et fait voir ses défauts sur de petites données.

    45 minutes · Intermédiaire
  2. 02
    Le mécanisme d'attention

    Pour comprendre son propre sens, un caractère doit regarder quels caractères le précèdent. Partir du plus simple, « la moyenne de tous les caractères précédents », puis ajouter pas à pas requête, clé et valeur, masque causal et mise à l'échelle, pour écrire une tête d'attention complète, vérifiée avec l'implémentation de PyTorch.

    50 minutes · Approfondi
  3. 03
    Attention multi-têtes et encodage de position

    Une tête d'attention ne peut regarder les caractères précédents que selon un seul critère ; avec plusieurs têtes, on regarde plusieurs choses à la fois. Et l'attention elle-même ne distingue pas l'ordre des caractères, il faut donc lui indiquer la position. Cette leçon rend ces deux points visibles par l'expérience, et tombe sur un résultat inattendu.

    40 minutes · Approfondi
  4. 04
    Construire un GPT complet

    Assembler attention, réseau à propagation avant, connexions résiduelles et LayerNorm en un bloc Transformer, en empiler plusieurs, ajouter embedding et couche de sortie : voilà un GPT complet. Lire gpt.py section par section, et compter où se trouvent ses 1,6 million de paramètres.

    50 minutes · Approfondi
  5. 05
    L'entraîner : apprendre au modèle à écrire des poèmes Tang

    Entraîner le GPT de la leçon précédente sur trente-quatre mille poèmes Tang, sept minutes sur le CPU d'un portable, et le voir passer du charabia aux vers de cinq et sept caractères. Puis ne lui donner que trois cents poèmes, et voir comment il les apprend par cœur au lieu d'apprendre à écrire des poèmes.

    50 minutes · Approfondi
  6. 06
    Générer du texte et le cache KV

    Un modèle entraîné ne fait que noter le caractère suivant ; comment passer des scores à un poème ? Cette leçon essaie avec notre propre GPT la température, top-k, la continuation et l'acrostiche, puis implémente le cache KV et mesure combien de calcul répété il épargne.

    40 minutes · Approfondi
  7. 07
    Du petit GPT au grand modèle

    Notre petit GPT écrit des poèmes, mais ne sait pas répondre aux questions. Entre lui et un grand modèle capable de converser, il y a l'échelle, le pré-entraînement, le fine-tuning sur instructions et l'alignement sur les préférences. Cette leçon explique chaque étape avec les vrais chiffres des articles de recherche.

    30 minutes · Intermédiaire

Le module 01 l'a dit : un grand modèle ne fait qu'une chose, prédire le token suivant. Ce module construit de vos mains un modèle qui fait exactement cela.

Nous allons écrire un GPT de zéro : tokenizer, attention, multi-têtes, encodage de position, bloc Transformer, tout à la main, sans aucune bibliothèque de modèles toute faite. Puis nous l'entraînerons sur trente-cinq mille poèmes à forme régulière tirés de l'« Anthologie complète des poèmes Tang » (全唐诗). Il n'a que 1,61 million de paramètres, s'entraîne en 7 minutes environ sur le CPU d'un portable, et écrit alors des poèmes tout à fait présentables de cinq ou sept caractères par vers.

Ce qui le sépare de ChatGPT ou DeepSeek tient surtout à l'échelle et aux méthodes d'entraînement ; le principe est le même. À la fin de ce module, vous saurez lire la structure principale du code de vrais grands modèles.

Pourquoi cet ordre

D'abord la tokenisation, car l'entrée du modèle, ce sont des tokens. Puis l'attention, cœur du Transformer ; la leçon 3 ajoute les têtes multiples et l'information de position, et la leçon 4 assemble toutes les pièces en un modèle complet. La leçon 5 l'entraîne, la leçon 6 génère du texte avec lui et explique l'optimisation la plus importante de l'inférence, le cache KV. La dernière leçon n'écrit pas de code : elle explique quelles étapes séparent encore notre petit GPT d'un vrai grand modèle capable de converser.

Le code de ce module se trouve dans code/09-transformer/, et gpt.py est le modèle partagé par les leçons suivantes. Il faut avoir terminé le module 08, en particulier la rétropropagation, PyTorch et l'entropie croisée.

Vous avez terminé quand

  • vous savez écrire à la main un tokenizer BPE au niveau des octets, et expliquer pourquoi il découpe très finement quand les données sont rares.
  • vous savez écrire une attention avec masque causal et mise à l'échelle, et dire à quoi servent q, k et v.
  • vous savez expliquer pourquoi l'attention multi-têtes et l'encodage de position sont nécessaires, et que le masque causal lui-même laisse fuiter l'information d'ordre.
  • vous savez lire gpt.py section par section, et calculer le nombre de paramètres de chaque partie.
  • vous savez entraîner sur votre propre ordinateur un petit GPT qui écrit des poèmes, et juger d'après la courbe de perte et les textes générés s'il apprend ou s'il récite.
  • vous savez expliquer la température, top-k et le cache KV, et mesurer l'accélération apportée par le cache KV.
  • vous savez dire ce que font respectivement le pré-entraînement, le fine-tuning sur instructions et l'alignement sur les préférences.

Le code de ce module

Le code et les sorties des programmes sont reproduits tels qu’ils ont tourné : commentaires et sorties sont donc en chinois.