FP32 vs FP16 vs BF16 vs INT8 : les formats numériques comparés
Le FP32 est le format à virgule flottante simple précision sur 32 bits ; il sert de référence pour les calculs. Le FP16 et le BF16 font tous deux 16 bits, mais répartissent leurs bits différemment. Le FP16 consacre beaucoup de bits à la mantisse pour la précision, ce qui réduit sa plage, avec un maximum de 65504. Le BF16 garde un exposant de 8 bits comme le FP32, ce qui préserve une plage comparable au FP32, au prix d’une précision moindre. L’INT8 est un entier sur 8 bits utilisé pour la quantification, qui approxime les nombres réels à l’aide d’un facteur d’échelle ; il réduit fortement la mémoire et la consommation en inférence d’IA.
| Critère | FP32 | FP16 | BF16 | INT8 |
|---|---|---|---|---|
| Nombre de bits | 32 bits | 16 bits | 16 bits | 8 bits |
| Bits de signe, d’exposant et de mantisse | 1, 8, 23 | 1, 5, 10 | 1, 8, 7 | Ni exposant ni mantisse. Entier en complément à deux de −128 à 127 |
| Plus grande valeur représentable | Environ 3,4 × 10³⁸ | 65504 | Environ 3,4 × 10³⁸ (presque identique au FP32) | 127 (les réels sont représentés à l’aide d’un facteur d’échelle) |
| Plus petit nombre normalisé | Environ 1,2 × 10⁻³⁸ | Environ 6,1 × 10⁻⁵ (2⁻¹⁴) | Environ 1,2 × 10⁻³⁸ | Sans objet (le pas des valeurs représentables est fixé par le facteur d’échelle) |
| Ordre de grandeur de la précision | Environ 7 chiffres décimaux (écart entre 1 et le nombre suivant : 2⁻²³ ≈ 1,2 × 10⁻⁷) | Environ 3 chiffres décimaux (2⁻¹⁰ ≈ 9,8 × 10⁻⁴) | 2 à 3 chiffres décimaux (2⁻⁷ ≈ 7,8 × 10⁻³) | Une échelle de 256 graduations |
| Conversion depuis le FP32 | Sans objet (référence) | La plage étant étroite, les grandes valeurs peuvent déborder et les petites devenir 0 | Il suffit de prendre les 16 bits de poids fort et d’arrondir ; la plage ne déborde pas | Quantification après détermination de l’échelle (et du point zéro). Une calibration pour étudier la plage des valeurs est nécessaire |
| Mémoire par valeur | 4 octets | 2 octets | 2 octets | 1 octet |
| Efficacité des unités de calcul | Multiplieurs volumineux ; peu de multiplications-accumulations par unité de surface | Unités plus petites qu’en FP32 ; on peut aligner de nombreuses multiplications-accumulations | Comparable au FP16. La mantisse plus courte rend le multiplieur encore plus petit | Multiplieurs les plus petits et les plus économes. Les produits sont souvent accumulés en entiers 32 bits |
| Usage en apprentissage | Poids maîtres, état de l’optimiseur, accumulation des produits | Apprentissage en précision mixte. Le loss scaling évite que les petits gradients deviennent 0 | Largement utilisé en apprentissage en précision mixte. Le loss scaling est le plus souvent inutile | Généralement non utilisé (l’apprentissage conscient de la quantification simule l’effet de la quantification) |
| Usage en inférence | Référence de précision. Lorsque l’exactitude prime sur les performances | Inférence sur GPU, entre autres | Inférence sur GPU et accélérateurs d’IA | Inférence de modèles quantifiés, en particulier sur les NPU embarqués en périphérie (edge) |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.