Chaque nombre d'un modèle est stocké avec une certaine précision, comme une règle graduée en millimètres ou en centimètres. Pendant des années, les modèles ont utilisé 16 ou 32 bits par nombre. On découvre qu'ils peuvent souvent se contenter de 8, de 4, voire de moins de 2.
Prometteurmise à jour du
I
L'idée, simplement
Les poids d'un modèle sont des nombres. Les stocker avec moins de bits, c'est comme arrondir : on perd un peu de détail, mais chaque nombre prend moins de place, se lit plus vite et se multiplie avec des circuits plus petits.
Le vrai gain est moins dans le calcul que dans le déplacement : comme le montre la figure de l'énergie sur la page principale, lire un nombre en mémoire coûte des centaines de fois plus que calculer avec. Diviser les bits par deux divise cette facture par deux.
II
Comment ça marche
L'astuce, c'est l'échelle par blocs : les nombres sont groupés en petits paquets qui partagent une échelle commune, si bien que quelques bits suffisent à décrire chacun par rapport à ses voisins. Les parties les plus sensibles (premières et dernières couches, sommes) restent en plus haute précision.
Deux voies existent : compresser après l'entraînement (rapide, mais la qualité chute en très basse précision), ou entraîner directement en basse précision, pour que le modèle apprenne à vivre avec l'arrondi dès le départ.
Mémoire nécessaire pour stocker 1 milliard de poids
32 bits4 Go
16 bits2 Go
8 bits1 Go
4 bits0,5 Go
1,58 bits≈ 0,2 Go
Avec trois valeurs, la multiplication disparaît :
+1ajouter le nombre0l'ignorer−1le soustraire
Schéma illustratif : il montre l'idée, pas des mesures.
Chaque fois qu'on divise la précision par deux, on divise par deux la mémoire à lire, donc l'énergie dépensée à la déplacer. Avec seulement −1, 0 ou +1, une multiplication devient une addition, une soustraction ou rien du tout.III
Trois marches vers le bas
Établi
8 bits : DeepSeek-V3 (2024)
Première validation de l'entraînement en 8 bits sur un modèle géant : la plupart des calculs matriciels de DeepSeek-V3 se font en FP8, avec une mise à l'échelle fine. L'erreur d'entraînement reste à moins de 0,25 % de la référence en 16 bits. C'est l'une des raisons de son faible coût d'entraînement.
NVIDIA a entraîné un modèle de 12 milliards de paramètres sur 10 000 milliards de mots en 4 bits, le plus long entraînement de ce type publié. Sur MMLU-Pro : 62,58 % contre 62,62 % en 8 bits. Sur les puces récentes, le 4 bits calcule 2 à 3 fois plus vite que le 8 bits avec moitié moins de mémoire. Environ 16 % des couches restent en plus haute précision, et le code est un peu moins bon.
Chaque poids vaut −1, 0 ou +1. Dès 3 milliards de paramètres, il égale un modèle en 16 bits entraîné sur les mêmes données, tout en étant 2,71 fois plus rapide et 3,55 fois moins gourmand en mémoire ; à 70 milliards, 4,1 fois plus rapide. Énergie de calcul estimée pour les produits de matrices : 71 fois moins.
Pas de raccourci pour les modèles existants : les poids ternaires doivent être appris dès le départ ; arrondir aussi fort un modèle existant le casse. Le matériel est en retard : les gains de BitNet ne sont pleinement réels que sur des puces conçues pour lui. Des tâches fragiles : le code et le calcul précis souffrent en premier. Et plus un modèle a vu de données, plus ses poids portent de détails fins, ce qui laisse moins de marge pour arrondir.
V
Ce que ça change pour nos hypothèses
Troisième facteur de H6 : les bits par poids. Le parallèle avec notre carnet est frappant : un modèle ternaire ne garde que le sens de chaque connexion (pour, contre, neutre), comme si les détails fins n'avaient pas leur place dans les poids. C'est exactement le partage que nous proposons : les grands principes dans le modèle, les détails précis dans une mémoire externe.
Prendre un même modèle ouvert en 16, 8 et 4 bits et poser aux trois versions les mêmes questions sur des articles d'OrigoTech. Notre pari : les faits (dates, chiffres) se dégradent avant le raisonnement. Si c'est le cas, c'est un argument pour ranger les faits hors des poids.