Zubnet AIApprendreWiki › Entraînement en précision mixte
Entraînement

Entraînement en précision mixte

Aussi appelé : FP16, BF16, demi-précision
Entraîner des réseaux de neurones en utilisant des formats numériques de précision réduite (16 bits au lieu de 32 bits) pour la plupart des calculs tout en gardant les opérations critiques en pleine précision. Ça double la capacité mémoire effective et la vitesse de calcul des GPU avec un impact minimal sur la qualité du modèle. BF16 (bfloat16) est le standard pour l'entraînement de LLM ; FP16 est utilisé pour l'inférence.

Pourquoi c'est important

La précision mixte est la raison pour laquelle on peut entraîner des modèles aussi gros qu'on le fait. Un modèle de 70B paramètres en FP32 nécessiterait 280 Go juste pour les poids — impossible sur un seul GPU. En BF16, il faut 140 Go, ce qui tient sur quelques GPU. La précision mixte a effectivement doublé la capacité de calcul de l'industrie de l'IA gratuitement, juste en utilisant un format numérique plus intelligent.

En profondeur

L'intuition clé : la plupart des calculs de réseaux de neurones n'ont pas besoin de 32 bits de précision. Les poids, activations et gradients peuvent être représentés en 16 bits sans perte significative de qualité. Mais certaines opérations (calcul de la perte, mise à jour des poids) nécessitent une précision plus élevée pour éviter l'instabilité numérique. La précision mixte conserve une copie maîtresse des poids en FP32 pour les mises à jour, tout en utilisant FP16/BF16 pour les passes avant et arrière.

BF16 vs. FP16

FP16 (IEEE demi-précision) a 5 bits d'exposant et 10 bits de mantisse. BF16 (Brain Float 16) a 8 bits d'exposant et 7 bits de mantisse. La plage d'exposant plus large de BF16 signifie qu'il peut représenter la même plage de valeurs que FP32 (évitant le dépassement), tandis que la plage plus étroite de FP16 nécessite une mise à l'échelle de la perte pour empêcher les gradients de sous-déborder à zéro. Pour l'entraînement, BF16 est plus simple et plus stable. Pour l'inférence, FP16 offre parfois une précision légèrement meilleure pour le même coût mémoire.

FP8 et au-delà

Les GPU les plus récents (NVIDIA H100, H200) supportent FP8 (virgule flottante 8 bits) pour des calculs encore plus rapides. FP8 divise la mémoire par deux et double le débit par rapport à FP16, mais nécessite une gestion soigneuse pour éviter la dégradation de qualité. La pratique actuelle : entraîner en BF16, servir en FP16 ou FP8, et quantifier en INT4/INT8 pour le déploiement en périphérie. Chaque pas vers le bas en précision échange un tout petit peu de qualité contre des gains significatifs en vitesse et en mémoire.

Concepts connexes

← Tous les termes
← Entraînement distribué Extension de longueur de contexte →