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.
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
Prérequis, carte du cours et définition d'un foundation model
Aucun prérequis pour ce bloc. Il fixe ceux des suivants.
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 :
- Une architecture générale et parallélisable : le Transformer (Parties II à IV).
- 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 ».
- 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
| Niveau | Notion | Où c'est utilisé |
|---|---|---|
| Indispensable | Fonctions, puissances, | Softmax, cross-entropy, perplexité |
| Indispensable | Dérivée d'une fonction d'une variable ( | Gradient, backpropagation |
| Indispensable | Notation somme | Partout |
| Indispensable | Python : variables, boucles, fonctions, listes, dictionnaires, classes | Tous les TP |
| Utile | Probabilité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) |
| Utile | NumPy de base (tableaux, shape) | TP de la Partie I (expliqué au fur et à mesure) |
| Pas nécessaire | Machine learning, PyTorch, algèbre linéaire universitaire | Tout 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.
GPT-3 (OpenAI, 2020) est l'exemple de référence. Ses chiffres permettent de situer l'échelle :
- 175 milliards de paramètres (
), 96 couches Transformer, dimension cachée 12 288. - Environ 300 milliards de tokens d'entraînement.
- Calcul total environ
opérations flottantes (la formule 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 ».
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.
Objectif : vérifier l'environnement et vos prérequis.
- Installez les paquets puis exécutez le script ci-dessous. Il doit afficher les versions et un tenseur.
- Sans ordinateur : calculez
, , la dérivée de , et . - Écrivez une fonction Python
moyenne(liste)sans utilisersum.
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.
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
Chapitre 2
Architecture GPT complète, paramètres et FLOPs
1 bloc · Orienté LLM
Un modèle de type GPT (« decoder-only ») est l'empilement suivant :
- Entrée : indices de tokens
. - Embeddings :
, plus l'embedding de position (appris dans GPT-2) ; avec RoPE, rien n'est ajouté ici. blocs Transformer (bloc DL 23.2), avec masque causal.- Normalisation finale.
- Unembedding : logits
, souvent avec poids partagés . - Perte à l'entraînement : cross-entropy entre les logits de la position
et le token (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
Les lois d'échelle (bloc 5.2) utilisent souvent
Comptage du calcul
Un paramètre utilisé dans un produit matriciel coûte 2 FLOPs par token (une multiplication, une addition). Donc :
(Le terme d'attention
Quelques configurations réelles
| Modèle | Têtes | Contexte | Paramètres | |||
|---|---|---|---|---|---|---|
| GPT-2 small | 12 | 768 | 12 | 1 024 | 50 257 | 124 M |
| GPT-2 medium | 24 | 1 024 | 16 | 1 024 | 50 257 | 350 M |
| GPT-2 XL | 48 | 1 600 | 25 | 1 024 | 50 257 | 1,5 G |
| Llama 2 7B | 32 | 4 096 | 32 | 4 096 | 32 000 | 6,7 G |
| GPT-3 | 96 | 12 288 | 96 | 2 048 | 50 257 | 175 G |
Remarque :