BF16, FP16 ou FP8 : dans quel format entraîner mon modèle ?

Traduction automatique

Cet article a été traduit automatiquement depuis la version originale en anglais.

Commencez par BF16 lorsque le GPU et l’environnement d’entraînement le prennent en charge. Utilisez FP16 avec mise à l’échelle de la perte lorsque BF16 n’est pas disponible ou que les mesures sur votre charge de travail favorisent FP16. Testez FP8 avec une implémentation compatible de précision mixte lorsque le débit d’entraînement justifie les vérifications numériques supplémentaires.

La précision mixte utilise des formats différents pour les opérations et les états. Choisir BF16 ou FP8 ne signifie pas que chaque tenseur utilise ce format.

La plage et la précision répondent à des problèmes différents

L’exposant détermine la plage des valeurs. Les bits de la fraction déterminent à quel point les valeurs représentables peuvent être proches. BF16 conserve le même nombre de bits d’exposant que FP32, mais possède moins de bits de fraction. FP16 offre une précision plus fine que BF16 dans sa plage plus étroite.

FormatBits d’exposant / de fractionConsidération pratique
BF168 / 7Plage large ; évite généralement la mise à l’échelle de la perte
FP165 / 10Les petits gradients peuvent subir un sous-dépassement ; utilisez la mise à l’échelle de la perte
FP8 E4M34 / 3Plus de précision qu’E5M2, moins de plage
FP8 E5M25 / 2Plage plus large pour les tenseurs tels que les gradients

Avec FP16, la mise à l’échelle de la perte multiplie la perte avant le calcul en sens inverse, puis annule cette mise à l’échelle sur les gradients avant la mise à jour de l’optimiseur. Cela aide à garder les petits gradients représentables. Les dépassements doivent toujours être gérés.

La documentation de Transformer Engine de NVIDIA décrit une configuration hybride classique de FP8 : E4M3 pour les tenseurs du calcul en sens direct et E5M2 pour ceux du calcul en sens inverse, avec une mise à l’échelle adaptée aux tenseurs. Les formats de Blackwell avec mise à l’échelle par blocs ajoutent d’autres configurations ; la prise en charge matérielle seule n’en choisit pas une pour votre modèle.

Établissez une référence numérique

Exécutez une portion représentative de l’entraînement avec le même ordre des données et les mêmes réglages de l’optimiseur. Comparez le pic d’utilisation mémoire, le temps par étape, l’évolution de la perte, les valeurs non finies et la qualité sur des données réservées à l’évaluation. Conservez les opérations sensibles aux erreurs numériques et les états de l’optimiseur à la précision requise par l’implémentation.

Une exécution plus rapide qui diverge ou ne satisfait pas l’exigence de qualité ne réduit pas le coût d’entraînement. À l’inverse, une référence BF16 stable peut suffire sans ajouter de travail sur FP8.

La section sur l’entraînement en précision mixte du LLM Engineering Guide présente les plages des formats et des résultats d’entraînement publiés.