Qu'est-ce que Précision mixte ?

Utilisation de précisions numériques différentes selon les parties du calcul. Les multiplications se font par exemple en FP16 et l'accumulation en FP32, conciliant vitesse et précision.

Nom japonais: 混合精度

« Précision mixte » apparaît dans 2 questions d'entraînement réparties sur 2 thèmes, dont Arithmétique des ordinateurs, Programmation GPU.

Domaine: Programmation GPU

S'entraîner : questions sur Précision mixte

Dans l'entraînement en précision mixte en IA, pourquoi conserve-t-on la valeur originale des poids (poids maîtres) en FP32 tout en effectuant la plupart des calculs en FP16 ou bfloat16 ?

  1. AParce que l'ajout de petites mises à jour aux poids dans un format peu précis les fait disparaître par absorption
  2. BParce que FP32 calcule plus vite que FP16 et qu'on lui confie tous les calculs de poids
  3. CParce que FP16 et bfloat16 ne permettent pas d'enregistrer les poids en mémoire
Afficher la réponse et l'explication

Réponse : A. Parce que l'ajout de petites mises à jour aux poids dans un format peu précis les fait disparaître par absorption

L'entraînement ajoute de nombreuses fois aux poids des valeurs très petites, « taux d'apprentissage × gradient ». FP16 et bfloat16 ont une mantisse courte : si la mise à jour est trop petite par rapport au poids, la somme est arrondie au poids initial et la mise à jour disparaît (absorption). Les poids sont donc conservés en FP32 pour accumuler correctement les mises à jour, et des copies converties en basse précision servent aux passes avant et arrière. Le calcul est plus rapide en basse précision, et les valeurs basse précision peuvent aussi être enregistrées.

En calcul en précision mixte sur GPU, pourquoi effectue-t-on souvent les multiplications en faible précision (FP16, etc.) et l'accumulation en FP32 ?

  1. AParce que les multiplications sont impossibles en FP32
  2. BParce que l'accumulation de nombreux produits en faible précision accumule les erreurs d'arrondi et fait disparaître les petites valeurs ; seule l'accumulation est donc faite en haute précision
  3. CParce que les additions sont impossibles en FP16
Afficher la réponse et l'explication

Réponse : B. Parce que l'accumulation de nombreux produits en faible précision accumule les erreurs d'arrondi et fait disparaître les petites valeurs ; seule l'accumulation est donc faite en haute précision

La mantisse du FP16 ne comptant que 10 bits, l'ajout d'un petit produit à une somme devenue grande peut faire disparaître le produit par arrondi. Un produit de matrices additionnant des milliers de produits, l'accumulation de ces erreurs fausse fortement le résultat. On effectue donc en faible précision les multiplications, coûteuses en mémoire et en unités de calcul, et seule l'accumulation en FP32. La plupart des Tensor Cores réalisent cette forme de multiplication-accumulation en une instruction.

Questions mentionnant « Précision mixte » (2)

  1. Dans l'entraînement en précision mixte en IA, pourquoi conserve-t-on la valeur originale des poids (poids maîtres) en FP32 tout en effectuant la plupart des calculs en FP16 ou bfloat16 ?
  2. En calcul en précision mixte sur GPU, pourquoi effectue-t-on souvent les multiplications en faible précision (FP16, etc.) et l'accumulation en FP32 ?

Termes associés

Mantisse bfloat16 Absorption (perte de chiffres) GPU Bloc de threads Boucle grid-stride Coalescence mémoire Conflit de banc CUDA Divergence de warp

Retour au glossaire