Un modèle contient des milliards de valeurs numériques. En FP16, chaque valeur occupe environ 16 bits, soit 2 octets. En INT4, elle vise 4 bits, soit environ un demi-octet. La réalité ajoute des métadonnées, des échelles et d'autres buffers, mais cet ordre de grandeur reste utile.
Le calcul de premier ordre
La formule simplifiée est: nombre de paramètres × bits par paramètre ÷ 8. Pour 8 milliards de paramètres en 4 bits, on obtient environ 4 milliards d'octets.
Pourquoi la qualité peut baisser
Réduire la précision revient à regrouper plusieurs valeurs proches dans un nombre plus petit de niveaux. La plupart des poids tolèrent bien cette approximation. Certains poids sensibles transportent cependant plus d'information. Une méthode de quantization efficace détecte ou protège mieux ces cas.
La perte varie selon le modèle, la méthode, le niveau de quantization et la tâche. Une légère baisse moyenne peut devenir visible sur le raisonnement long, le code, les langues moins représentées ou les très grands contextes.
Formats et méthodes courants
GGUF
Format courant avec llama.cpp. Très portable, pratique sur CPU, GPU et machines avec offloading.
GPTQ, AWQ, EXL2
Méthodes orientées GPU avec des compromis différents entre préparation, vitesse, précision et flexibilité.
Les noms Q4, Q5 ou Q8 décrivent une famille de niveaux, pas une qualité universelle. Deux fichiers annoncés en 4 bits peuvent utiliser des groupes et des traitements différents.
Pourquoi un 14B tient ou non dans 12 Go
Un 14B en FP16 demande environ 28 Go pour ses seuls poids. Une version 4 bits descend près de 7 Go, plus les métadonnées. Elle peut donc entrer dans 12 Go de VRAM avec une marge modérée.
Mais la longueur du contexte, le batch, le runtime et le KV cache consomment aussi de la mémoire. Un contexte très long ou plusieurs requêtes simultanées peuvent dépasser la capacité disponible. Le logiciel peut alors placer certaines couches en RAM, au prix d'une vitesse plus faible.
Choisir sans se perdre
Commencez avec une quantization recommandée par la communauté du runtime choisi. Comparez ensuite deux niveaux sur vos propres tâches avec le même prompt, le même contexte et les mêmes paramètres de génération.
L’essentiel
- Taille des poids ≈ nombre de paramètres × bits par paramètre ÷ 8.
- Un 8B pèse environ 16 Go en FP16, 8 Go en INT8 et 4 Go en INT4, hors contexte et buffers.
- La perte de qualité dépend du modèle, de la méthode, du niveau choisi et de la tâche.
- GGUF vise la portabilité avec llama.cpp ; GPTQ, AWQ et EXL2 ciblent surtout le GPU.
- La meilleure quantization tient avec une marge, reste rapide et garde la qualité dont vous avez besoin.
Testez-vous
Répondez de tête ou par écrit, puis vérifiez. Se tester juste après la lecture aide à retenir.
Combien de mémoire occupent les poids d'un modèle 14B en 4 bits ?
Voir la réponse
Environ 14 milliards × 4 ÷ 8 = 7 milliards d'octets, soit près de 7 Go, plus les métadonnées. Il faut encore ajouter le contexte et les buffers du runtime.
Deux fichiers annoncés Q4 donnent-ils forcément la même qualité ?
Voir la réponse
Non. Q4 désigne une famille de niveaux. Les groupes, les échelles et le traitement des poids sensibles varient selon la méthode et le fichier.
Sur quelles tâches une perte de qualité apparaît-elle le plus souvent ?
Voir la réponse
Le raisonnement long, le code, les langues moins représentées et les très grands contextes révèlent plus facilement la perte de précision.
Sources et pour aller plus loin
- GPTQ : quantization précise après entraînement pour les grands Transformers (Frantar et al., 2022).
- AWQ : protéger les poids importants selon les activations (Lin et al., 2023).
- Quantization dans la documentation Transformers : panorama des méthodes et de leurs compromis.