Chapitre 05 · Architecture · 14 min

Le Transformer, en entier

Assembler les pièces : multi-head attention, feed-forward, normalisation, connexions résiduelles.

Tout ça pour ça

On a maintenant tous les morceaux du puzzle :

  • Le texte devient des tokens (chapitre 02).
  • Les tokens deviennent des vecteurs dans un espace de sens (chapitre 03).
  • L'attention laisse chaque vecteur regarder les autres et se reconfigurer (chapitre 04).

Reste à savoir comment on assemble ces pièces pour obtenir un modèle complet. La réponse, élégamment minimaliste : on les empile.

Le bloc de base

Un Transformer moderne, c'est un même petit bloc, répété N fois. Ce bloc contient deux sous-modules :

  1. Une couche de multi-head attention, qui permet aux tokens de communiquer entre eux.
  2. Un feed-forward network (FFN) — deux transformations linéaires séparées par une non-linéarité — qui transforme chaque token indépendamment.

Autour de ces deux sous-modules, deux structures fixes :

  • LayerNorm avant chaque sous-module : normalise les vecteurs pour stabiliser l'apprentissage.
  • Connexions résiduelles autour de chaque sous-module : la sortie du bloc est l'entrée plus la transformation, jamais la transformation seule.

Survole un sous-bloc pour voir son rôle : l'attention diffuse l'information entre tokens, le feed-forward la transforme localement, la normalisation et les résiduels stabilisent le tout. Empilés 32 ou 96 fois, ils donnent un GPT-4 ou un Claude.

Pourquoi les résiduelles changent tout

C'est probablement l'astuce architecturale la plus importante de la décennie. Sans connexion résiduelle, empiler 96 blocs successifs revient à faire passer un signal à travers 96 transformations en cascade. Le gradient (le signal d'apprentissage) se dilue à chaque passage. Au bout de quelques couches, il ne reste plus rien à apprendre.

Avec une connexion résiduelle, le bloc apprend une modification plutôt qu'une transformation totale : sortie = entrée + f(entrée). Le signal initial passe toujours intact à travers tout le réseau, et chaque bloc l'enrichit un peu.

Sans résiduel, un Transformer profond ne peut pas s'entraîner. Avec, il peut empiler 100+ couches sans broncher.

Le FFN, la moitié oubliée

On parle beaucoup d'attention. On parle moins du FFN, qui contient pourtant deux fois plus de paramètres.

À chaque couche, après l'attention, chaque token traverse un MLP :

FFN(x) = Linear_2(GELU(Linear_1(x)))

Linear_1 projette le vecteur dans une dimension intermédiaire 4× plus large (typiquement 4 × 768 = 3072 pour GPT-2 small). Linear_2 le ramène à la dimension d'origine. Cette expansion-puis-contraction est l'endroit où le modèle stocke la majorité de ses connaissances factuelles — les noms propres, les associations apprises, les motifs récurrents.

Quand on parle de "75 milliards de paramètres" dans un modèle, l'écrasante majorité vit dans les FFN.

Position et causalité

Deux détails qu'on n'a pas encore évoqués :

Encodage de position. L'attention est invariante par permutation : si tu mélanges les tokens d'une phrase, l'attention retourne le même résultat (juste mélangé). Ce n'est pas ce qu'on veut. Pour qu'un LLM sache que "Le chat mange le poisson" diffère de "Le poisson mange le chat", on injecte une information de position dans chaque vecteur d'embedding (positional encoding, RoPE, ALiBi…). Aujourd'hui, RoPE (rotary position embedding) est la convention.

Masque causal. Comme on l'a vu au chapitre 4, dans un modèle de génération, chaque token ne peut regarder que ses prédécesseurs. Le masque causal s'applique à la matrice d'attention : les positions futures sont fixées à −∞ avant le softmax. Ça force le modèle à prédire, pas à copier.

Combien de blocs ?

L'architecture est la même de GPT-2 à GPT-4. Ce qui change, c'est l'échelle :

ModèleBlocsDimensionHeadsParamètres
GPT-2 small1276812117M
GPT-2 XL481600251.5B
GPT-3961228896175B
Llama 3 70B8081926470B

Plus de blocs = plus de raisonnement compositionnel possible (chaque couche peut s'appuyer sur les abstractions de la précédente). Plus de dimensions = plus de capacité par token. Plus de heads = plus de "questions" simultanées.

La sortie : du vecteur à la distribution

À ce stade, le dernier bloc nous donne, pour chaque position, un vecteur de quelques milliers de dimensions. Comment retombe-t-on sur une distribution sur le vocabulaire ?

Une seule étape. On multiplie ce vecteur par une matrice W_out de dimensions (d_model × |vocab|), puis on applique un softmax. Le résultat : pour chaque position, une probabilité sur les ~50 000 tokens du vocabulaire. C'est ça, la sortie d'un LLM — une distribution.

Détail élégant : dans la plupart des modèles, W_out partage ses poids avec la matrice d'embedding d'entrée (weight tying). La même transformation qui mappe le token 5234 vers un vecteur, en sens inverse, mappe un vecteur vers la probabilité du token 5234. Économie de paramètres, et meilleure généralisation.

Mixture of Experts : tous les paramètres ne s'activent pas

Une variante architecturale est devenue dominante dans les modèles récents : Mixture of Experts (MoE). Mixtral, DeepSeek, Llama 4, GPT-4, Gemini — tous l'utilisent.

L'idée : au lieu d'un seul FFN par bloc, on en place plusieurs en parallèle (typiquement 8 à 128 experts). À chaque token, un petit réseau de routage (router) en sélectionne deux ou quatre — les plus pertinents pour ce token. Seuls ces experts s'activent.

Conséquence : un modèle peut avoir 400 milliards de paramètres "totaux" mais n'en activer que 50 milliards par token. Capacité d'un grand modèle, coût de calcul d'un petit. C'est ce qui rend Mixtral 8×7B (47 milliards de paramètres) compétitif avec des modèles denses bien plus gros à l'inférence.

Le compromis : la mémoire VRAM doit accueillir tous les experts (sinon il faut les swap), et le routage introduit une couche d'instabilité à l'entraînement. C'est un domaine encore très actif.

Le miracle de la simplicité

Tout l'édifice tient sur un seul motif, répété, normalisé, additionné à lui-même. Pas de structures spécifiques pour la grammaire. Pas de modules séparés pour la sémantique. Pas de règles linguistiques codées.

Un Transformer ne sait rien de la langue. Il sait juste mélanger des vecteurs en regardant qui ressemble à qui.

Toute la complexité émerge de l'entraînement — c'est le sujet du chapitre suivant.

Mis à jour le

Le Transformer, en entier · Step by Token