Arithmétique des ordinateurs

Lors de l'entraînement d'un réseau de neurones en FP16 (demi-précision : 1 bit de signe, 5 d'exposant, 10 de mantisse), quel problème survient fréquemment et se traite en multipliant la perte par un facteur (loss scaling) ?

  1. ALa mantisse est trop longue et la consommation mémoire augmente
  2. BLa plage représentable est étroite et les petits gradients deviennent nuls
  3. CLes valeurs sont traitées comme des entiers et les fractions ne sont pas représentables
Afficher la réponse et l'explication

Réponse : B. La plage représentable est étroite et les petits gradients deviennent nuls

Avec seulement 5 bits d'exposant, FP16 ne représente que les valeurs positives d'environ 6 × 10⁻⁸ (dénormalisés compris) à 65504. Les gradients calculés pendant l'entraînement comportent de nombreuses valeurs très petites qui, en FP16, subissent un soupassement et deviennent nulles, ce qui bloque l'apprentissage. Le loss scaling multiplie la perte, par exemple par 1024, avant la rétropropagation afin de ramener les gradients dans la plage représentable, puis rétablit l'échelle avant la mise à jour des poids. La mantisse, de 10 bits, est plus courte que celle de FP32, et les fractions sont représentables.

S'entraîner sur ce thème Retour au thème

Autres questions sur Arithmétique des ordinateurs

  1. Quelle est la plus grande valeur finie représentable en FP16 (1 bit de signe, 5 bits d'exposant (biais 15), 10 bits de mantisse) ?
  2. Quelle répartition des deux formats FP8, E4M3 (4 bits d'exposant, 3 de mantisse) et E5M2 (5 bits d'exposant, 2 de mantisse), est courante ?
  3. En inférence d'IA, quel est le principal avantage de la conversion (quantification) des poids de FP32 en INT8 ?
  4. Des données comprises entre −6.35 et 6.35 sont quantifiées en INT8 symétrique centré sur 0 (−127 à 127). Si l'échelle vaut « valeur absolue maximale ÷ 127 », par quel entier 1.0 est-il représenté ?
  5. Quelle est la principale raison pour laquelle les petits microcontrôleurs et DSP utilisent souvent l'arithmétique en virgule fixe plutôt qu'en virgule flottante ?