Signe, Exposant, Mantisse
Format IEEE 754 à Virgule Flottante
Chaque nombre à virgule flottante stocke trois champs :
- Bit de signe (1 bit) : positif ou négatif
- Exposant (E bits) : l'échelle de magnitude, une puissance entière de 2
- Mantisse (M bits) : la précision fractionnaire, un nombre entre 1,0 et ~2,0
Nombre total de bits = 1 + E + M. La valeur vaut approximativement (-1)^sign (1 + mantissa) 2^(exponent - bias).
Deux propriétés comptent pour l'entraînement :
Plage dynamique = 2^(2^E) (approximativement). Plus d'bits d'exposant signifie représenter des nombres plus petits et plus grands sans débordement.
Précision = 2^M valeurs distinctes par puissance de 2. Plus de bits de mantisse signifie une représentation plus fine entre les puissances de 2 consécutives.
Les Trois Formats
| Format | Bits totaux | Signe | Exp | Mant | Plage dynamique | Précision |
|---|---|---|---|---|---|---|
| FP32 | 32 | 1 | 8 | 23 | ~10^-38 à ~10^38 | ~7 chiffres |
| FP16 | 16 | 1 | 5 | 10 | ~10^-5 à ~10^5 | ~3 chiffres |
| FP8 E4M3 | 8 | 1 | 4 | 3 | ~2^-9 à ~448 | ~2 chiffres |
FP8 E4M3 signifie « 4 bits d'exposant, 3 bits de mantisse ». Une alternative FP8 E5M2 échange la précision contre la plage ; les expériences ANDREA utilisent E4M3 car les activations des transformers restent dans des bandes de magnitude étroites où la précision supplémentaire l'emporte sur la plage supplémentaire.
Octets Par Paramètre
Pourquoi une précision inférieure s'exécute plus rapidement
La bande passante mémoire domine la vitesse d'entraînement
Les GPU modernes passent plus de temps à attendre la mémoire qu'à calculer. La RTX 4090 a une bande passante mémoire de 1008 Go/s & 165 TFLOPS de calcul FP16. Une couche typique lit les poids depuis la VRAM, multiplie les activations, réécrit les résultats. C'est la bande passante, pas le calcul, qui détermine le débit.
Diviser la précision par deux divise les octets par paramètre par deux, donc lire les mêmes poids utilise la moitié de la bande passante mémoire. Le débit double approximativement.
Tensor Cores : Multiplication matricielle accélérée par le matériel
La RTX 4090 intègre des unités de cœurs tensor dédiées qui calculent les multiplications matricielles en FP16 ou FP8 directement. Une seule opération de cœur tensor multiplie un petit bloc (par ex. 16x16) en un cycle, de manière considérablement plus rapide que les multiplications scalaires FP32.
Chiffres empiriques d'ANDREA-120M :
| Précision | Étapes/min | Notes |
|---|---|---|
| FP32 | ~3 | référence ; pas d'accélération par cœurs tensor |
| FP16 | ~6 | cœurs tensoriels cuBLAS ; accélération 2x |
| FP8 E4M3 | ~6 | cœurs tensoriels ; comparable à FP16 |
FP8 n'a pas surpassé FP16 en débit pour cette charge de travail car le débit de calcul n'était plus le goulot d'étranglement ; la bande passante mémoire et la surcharge de lancement sont devenues limitantes. ANDREA-120M v3 est livré en FP16 cuBLAS à 6 étapes/min pour une marge de sécurité confortable sans perte de débit.
Risque de NaN en FP8
FP8 E4M3 représente les nombres de ~2^-9 à ~448. Les activations ou gradients en dehors de cette plage débordent en NaN (not a number) ou sous-débordent en zéro. Un seul NaN contamine tous les calculs en aval : les multiplications matricielles avec un NaN renvoient tout-NaN ; les gradients tout-NaN corrompent l'état AdamW ; AdamW avec des m et v NaN produit des mises à jour NaN ; les poids deviennent NaN ; toute la session d'entraînement meurt.
Les expériences FP8 d'ANDREA ont produit des falaises NaN occasionnelles nécessitant un scaling de perte, un basculement programmé de précision, ou des chemins de repli. La plage dynamique de FP16 (~10^-5 à ~10^5) est assez large pour que les événements NaN restent rares sans astuces de scaling complexes.
Choisir la précision pour une nouvelle exécution
Faire tenir 120M sur une seule 4090
Le multiplicateur 6-8x de la leçon d'introduction
Rappelons depuis grow_a_language_model_intro que la mémoire d'entraînement équivaut à environ 6-8x le nombre brut de poids, en tenant compte de :
- Poids (1x)
- Premier moment Adam m (1x)
- Deuxième moment Adam v (1x)
- Tampon de gradient (1x)
- Activations & temporaires (~2-4x, dépend du batch & contexte)
ANDREA-120M en FP16 avec batch_size=8, context=1024 :
| Composant | Taille FP16 |
|---|---|
| Poids | 240 Mo |
| m (premier moment) | 240 MB |
| v (deuxième moment) | 240 MB |
| Gradients | 240 MB |
| Activations | ~2-4 GB (batch, ctx) |
| Total | ~3.5 GB |
La RTX 4090 dispose de 24 Go de VRAM. ANDREA-120M utilise ~14 % en FP16. Largement de place pour des tailles de lot plus grandes ou des fenêtres de contexte plus longues. ANDREA-12M n'a utilisé que 1,4 Go au total.
Où vit la précision mixte
ANDREA ne garde pas tout à une seule précision. L'entraînement en précision mixte stocke :
- Poids maîtres : FP32 (préserve la stabilité de l'entraînement)
- Calcul forward & backward : FP16 (utilise les tensor cores)
- État de l'optimiseur AdamW : FP32 (m & v ont besoin de précision pour les mises à jour long-tail)
- Tampon de gradients : FP16 (côté calcul)
Le budget mémoire final mélange les deux. L'empreinte réelle d'ANDREA se situe entre le FP16 pur (720 MB état optimiseur) & le FP32 pur (1.44 GB état optimiseur), plus proche du FP32 car m & v restent en FP32.
Dimensionner un Budget pour ANDREA-480M
Précision en Pratique
Activités Adjacentes
Trois activités sœurs liées à la précision :
- Activité 1 : Intro / Budget VRAM. La précision multiplie chaque terme dans l'arithmétique du budget mémoire. La règle empirique du multiplicateur 6-8x est sans unité ; bytes-par-param lui donne des unités.
- Activité 10 : AdamW. L'état de l'optimiseur (m & v) reste généralement en FP32 même lorsque le calcul forward/backward s'exécute en FP16. Raison : la précision de l'accumulateur long-tail est plus importante que la vitesse d'exécution pour l'optimiseur.
- Activité 12 : Clipping des gradients. Le clipping limite les magnitudes des gradients avant les mises à jour de l'état de l'optimiseur. Avec forward/backward en FP16 & optimiseur en FP32, le clipping se produit à la frontière où la précision change & où le risque de débordement se concentre.
La précision est un bouton gratuit : changez-la, le modèle s'entraîne plus vite & utilise moins de mémoire. Le coût est la vigilance numérique : gestion des NaN, scaling des pertes, discipline de précision mixte. ANDREA-120M v3 démontre le gain : 120M de paramètres entraînés sur du matériel grand public en 23 jours parce que FP16 a tout divisé par deux.