Niveau Intermédiaire

Entraîner un Transformer

De l'architecture au modèle entraîné : comprendre le processus d'apprentissage

Partager :

Vous connaissez maintenant l'architecture d'un Transformer. Mais comment passe-t-on d'un modèle avec des poids aléatoires à un modèle capable de générer du texte cohérent comme GPT-4 ou de comprendre le langage comme BERT ?

La réponse tient en un mot : l'entraînement. C'est le processus par lequel le modèle apprend à partir de millions (voire milliards) d'exemples, en ajustant ses paramètres pour minimiser ses erreurs.

Le cycle d'entraînement

1. Forward Pass
Le modèle fait une prédiction à partir des données d'entrée
2. Calcul de la perte
On mesure l'écart entre prédiction et vérité terrain
3. Backpropagation
On calcule les gradients pour chaque paramètre
4. Mise à jour
L'optimiseur ajuste les poids pour réduire l'erreur

Ce cycle se répète des millions de fois sur des milliards d'exemples, jusqu'à ce que le modèle converge vers une solution optimale.

📉 Fonction de perte (Loss Function)

La fonction de perte mesure à quel point le modèle se trompe. Pour un modèle de langage, on utilise généralement la Cross-Entropy Loss.

Comment ça marche ?

Exemple : Prédire le prochain mot

Contexte : "Le chat mange la"

Mot réel : "souris"

Prédictions du modèle :

  • • souris : 60%
  • • pomme : 25%
  • • voiture : 10%
  • • autres : 5%

Loss = -log(P(souris)) = -log(0.60) ≈ 0.51

Plus la probabilité du bon mot est élevée, plus la perte est faible. Si le modèle prédisait 100% pour "souris", la perte serait 0.

✅ Bonne prédiction

Probabilité = 90%

Loss = 0.10 (faible)

❌ Mauvaise prédiction

Probabilité = 10%

Loss = 2.30 (élevée)

🔄 Backpropagation

La backpropagation (rétropropagation) est l'algorithme qui calcule comment chaque paramètre du modèle a contribué à l'erreur. C'est le cœur de l'apprentissage profond.

Qu'est-ce qu'un gradient ?

Le gradient est un vecteur mathématique qui indique dans quelle direction et de combien il faut modifier chaque paramètre pour réduire l'erreur (la fonction de perte).

Propriétés clés :

  • Direction : Le gradient pointe vers la direction de plus forte augmentation de la perte. On va donc dans la direction opposée (d'où le signe "-" dans la descente de gradient).
  • Magnitude : Plus le gradient est grand, plus l'impact du paramètre sur l'erreur est important, donc plus on doit le modifier.
  • Calcul : Le gradient est calculé par dérivation partielle de la fonction de perte par rapport à chaque paramètre : ∂Loss/∂param.

🎯 Formule de mise à jour :

param_nouveau = param_ancien - learning_rate × gradient

Le learning rate contrôle l'amplitude de la mise à jour. Trop grand → instabilité ; trop petit → apprentissage lent.

💡 Analogie : Descendre une montagne dans le brouillard

Imaginez que vous êtes sur une montagne et voulez atteindre le point le plus bas (erreur minimale). Le gradient est comme une boussole qui vous indique la pente la plus raide. Vous faites un pas dans la direction opposée à la montée (descente de gradient). La taille du pas est le learning rate.

Principe : La règle de la chaîne
Comment l'erreur se propage à travers les couches

Sortie (Loss = 2.3)

Couche 12

Couche 6

Couche 1

Les gradients se propagent de la sortie vers l'entrée, indiquant à chaque couche comment ajuster ses poids.

💡 Analogie : Corriger une erreur en cascade

Imaginez une chaîne de montage où le produit final est défectueux. La backpropagation remonte la chaîne pour identifier quelle étape a causé le problème et de combien il faut ajuster chaque étape pour corriger l'erreur.

⚡ Optimiseurs : Adam et AdamW

Une fois les gradients calculés, l'optimiseur décide comment mettre à jour les poids. L'optimiseur le plus utilisé pour les Transformers est AdamW.

SGD (Basique)

Descente de gradient simple : même learning rate pour tous les paramètres.

Rarement utilisé seul
Adam

Adaptive learning rates + momentum. S'adapte automatiquement à chaque paramètre.

Populaire
AdamW ⭐

Adam + weight decay découplé. Standard pour GPT, BERT, Llama, etc.

Recommandé
Pourquoi AdamW est-il meilleur ?

Adam classique

Le weight decay interagit avec les adaptive learning rates, ce qui peut nuire à la généralisation.

AdamW

Le weight decay est appliqué directement aux poids, indépendamment des gradients. Meilleure régularisation.

Hyperparamètres typiques pour AdamW :

  • Learning rate : 1e-4 à 5e-4 (avec warm-up)
  • Beta1 : 0.9 (momentum)
  • Beta2 : 0.999 (adaptive learning rate)
  • Weight decay : 0.01 à 0.1
  • Epsilon : 1e-8 (stabilité numérique)

📈 Learning Rate Scheduling

Le learning rate (taux d'apprentissage) contrôle la taille des mises à jour. Trop grand = instabilité. Trop petit = apprentissage lent. La solution : le faire varier pendant l'entraînement.

Stratégie typique : Warm-up + Decay
LR
│ ╱‾‾‾╲___
│ ╱ ╲___
│ ╱ ╲___
│ ╱ ╲___
│ ╱ ╲___
│╱ ╲___
└─────────────────────────────────────→ Steps
Warm-upPlateauDecay

1. Warm-up (0-10k steps)

Augmentation linéaire de 0 → learning rate max. Évite les grandes mises à jour au début.

2. Plateau (10k-100k steps)

Learning rate constant. Le modèle apprend rapidement.

3. Decay (100k+ steps)

Réduction progressive (cosine ou linéaire). Affine la convergence.

⚠️ Erreur courante : Pas de warm-up

Sans warm-up, le modèle peut diverger dès les premières étapes. Les poids initiaux sont aléatoires et de grandes mises à jour peuvent les pousser dans des régions où les gradients explosent.

🚀 Techniques avancées

Gradient Accumulation

Accumuler les gradients sur plusieurs mini-batchs avant de mettre à jour les poids. Permet de simuler de gros batchs avec peu de mémoire GPU.

Batch effectif = batch_size × accumulation_steps
Gradient Clipping

Limiter la norme des gradients pour éviter les explosions. Typiquement : clip à 1.0 ou 5.0.

if ||gradient|| > max_norm:
  gradient = gradient × (max_norm / ||gradient||)
Mixed Precision (FP16/BF16)

Entraîner en précision mixte (16-bit + 32-bit) pour accélérer l'entraînement et réduire la consommation mémoire de ~50%.

2x plus rapide50% moins de VRAM
Distributed Training

Entraîner sur plusieurs GPUs/machines en parallèle. Techniques : Data Parallelism, Model Parallelism, Pipeline Parallelism.

Essentiel pour LLMs

💻 En pratique : Entraîner avec PyTorch

Exemple de boucle d'entraînement simplifiée
import torch
from torch.optim import AdamW
from transformers import GPT2LMHeadModel, GPT2Tokenizer

# 1. Charger le modèle et tokenizer
model = GPT2LMHeadModel.from_pretrained('gpt2')
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model.train()

# 2. Configurer l'optimiseur (AdamW)
optimizer = AdamW(
    model.parameters(),
    lr=5e-5,              # Learning rate
    betas=(0.9, 0.999),   # Momentum
    weight_decay=0.01     # Régularisation
)

# 3. Boucle d'entraînement
for epoch in range(num_epochs):  # epoch = passage complet sur le dataset
    for batch in dataloader:
        # Forward pass
        inputs = tokenizer(batch['text'], return_tensors='pt', 
                          padding=True, truncation=True)
        outputs = model(**inputs, labels=inputs['input_ids'])
        loss = outputs.loss  # Cross-entropy loss
        
        # Backward pass (backpropagation)
        loss.backward()
        
        # Gradient clipping
        torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
        
        # Mise à jour des poids
        optimizer.step()
        optimizer.zero_grad()
        
        print(f"Loss: {loss.item():.4f}")

# 4. Sauvegarder le modèle
model.save_pretrained('./my_trained_model')

Playground interactif : Génération de tokens

Explorez comment les paramètres de génération (température, top-p, top-k) influencent les prédictions du prochain token. Visualisez la distribution de probabilités en temps réel.

Token Prediction Playground
Explorez comment les paramètres de génération influencent les prédictions du prochain token

Le modèle prédit le prochain token après ce texte

Créatif

Seuil de probabilité cumulée

Nombre de tokens candidats

🌡️ Température

Contrôle l'aléatoire. Basse (0.1-0.5) : précis et prévisible.Haute (1.0-2.0) : créatif et varié.

🎯 Top-P

Garde les tokens dont la somme des probabilités atteint P.0.9 = 90% de la masse de probabilité.

🔢 Top-K

Limite aux K tokens les plus probables.50 = choisir parmi les 50 meilleurs.

2 tokens filtrés
1"utilisés"
logit: 8.7962.62%
2"une"
logit: 8.2837.38%

Processus de génération :

1. Logits = Model(input_text) → scores bruts

2. Scaled_logits = Logits / temperature

3. Probabilities = Softmax(Scaled_logits)

4. Filtered = Top_K(Top_P(Probabilities))

5. Next_token = Sample(Filtered)

Les modèles comme GPT-4o, Claude 3.7 et Gemini 2.0utilisent ce processus pour générer chaque token, un par un (génération autoregressive).

4
1 avis
5
0%
4
100%
3
0%
2
0%
1
0%

💡 Ces statistiques reflètent l'expérience de nos lecteurs

Question 1 / 4Score : 0 / 0
Entraînement des Transformers
Testez vos connaissances

Quelle est la fonction de perte (loss) utilisée pour l'entraînement des LLM ?

Votre avis compte ! 💡
Aidez-nous à améliorer cette page en partageant votre expérience. Votre retour est précieux pour rendre le contenu encore plus clair et utile.

Comment évaluez-vous cette page ?

🍪 Gestion des cookies
Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser l'utilisation du site et vous proposer des contenus personnalisés. Vous pouvez accepter tous les cookies, les refuser ou personnaliser vos préférences.