Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Mixed Precision Training

ia

Définition

Le Mixed Precision Training (entraînement en précision mixte) est une technique qui utilise simultanément des types numériques de précision différente (float32, float16, bfloat16) pour les différentes phases de calcul d'un réseau de neurones. L'objectif est de bénéficier de la vitesse et l'efficacité mémoire des formats 16-bit tout en maintenant la stabilité numérique de float32 pour les opérations critiques. Introduit par Micikevicius et al. (NVIDIA/Baidu, 2018), le Mixed Precision Training maintient une copie "master" des paramètres en float32 pour les mises à jour de gradient, tout en effectuant les forward et backward passes en float16 (FP16). FP16 utilise 16 bits (1 signe, 5 exposant, 10 mantisse) contre 32 bits pour FP32 → économie de 2× en mémoire GPU et accélération de 2-8× sur les Tensor Cores NVIDIA. Le problème de FP16 est sa plage dynamique limitée (max ≈ 65535) qui provoque des underflows (gradient → 0) ou overflows. La solution est le gradient scaling : multiplier la loss par un facteur S avant le backward pass, puis diviser les gradients par S, maintenant les gradients dans la plage FP16. BFloat16 (BF16, Brain Floating Point) est le format dominant pour l'entraînement LLM moderne (NVIDIA Ampere et supérieur, Google TPUs). BF16 partage le même exposant que FP32 (8 bits) mais avec une mantisse réduite (7 bits au lieu de 23). Sa plage dynamique identique à FP32 élimine les problèmes d'overflow/underflow sans gradient scaling, simplifiant significativement l'entraînement. Toute l'infrastructure d'entraînement des LLMs modernes (LLaMA, Mistral, Gemma) utilise BF16 par défaut. FP8 (format 8-bit) est la prochaine frontière : NVIDIA H100 supporte le calcul FP8 nativement, offrant encore 2× d'efficacité vs BF16. DeepSeek V3 est parmi les premiers grands modèles à revendiquer un entraînement FP8 quasi-entier, réduisant le coût de compute de 50%.

Formats numériques comparés

FormatBitsMax valueGPU support
FP3232~3.4e38Tous
FP161665535Volta+
BF1616~3.4e38Ampere+ (A100, H100)
FP8 (E4M3)8448Hopper (H100)

Configuration PyTorch/HuggingFace

from transformers import TrainingArguments

# Option 1 : BF16 (recommandé sur A100/H100)
args = TrainingArguments(bf16=True, ...)

# Option 2 : FP16 avec gradient scaling (GPU sans BF16 support)
args = TrainingArguments(fp16=True, half_precision_backend="auto", ...)

# Option 3 : FP8 avec TransformerEngine (H100 uniquement)
from transformer_engine.pytorch import fp8_autocast
with fp8_autocast(enabled=True):
    output = model(input)

Précision des optimiseurs

Même en BF16, les états de l'optimiseur Adam (momentum, variance) restent en FP32 — ils représentent ~3× la mémoire des paramètres. Pour économiser, utiliser 8-bit Adam (bitsandbytes) ou Adafactor (stateless optimizer) réduisant ces états de 4× supplémentaire.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis