0Pricing
Learn AI with Python · Leçon

Entraînement en précision mixte avec AMP

torch.cuda.amp.autocast(), GradScaler, FP16 ou BF16, économies de mémoire, gains de vitesse.

Entraînement en précision mixte avec AMP est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.

Qu'est-ce que la précision mixte

L'entraînement en précision mixte exécute la plupart des opérations en virgule flottante sur 16 bits (FP16) plutôt que sur 32 bits (FP32). FP16 utilise deux fois moins de mémoire et s'exécute plus rapidement sur les cœurs tenseurs des GPU modernes, tandis que quelques opérations sensibles restent en FP32 pour garantir la stabilité.

Les avantages

La précision mixte vous offre :

  • environ deux fois moins de mémoire utilisée, ce qui permet d'utiliser des lots ou des modèles plus grands
  • Des multiplications matricielles plus rapides sur les cœurs tenseurs
  • Une perte faible, voire nulle, de la précision finale du modèle lorsqu'elle est correctement utilisée

Le problème du sous-dépassement en FP16

FP16 possède une plage de valeurs étroite. De petites valeurs de gradient peuvent subir un sous-dépassement et devenir nulles, ce qui arrête l'apprentissage sans avertissement. C'est le principal problème que la précision mixte doit résoudre, et la raison pour laquelle nous ne pouvons pas simplement convertir toutes les valeurs en FP16.

torch.cuda.amp

La précision mixte automatique (AMP) de PyTorch gère ces détails avec deux outils : autocast choisit la précision pour chaque opération, et GradScaler empêche le sous-dépassement des gradients.

import torch
from torch.cuda.amp import autocast, GradScaler

Le contexte autocast

Entourez la propagation avant de autocast(). À l'intérieur, PyTorch exécute automatiquement chaque opération avec la précision la plus sûre : les produits matriciels en FP16, les réductions comme softmax et le calcul de la perte en FP32.

with autocast():
    output = model(x)
    loss = criterion(output, y)

Présentation de GradScaler

GradScaler lutte contre le sous-dépassement en multipliant la perte par un facteur d'échelle élevé avant la rétropropagation. Les petits gradients sont ainsi déplacés dans la plage représentable par FP16 ; l'échelle est retirée avant l'étape de l'optimiseur.

scaler = GradScaler()

Mettre la perte à l'échelle

scaler.scale(loss).backward() augmente la perte, puis lance la rétropropagation. Les gradients obtenus sont également mis à l'échelle, ce qui empêche les petites valeurs de disparaître.

scaler.scale(loss).backward()

scaler.step

scaler.step(optimizer) commence par ramener les gradients à leur véritable amplitude, puis appelle optimizer.step(), mais uniquement si aucun infini ni NaNs n'est apparu. Si les gradients ont débordé, l'étape est ignorée.

scaler.step(optimizer)

scaler.update

scaler.update() ajuste le facteur d'échelle pour l'itération suivante : il augmente l'échelle lorsque les étapes réussissent et la diminue après un débordement. Cette mise à l'échelle adaptative assure automatiquement la stabilité de l'entraînement.

scaler.update()

La boucle AMP complète

En réunissant ces éléments, vous obtenez une étape complète d'entraînement en précision mixte.

scaler = GradScaler()
for x, y in loader:
    x, y = x.cuda(), y.cuda()
    optimizer.zero_grad()
    with autocast():
        out = model(x)
        loss = criterion(out, y)
    scaler.scale(loss).backward()
    scaler.step(optimizer)
    scaler.update()

Conseils pratiques

Gardez les points suivants à l'esprit :

  • Appelez backward() uniquement sur la perte mise à l'échelle
  • autocast entoure uniquement la propagation avant, et non la rétropropagation ni l'étape de l'optimiseur
  • AMP est particulièrement efficace sur les GPU dotés de cœurs tenseurs ; les gains sont plus faibles sur le matériel ancien

Vérification rapide

Testez vos connaissances sur AMP.

Récapitulatif

Vous avez appris l'entraînement en précision mixte avec AMP :

  • autocast() choisit FP16 ou FP32 pour chaque opération de la propagation avant
  • GradScaler met la perte à l'échelle pour éviter le sous-dépassement des gradients
  • Le cycle est scaler.scale(loss).backward(), scaler.step(optimizer), scaler.update()
  • Résultat : environ deux fois moins de mémoire utilisée et un entraînement plus rapide

Questions Fréquemment Posées

La leçon « Entraînement en précision mixte avec AMP » est-elle gratuite ?

Oui — le texte complet de « Entraînement en précision mixte avec AMP » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Entraînement en précision mixte avec AMP » ?

torch.cuda.amp.autocast(), GradScaler, FP16 ou BF16, économies de mémoire, gains de vitesse. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Learn AI with Python ?

Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Entraînement en précision mixte avec AMP » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?

Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Entraînement multi-GPU avec DataParallel
  2. DistributedDataParallel (DDP)
  3. Entraînement en précision mixte avec AMP
  4. Entraînement efficace avec Hugging Face Accelerate
← Retour à Learn AI with Python