La quantification sans mythes : ce que vous gagnez, ce que vous perdez, ce qu'il faut mesurer
La quantification permet de faire tourner un modèle de 27B sur une seule carte graphique et un modèle de 120B sur un seul GPU de serveur. Elle n'est pas gratuite, et son coût apparaît rarement dans les moyennes des benchmarks. Voici ce que disent les mesures en septembre 2026, et comment nous décidons.
La quantification stocke les poids d'un modèle sur moins de bits (8, 5, 4, parfois 2) au lieu de 16. La mémoire baisse presque d'autant et, comme la génération est limitée par la bande passante mémoire, la vitesse augmente : Llama 3.1 8B passe de 14,96 Gio et 29 tokens par seconde en F16 à 4,58 Gio et 72 en Q4_K_M.
Le coût en qualité dépend de la méthode, de la taille du modèle et de la tâche : 8 bits est pratiquement sans perte, 4 à 6 bits un bon compromis et moins de 4 bits un risque, surtout pour les petits modèles, les agents et les textes non anglais. Notre règle : le format que votre matériel accélère, les versions natives ou QAT quand elles existent, et une validation en espagnol et en français.
Ce que fait la quantification, avec un exemple chiffré
Un modèle, ce sont des milliards de poids ; en BF16, chacun occupe 16 bits, soit 2 octets. Quantifier, c'est stocker chaque poids sur moins de bits (sur 4 bits, l'une de 16 valeurs possibles) avec une échelle partagée par chaque petit bloc de poids. Les formats diffèrent par les blocs, les échelles et les couches qui gardent plus de bits.
mémoire des poids (Go) ≈ paramètres (milliards) × bits par poids ÷ 8
8B en BF16 : 8 × 16 ÷ 8 = 16 Go
8B en Q4_K_M : 8 × 4,9 ÷ 8 ≈ 4,9 Go
70B en Q4_K_M : 70 × 4,9 ÷ 8 ≈ 43 Go
C'est cohérent avec llama.cpp : Q4_K_M fait en moyenne 4,89 bits par poids et Llama 3.1 70B arrive à 43,1 Go. Avec un seul utilisateur, la lecture des poids en mémoire est le goulot d'étranglement, donc la vitesse suit la taille : de 29 à 72 tokens par seconde entre F16 et Q4_K_M. Restent le cache KV et la qualité.
La carte des formats : qu'est-ce qui tourne où
Votre moteur et votre matériel choisissent le format avant tout classement.
| Format | Bits par poids | Où il tourne | Pour quoi |
|---|---|---|---|
| GGUF k-quants (Q4_K_M, Q5_K_M, Q6_K, Q8_0) | 3 à 8,5 | llama.cpp, Ollama, LM Studio sur CPU, Apple Silicon, NVIDIA, AMD | Portables, stations de travail |
| GGUF i-quants avec imatrix (IQ1_S à IQ4_XS) | 2 à 4,5 | Les mêmes moteurs | Grands modèles, peu de mémoire |
| GPTQ, AWQ (W4A16) | 4 plus échelles | vLLM, SGLang, Transformers | Serveurs GPU, peu d'utilisateurs |
| EXL3 | Fractionnaire | ExLlamaV3, TabbyAPI (NVIDIA) | Qualité par bit sur un GPU grand public |
| bitsandbytes (int8, NF4) | 8 ou 4 | Transformers, PEFT | Fine-tuning QLoRA |
| FP8 (W8A8) | 8 | vLLM, SGLang sur Ada, Hopper, Blackwell, AMD MI300X | Production multi-utilisateurs |
| NVFP4, MXFP4 | 4,5 et 4,25 | Blackwell ; AMD MI355X (MXFP4) ; llama.cpp lit les deux | Serveurs récents, modèles FP4 natifs |
Les noms sont des recettes : Q4_K_M est un mélange « medium » en 4 bits qui donne 6 bits à certains tenseurs sensibles, et les i-quants avec matrice d'importance (imatrix) s'appuient sur un texte de calibration pour savoir où l'arrondi fait le plus de dégâts. Côté GPU, AutoGPTQ et AutoAWQ, archivés, ont cédé la place à GPTQModel et à llm-compressor de vLLM (v7.5.0 et v0.14.0, septembre 2026) ; ExLlamaV3 (v1.5.2) a remplacé ExLlamaV2, mais son serveur, TabbyAPI, se présente comme un projet amateur.
Combien de qualité on perd : ce que disent les mesures
La perplexité dit peu ; l'écart avec l'original et les réponses qui basculent en disent plus.
| Type | Taille | KLD | Lecture |
|---|---|---|---|
| Q8_0 | 7,96 Gio | 0,0014 | Pratiquement sans perte |
| Q6_K | 6,14 Gio | 0,0055 | Quasi sans perte |
| Q5_K_M | 5,33 Gio | 0,0108 | Quasi sans perte |
| Q4_K_M (imatrix) | 4,58 Gio | 0,0282 | L'équilibre habituel |
| Q3_K_M (imatrix) | 3,74 Gio | 0,0844 | Perte visible |
| Q2_K | 2,96 Gio | 0,4451 | Forte perte |
| IQ1_S (imatrix) | 1,88 Gio | 2,2546 | Inutilisable sur un petit modèle |
Les moyennes cachent les dégâts : dans Accuracy is Not All You Need (Microsoft Research, 2024), des schémas qui ne déplaçaient la précision que de 0 à 2 % faisaient basculer jusqu'à 13,6 % des réponses. La taille compte aussi : dans l'étude ACL 2025 Give Me BF16 or Give Me Death?, les poids en 4 bits conservaient 99,5 % du score d'un modèle de raisonnement de 32B, mais 93,5 % pour un 1,5B.
Pour nous, la langue pèse le plus. L'étude de Cohere sur les modèles multilingues quantifiés (Findings of EMNLP 2024) montre que, pour un modèle de 103B en 4 bits, les métriques automatiques indiquaient une baisse de 0,3 % en français, et les évaluateurs humains de 16,6 %.
Sous 4 bits, la courbe se casse, et Unsloth déconseille le 1 bit pour les agents : ils bouclent et cassent les appels d'outils. À mémoire égale, un modèle plus grand en 4 ou 5 bits l'emporte en général : dans les tests d'Unsloth, Gemma 3 27B en Q4_K_M (15,4 Go) obtient 71,2 % sur MMLU, contre 67,2 % pour Gemma 3 12B en BF16 (environ 24 Go).
FP8, FP4 et les modèles livrés déjà quantifiés
Sur les GPU récents, le format est gravé dans le silicium, et de plus en plus de modèles sont entraînés pour lui.
Le FP8 est le choix sûr sur serveur : la même étude ACL 2025 (plus de 500 000 évaluations sur Llama 3.1) le juge pratiquement sans perte à toutes les tailles, l'INT8 perdant de 1 à 3 %. vLLM annonce deux fois moins de mémoire et jusqu'à 1,6 fois plus de débit, mais le calcul en FP8 exige Ada, Hopper ou Blackwell ; une A100 n'exécute les checkpoints FP8 que comme des poids 8 bits.
MXFP4 et NVFP4 sont des formats à virgule flottante sur 4 bits : MXFP4 partage une échelle en puissance de deux sur 32 valeurs (4,25 bits par poids), le NVFP4 de NVIDIA une échelle FP8 plus fine toutes les 16 (4,5 bits). NVIDIA annonce une dégradation de 1 % ou moins en passant DeepSeek-R1-0528 du FP8 au NVFP4. Seul Blackwell accélère le NVFP4 ; le MXFP4 l'est aussi sur la MI355X d'AMD.
Les versions natives changent les règles. OpenAI a publié gpt-oss (5 août 2025) avec des poids d'experts en MXFP4 : le 120b tient sur un GPU de 80 Go, et les scores publiés sont ceux du modèle quantifié. Kimi K2 Thinking utilise un INT4 natif, DeepSeek-V4 (avril 2026) livre ses experts en FP4, et Gemma 4 en version QAT (entraînée pour la quantification, 5 juin 2026) ramène le 31B de 69,9 Go à 17,5 Go.
Si l'éditeur publie un checkpoint natif ou QAT en basse précision, utilisez-le tel quel. Le requantifier ajoute de l'erreur : convertir en Q4_K les experts MXFP4 de DeepSeek-V4-Flash a presque triplé la KLD dans les mesures d'Unsloth (0,029 contre 0,010).
Le cache KV : la mémoire que personne ne budgète
Avec un long contexte, la mémoire de travail de la conversation peut peser plus que le modèle.
Chaque token du contexte stocke des clés et des valeurs dans chaque couche d'attention ; la taille se déduit du config.json du modèle :
KV par token = 2 × couches × têtes KV × dimension de tête × octets par valeur
Qwen3-32B, 16 bits : 2 × 64 × 8 × 128 × 2 o = 256 Kio
32 768 tokens ≈ 8 Gio, 131 072 tokens ≈ 32 Gio (par requête)
L'architecture change le résultat : gpt-oss-120b, avec ses couches à fenêtre glissante, n'a besoin que de 36 Kio par token, et Qwen3.8-27B, avec ses couches d'attention linéaire, de 64 Kio. Chaque requête parallèle a son propre cache : la mémoire croît avec les slots parallèles multipliés par le contexte, rappelle Ollama.
Quantifier le cache est le levier suivant : q8_0 ou q4_0 dans Ollama (OLLAMA_KV_CACHE_TYPE) et llama-server (--cache-type-k, --cache-type-v), FP8 dans vLLM (--kv-cache-dtype). Une étude COLM 2025 trouve un cache 4 bits sans perte sur des modèles de 14B et 32B, mais un cache 3 bits qui coûte plus de 5 % sur ceux de 1,5B et 7B, et recommande 8 bits ; Unsloth a constaté une dégradation en 4 bits.
Calculez le cache pour votre contexte p95 réel multiplié par les requêtes simultanées attendues, et commencez par q8_0 ou FP8 si la mémoire manque. N'utilisez q4_0 qu'après avoir testé vos documents réels les plus longs.
Quel format pour quel matériel
Nos points de départ en septembre 2026 ; votre propre évaluation tranche.
| Matériel | Commencer par | À éviter |
|---|---|---|
| Portable ou PC : GPU de 8 à 16 Go ou 16 à 32 Go de mémoire unifiée | 4B à 14B en Q4_K_M ou QAT ; Q5_K_M ou Q6_K si ça tient | IQ2 et IQ1 sur de petits modèles |
| Un GPU de 24 à 32 Go (RTX 3090, RTX 5090) | 27B à 32B en Q4_K_M ou Q5_K_M, ou EXL3 à 4 ou 5 bits | Un 70B compressé à 2 bits |
| Mac avec 64 à 512 Go de mémoire unifiée | GGUF ou MLX en 4 bits ; MXFP4 natif comme gpt-oss | Attendre le débit d'un serveur GPU |
| DGX Spark (128 Go à 273 Go/s) | MoE natifs en MXFP4 ou NVFP4 : gpt-oss-120b à environ 61 tokens/s | 70B denses : 2,7 tokens/s en FP8 |
| Serveur Ampere (A100), peu d'utilisateurs | W4A16 (AWQ, GPTQ) ; INT8 W8A8 si la concurrence augmente | Compter sur le calcul FP8 |
| Serveur Ada ou Hopper (H100, H200), beaucoup d'utilisateurs | FP8 W8A8 et cache KV en FP8 | Des poids 4 bits non testés sous forte charge |
| Serveur Blackwell (B200, B300, RTX PRO 6000) | NVFP4 ou FP8 ; les checkpoints FP4 de l'éditeur | Requantifier du FP4 natif |
Les lignes serveur suivent l'étude ACL 2025 : 4 bits est rentable quand peu d'utilisateurs attendent, 8 bits l'emporte avec le batching continu. Sur Mac et DGX Spark, la bande passante commande : les modèles à mélange d'experts (MoE) avec peu de paramètres actifs y tournent bien plus vite. Voir aussi le matériel pour l'IA locale en 2026 et du portable au serveur.
Comment valider une quantification sur vos propres tâches
Une demi-journée de tests évite des semaines de défaillances silencieuses.
- Figez un jeu d'évaluation tiré du travail réel, avec réponses attendues. Chez Slash, nous utilisons 30 prompts fixes par client en espagnol, en anglais et en français (méthode dans notre guide des évaluations de LLM).
- Fixez une référence : le même modèle en BF16 ou FP8, ou la version native, en décodage glouton.
- Mesurez la KLD et les réponses qui basculent sur vos textes, par tâche et par langue, pas sur le texte de calibration : Unsloth prévient que cela surestime la qualité.
- Relisez l'espagnol et le français à la main : accents, accords, registre (tú ou usted, vous), glissements vers l'anglais.
- Testez les appels d'outils et le JSON avec le template de chat de production, en validant chaque sortie contre son schéma.
- Testez le contexte long avec le cache KV de production, et consignez hash, type de quantification, version du moteur et template pour tout relancer au moindre changement.
Cinq erreurs fréquentes
- Le mauvais template de chat. Un GGUF embarque son propre template Jinja, appliqué par défaut dans llama-server. S'il ne correspond pas au format d'entraînement, les réponses se dégradent sans erreur visible et les appels d'outils lâchent en premier. Un template peut aussi cacher des instructions (Pillar Security, 2025) : relisez-le comme du code.
- Trop quantifier les petits modèles. IQ1_S fait passer la perplexité de Llama 3 8B de 6,2 à 60,7. Sous 8B, restez à 4 bits ou plus.
- Oublier le contexte par défaut. D'après Ollama, il utilise 4K tokens sous 24 Gio de VRAM : un long document ne tient pas sans l'augmenter.
- Requantifier ce qui l'est déjà : des poids natifs MXFP4 ou INT4, ou un GGUF construit à partir d'un checkpoint quantifié plutôt que du BF16. Et gardez le projecteur de vision (mmproj) en BF16 ou Q8, comme le conseille llama.cpp.
- Se fier au chiffre d'un autre. Une perplexité mesurée sur un autre texte avec un autre moteur dit peu de chose de votre cas. Pour choisir d'abord le modèle, voir les modèles open-weight en 2026.
L'essentiel
- La quantification échange des bits contre de la mémoire et de la vitesse : Llama 3.1 8B passe de 14,96 Gio en F16 à 4,58 Gio en Q4_K_M et génère environ 2,5 fois plus vite.
- Q8_0 et FP8 sont pratiquement sans perte ; Q4_K_M est le point de départ raisonnable ; sous 4 bits, la qualité chute vite.
- Petits modèles, agents, espagnol et français souffrent plus que ne le disent les moyennes : 16,6 % de perte en français selon des évaluateurs humains, 0,3 % en métriques automatiques.
- FP8 sur Ada, Hopper et Blackwell, FP4 sur Blackwell, GGUF ailleurs ; les versions natives et QAT s'utilisent telles quelles.
- Budgétez le cache KV et validez chaque quantification sur vos prompts, votre JSON et vos appels d'outils.
Sources
- llama.cpp quantize tool: README (types, sizes, speeds)
- llama.cpp perplexity tool: README and KLD scoreboards
- "Give Me BF16 or Give Me Death"? Accuracy-Performance Trade-Offs in LLM Quantization
- Accuracy is Not All You Need
- How Does Quantization Affect Multilingual LLMs?
- Quantization Hurts Reasoning? An Empirical Study on Quantized Reasoning Models
- Introducing NVFP4 for Efficient and Accurate Low-Precision Inference
- FP8 W8A8 quantization
- gpt-oss-120b model card
- Quantization-aware training (QAT) checkpoints for Gemma 4
- Unsloth Dynamic GGUFs (Dynamic 2.0 and 3.0)
- Ollama FAQ: K/V cache quantization and concurrency
Note éditoriale : cette analyse reflète les informations publiques disponibles à la date de révision. Modèles, prix et règles évoluent vite ; chaque donnée tierce renvoie à sa source et nos opinions sont présentées comme telles. Une erreur ? Écrivez à contact@slash-digital.io.
Les questions qu'on nous pose souvent
Quelle est la meilleure quantification pour Ollama ou LM Studio ?
Q4_K_M, le choix par défaut de la bibliothèque d'Ollama, est l'équilibre habituel. Si la mémoire le permet, Q5_K_M et Q6_K sont quasi sans perte et Q8_0 pratiquement sans perte. Si l'éditeur publie une version QAT, comme le Q4_0 de Gemma, commencez par celle-ci.
La quantification accélère-t-elle le modèle ?
Pour un seul utilisateur, oui : la génération est limitée par la bande passante mémoire, donc un fichier plus petit génère plus vite (de 29 à 72 tokens par seconde entre F16 et Q4_K_M dans l'exemple de llama.cpp). Sur des serveurs avec beaucoup de requêtes simultanées, les formats 8 bits comme le FP8 sont souvent plus efficaces que les poids 4 bits.
Puis-je faire tourner un modèle de 70B sur un GPU de 24 Go ?
Pas confortablement. En Q4_K_M, un 70B demande environ 43 Go rien que pour les poids : il faudrait décharger des couches en mémoire système, ce qui est lent, ou descendre sous 3 bits, ce qui coûte en qualité. Un modèle de 27B à 32B en 4 ou 5 bits est généralement un meilleur choix.
Le FP8 est-il meilleur qu'AWQ ou GPTQ en 4 bits ?
Ils résolvent des problèmes différents. Le FP8 est pratiquement sans perte et convient au service à forte concurrence sur Ada, Hopper ou Blackwell. Les poids 4 bits compressent environ 3,5 fois et conviennent quand la latence prime avec peu d'utilisateurs, avec une petite perte à mesurer.
La quantification pénalise-t-elle plus l'espagnol et le français que l'anglais ?
Elle le peut, et les benchmarks automatiques le masquent : dans l'étude de Cohere, un modèle de 103B en 4 bits perdait 0,3 % en français selon les métriques automatiques et 16,6 % selon des évaluateurs humains. Prévoyez toujours une relecture par des locuteurs natifs.
D'autres analyses à lire
IA locale en 2026 : quel matériel acheter et ce qui tourne dessus
RTX 5090, RTX PRO 6000, DGX Spark, Ryzen AI Max+ et Mac Studio M5 : calcul de mémoire, quel modèle tient où, acheter ou louer et choix par taille d'équipe.
IA locale et open sourceDu portable au serveur : Ollama, llama.cpp, vLLM et SGLang
Quel moteur pour une personne, une équipe ou la production, les techniques qui multiplient le débit, comment sécuriser et superviser, et quand une API coûte moins.
Agents et ingénierieEvals : tester un système à base de LLM
Pourquoi tester à l'intuition échoue : jeu de référence en espagnol et en français, juges LLM calibrés, seuils bloquants en CI, outils et coût des evals.
Mettons-le en production
Racontez-nous votre défi. Nous répondons sous 24 heures ouvrées avec une première lecture honnête : si nous pouvons aider, nous dirons comment ; sinon, nous dirons qui peut.
Je réponds en personne. Pas de formulaires interminables ni de réponses automatiques.