Cours 6 sur 7 · AI COURSE

Foundation Models

Construire, entraîner, servir et aligner un grand modèle : pré-entraînement, lois d'échelle, systèmes, inférence, fine-tuning, RLHF, DPO, puis un mini-GPT de bout en bout. Une sixième partie couvre les modèles de raisonnement et le RL à récompenses vérifiables, Mamba, le long contexte et la pratique du GPU.

22 chapitres35 blocs
Un chapitre, plusieurs niveauxChaque chapitre empile les blocs du même sujet, du plus accessible au plus rigoureux.
BasesIntuition, calcul détaillé, premier TP.
Orienté LLMLe même sujet vu depuis les grands modèles.
RigueurÉnoncés, preuves, niveau master.
NouveauBlocs écrits pour combler ce cours.
Le Carnet décideLe planning indique, séance par séance, quels blocs lire.

Partie 1

Le modèle

Ce qu'est un foundation model, et ce que coûte un GPT.

Chapitre 1

Définition et carte du domaine

1 bloc · Orienté LLM

1.1Orienté LLMex-FMAZ 0
1.1

Prérequis, carte du cours et définition d'un foundation model

Aucun prérequis pour ce bloc. Il fixe ceux des suivants.

Cours

Un foundation model (modèle de fondation) est un grand réseau de neurones entraîné sur une énorme quantité de données générales (texte du web, livres, code, parfois images et audio), avec un objectif très simple et sans étiquettes humaines, puis adapté à de nombreuses tâches. Le terme vient d'un rapport du centre CRFM de Stanford (2021). GPT, Llama, Claude, Mistral, Gemini sont des foundation models.

Trois idées résument tout le domaine, et ce cours les déroule dans l'ordre :

  1. Une architecture générale et parallélisable : le Transformer (Parties II à IV).
  2. Un objectif auto-supervisé appliqué à grande échelle : prédire le token suivant d'un texte. C'est le pretraining (Partie V). Les étiquettes sont gratuites : le texte lui-même fournit la « bonne réponse ».
  3. Une adaptation du modèle de base vers un usage : fine-tuning supervisé, RLHF, DPO, LoRA (Partie VII).

Prérequis : ce qu'il faut savoir avant de commencer

NiveauNotionOù c'est utilisé
IndispensableFonctions, puissances, exp et log (et leurs règles : log⁡(ab)=log⁡a+log⁡b)Softmax, cross-entropy, perplexité
IndispensableDérivée d'une fonction d'une variable ((x2)′=2x, (ex)′=ex, (ln⁡x)′=1/x)Gradient, backpropagation
IndispensableNotation somme ∑i=1n et produit ∏Partout
IndispensablePython : variables, boucles, fonctions, listes, dictionnaires, classesTous les TP
UtileProbabilités niveau lycée (pourcentages, événements indépendants)Partie I, blocs MATH 9.2, MATH 12.1 et MATH 13.2 (repris de zéro)
UtileNumPy de base (tableaux, shape)TP de la Partie I (expliqué au fur et à mesure)
Pas nécessaireMachine learning, PyTorch, algèbre linéaire universitaireTout est construit dans le cours

Comment travailler ce cours

Chaque bloc indique ses prérequis internes (les blocs à avoir lus avant). Lisez le cours, regardez les deux schémas, refaites l'exemple du cours à la main, puis l'exemple inventé, puis faites le TP sans regarder la solution. Cochez le bloc quand le TP fonctionne : votre progression est gardée dans ce navigateur.

Environnement : Python 3.10 ou plus, puis pip install numpy torch matplotlib. Un GPU n'est pas nécessaire : le mini-GPT du TP final tourne sur un CPU en une quinzaine de minutes.

Schéma du cours
Donnéesweb, livres, code Tokenizertexte → entiers Pretrainingprédire le tokensuivant, sur 10¹¹–10¹³tokens Modèle de basecomplète du texte SFT + RLHF/DPO→ assistant qui suitdes instructions AdaptationLoRA, fine-tuning,prompting Partie IIIParties IV–VPartie V–VIPartie VII
Le cycle de vie standard : des données brutes jusqu'au modèle de base, puis l'adaptation. Les étiquettes bleues indiquent la partie du cours qui traite chaque étape.
Schéma original
I · Mathsvecteurs, proba, info II · Réseauxbackprop, Adam, norm III · Langagetokens, embeddings IV · Transformerattention, RoPE V · Pretrainingscaling, GPU VIinférence VIIpost-training Lecture conseillée : de gauche à droite. II et III peuvent se lire en parallèle.
Carte des dépendances entre les parties : chaque flèche signifie « il faut avoir compris ceci pour lire cela ».
Exemple du cours

GPT-3 (OpenAI, 2020) est l'exemple de référence. Ses chiffres permettent de situer l'échelle :

  • 175 milliards de paramètres (1,75×1011), 96 couches Transformer, dimension cachée 12 288.
  • Environ 300 milliards de tokens d'entraînement.
  • Calcul total environ 6×N×D=6×1,75⋅1011×3⋅1011≈3,15⋅1023 opérations flottantes (la formule 6ND est démontrée au bloc 5.2).

Le même modèle, sans réentraînement, savait traduire, résumer ou répondre à des questions simplement en recevant quelques exemples dans son prompt. C'est cette polyvalence acquise par le seul pretraining qui justifie le mot « fondation ».

Exemple inventé

Imaginez un modèle entraîné uniquement à compléter des partitions : on lui montre des millions de morceaux, note par note, et on lui demande à chaque fois « quelle note vient ensuite ? ». Personne ne lui explique l'harmonie. Pourtant, pour bien prédire, il doit apprendre que telle note appartient à la gamme, qu'une cadence se résout sur la tonique, qu'un refrain revient. Ce modèle est un « foundation model musical » : on peut ensuite l'adapter pour harmoniser une mélodie, proposer une ligne de basse ou générer une batterie, avec très peu de données supplémentaires. C'est exactement le principe des LLM, appliqué au texte.

TP

Objectif : vérifier l'environnement et vos prérequis.

  1. Installez les paquets puis exécutez le script ci-dessous. Il doit afficher les versions et un tenseur.
  2. Sans ordinateur : calculez ln⁡(e3), log2⁡8, la dérivée de 3x2+2x, et ∑i=14i2.
  3. Écrivez une fonction Python moyenne(liste) sans utiliser sum.
import sys, numpy as np, torch
print("Python", sys.version.split()[0], "| numpy", np.__version__, "| torch", torch.__version__)
x = torch.arange(6, dtype=torch.float32).reshape(2, 3)
print(x, x.shape)
print("GPU disponible :", torch.cuda.is_available())
Solution

2. ln⁡(e3)=3 ; log2⁡8=3 car 23=8 ; (3x2+2x)′=6x+2 ; 1+4+9+16=30.

def moyenne(liste):
    total = 0.0
    for v in liste:
        total += v
    return total / len(liste)

print(moyenne([2, 4, 9]))  # 5.0

Si un de ces calculs vous a posé problème, relisez les règles de log et de dérivation avant le bloc MATH 8.2 : elles reviennent à chaque page.

Chapitre 2

Architecture GPT complète, paramètres et FLOPs

1 bloc · Orienté LLM

2.1Orienté LLMex-FMAZ 28
2.1

Architecture GPT complète, comptage des paramètres et des FLOPs

Prérequis : blocs NLP 3.1, DL 22.2 et DL 23.2.

Cours

Un modèle de type GPT (« decoder-only ») est l'empilement suivant :

  1. Entrée : indices de tokens (B,T).
  2. Embeddings : E[ids] (B,T,d), plus l'embedding de position (appris dans GPT-2) ; avec RoPE, rien n'est ajouté ici.
  3. L blocs Transformer (bloc DL 23.2), avec masque causal.
  4. Normalisation finale.
  5. Unembedding : logits (B,T,V), souvent avec poids partagés WU=E⊤.
  6. Perte à l'entraînement : cross-entropy entre les logits de la position t et le token xt+1 (bloc 3.2). Génération : on ne garde que les logits de la dernière position, on tire un token, on l'ajoute, on recommence (bloc 9.2).

Comptage des paramètres

N≈12Ld2⏟blocs+Vd⏟embeddings(+Tmaxd si positions apprises)

Les lois d'échelle (bloc 5.2) utilisent souvent N hors embeddings, soit 12Ld2.

Comptage du calcul

Un paramètre utilisé dans un produit matriciel coûte 2 FLOPs par token (une multiplication, une addition). Donc :

Cavant≈2N+2LTdFLOPs/token,Centraînement≈3×Cavant≈6NFLOPs/token

(Le terme d'attention 2LTd provient des 4Td par bloc du bloc DL 23.2 comptés sur la moitié causale ; il est négligeable tant que T≪6d.) Le facteur 3 vient de la passe arrière qui coûte deux fois la passe avant (bloc DL 11.3). D'où la formule fondamentale du coût d'entraînement sur D tokens : C≈6ND.

Quelques configurations réelles

ModèleLdTêtesContexteVParamètres
GPT-2 small12768121 02450 257124 M
GPT-2 medium241 024161 02450 257350 M
GPT-2 XL481 600251 02450 2571,5 G
Llama 2 7B324 096324 09632 0006,7 G
GPT-39612 288962 04850 257175 G

Remarque : d augmente avec L, et la dimension par tête reste souvent 64 ou 128.

Schéma du cours
ids de tokens (B, T) embedding E[ids] + position P[0..T) (B, T, d) Bloc 1 : attn + FFN Bloc 2 ⋮ × L Norm finale × Eᵀ → logits (B, T, V) softmax / cross-entropy avec xₜ₊₁ poids partagés(weight tying) Paramètres embeddings : V·d positions : T_max·d par bloc : ≈ 12d² total ≈ 12Ld² + Vd Calcul avant ≈ 2N /token entraînement ≈ 6N /token
Un GPT de bout en bout : des entiers aux probabilités du token suivant, à chaque position. Le seul « cœur » répété est le bloc Transformer.
Schéma original

Fin de l'aperçu

Débloquer la suite