Aller au contenu principal

Chargement du lab visuel…

#transformer-blocLLM et transformers

Le bloc transformer : attention, résidus, normalisation, FFN.

Ce que tu vas manipuler

  1. Bienvenue dans #transformer-bloc. À l'écran, un transformer jouet vu en coupe : en bas, la boîte jaune des embeddings + positions ; au-dessus, L = 2 blocs empilés, chacun fait d'une sous-couche d'attention (bleue) et d'un FFN (rose), encadrées par une bande grise de normalisation et, à gauche, un arc jaune : la connexion résiduelle. En haut, la sortie verte. Les 5 tokens de « le chat regarde le chien » sont des billes posées à l'entrée : leur taille suit la norme de leur vecteur (dimension d = 8), leur couleur sa direction. GPT-2, c'est exactement cette coupe répétée 12 fois en d = 768 ; GPT-3, 96 fois en d = 12 288. Tout tient dans ce bloc.
  2. Envoie la phrase à travers la pile : /propager. Les billes montent sous-couche par sous-couche ; à droite, le profil des normes se dessine à leur passage.
  3. Coupe la connexion résiduelle : /residuel off. Chaque sous-couche remplace désormais le vecteur au lieu de le corriger.
  4. Enlève aussi la normalisation : /norme aucune. Plus aucune bande grise : rien ne fixe l'échelle des vecteurs.
  5. Rebranche le résidu, sans remettre la norme : /residuel on.
  6. Remets la pré-norme : /norme pre. La bande grise revient sous chaque sous-couche : c'est le vecteur normalisé qui entre dans l'attention et le FFN, le flux résiduel reste intact.
  7. Supprime l'encodage positionnel : /position aucun. Les embeddings entrent seuls, sans savoir à quelle place ils sont.
  8. Empile : /couches 6. Douze sous-couches, et le compteur de paramètres en haut fait × 3 : le compte est linéaire en L (et quadratique en d).
  9. À toi de jouer : /parametres pour le détail du compte (formule et termes), /norme post pour la recette de 2017, /position appris pour une table de positions apprise comme dans GPT-2, /ffn 64 pour élargir le FFN, /dimension 16 pour doubler d (l'attention, quadratique en d, fait × 4), /phrase le chien regarde le chat pour changer de texte, /etape 2 pour arrêter les billes après le FFN du bloc 1, /reinit pour repartir. Prochaine étape : le canal #generation-temperature, où la tête de sortie devient une distribution de probabilité sur le vocabulaire et où l'on choisit le prochain mot.

Commandes du canal

  • /propagerRetire les poids (nouvelle graine) et rejoue la phrase sous-couche par sous-couche.
  • /couches <1..6>Nombre L de blocs empilés.
  • /position <sinus|appris|aucun>Encodage positionnel ajouté aux embeddings : sinus, table apprise ou rien.
  • /residuel <on|off>Active ou coupe la connexion résiduelle autour de chaque sous-couche.
  • /norme <pre|post|aucune>Place la normalisation de couche avant (pre), après (post) ou nulle part.
  • /ffn <8..64>Largeur w de la couche cachée du réseau feed-forward.
  • /dimension <8|16>Dimension d des vecteurs (8 ou 16).
  • /phrase <mot>Remplace la phrase propagée (toute la ligne, 2 à 8 mots).
  • /etape <n=0..13>Arrête les billes au niveau n : 0 = entrée, 1..2L = sous-couches, 2L+1 = sortie.
  • /parametresDétaille le calcul du nombre de paramètres.
  • /reinitRevient à L = 2, d = 8, w = 32, positions sinus, résidu actif, pré-norme.

Glossaire

bloc transformer
Unité répétée L fois dans un transformer : une sous-couche d'attention multi-têtes puis un réseau feed-forward, chacune entourée d'une connexion résiduelle et d'une normalisation de couche. Les embeddings entrent en bas, la tête de sortie lit le dernier bloc.
encodage positionnel
Vecteur ajouté à l'embedding de chaque token pour lui dire à quelle place il se trouve : sinus et cosinus de fréquences décroissantes (2017) ou table apprise (GPT-2). Sans lui, l'attention ne voit qu'un sac de mots et deux tokens identiques ont la même représentation.
connexion résiduelle
Raccourci qui additionne l'entrée d'une sous-couche à sa sortie : x + f(x). Le flux conserve l'information d'origine, chaque sous-couche n'apprend qu'une correction, et le gradient remonte sans s'affaiblir. Sans elle, les représentations des tokens s'effondrent les unes sur les autres.
normalisation de couche
Recentre et remet à l'échelle chaque vecteur token sur ses d composantes (moyenne 0, variance 1, donc norme sqrt(d)), avec un gain et un biais appris. Elle fixe l'échelle du signal quelle que soit la profondeur et stabilise l'entraînement.
pré-norme vs post-norme
Où placer la normalisation : pré-norme x + f(LN(x)) normalise l'entrée de la sous-couche et laisse le flux résiduel intact (GPT-2, LLaMA) ; post-norme LN(x + f(x)) normalise après l'addition (transformer de 2017, BERT), plus délicate à entraîner en profondeur.
réseau feed-forward
Petit perceptron appliqué à chaque token séparément dans chaque bloc : W2 · GELU(W1 · x), avec une couche cachée de largeur w (souvent 4d). C'est là que le modèle stocke l'essentiel de ses connaissances, et les deux tiers de ses paramètres par bloc.
attention multi-têtes
L'attention calculée h fois en parallèle sur des sous-espaces de dimension d/h, chaque tête avec ses propres matrices Q, K, V, puis les résultats concaténés et projetés par une matrice de sortie. Chaque tête peut suivre une relation différente (syntaxe, coréférence, position).
encodeur vs décodeur
Deux façons d'empiler des blocs : l'encodeur (BERT, ce canal) laisse chaque token regarder toute la phrase ; le décodeur (GPT) ajoute un masque causal — un token ne voit que ceux qui le précèdent — pour prédire le mot suivant. Le transformer de 2017 combinait les deux pour la traduction.
profondeur
Nombre L de blocs empilés : 12 pour GPT-2 small, 96 pour GPT-3, 80 pour LLaMA-2 70B. Résidus et normalisation sont ce qui permet d'aller si profond sans que le signal explose ni s'efface d'un bloc à l'autre.
nombre de paramètres
Taille du modèle : par bloc, environ 4d² + 2dw (attention + FFN, soit 12d² si w = 4d), multiplié par L, plus V×d pour les embeddings. Linéaire en L, quadratique en d : doubler la largeur coûte quatre fois plus que doubler la profondeur.

Autres canaux du thème LLM et transformers

  • #tokenisationTokenisation et BPE : comment un LLM découpe le texte.
  • #attentionSelf-attention : chaque mot regarde les autres.
  • #transformer-blocLe bloc transformer : attention, résidus, normalisation, FFN.
  • #generation-temperatureGénération : température, top-k et top-p.
  • #ragRAG : répondre en s'appuyant sur ses documents.
  • #alignement-rlhfAlignement et RLHF : apprendre ce que les humains préfèrent.