IA locale et open source · Septembre 2026

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.

4,58 Gio Llama 3.1 8B en Q4_K_M (14,96 Gio en F16)99 % du score BF16, au minimum, conservé en FP8 (Llama 3.1)-16,6 % en français selon des évaluateurs humains (103B, 4 bits)
En bref

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.

Formats utilisés en septembre 2026 ; bits par poids en moyenne sur le fichier complet.
FormatBits par poidsOù il tournePour quoi
GGUF k-quants (Q4_K_M, Q5_K_M, Q6_K, Q8_0)3 à 8,5llama.cpp, Ollama, LM Studio sur CPU, Apple Silicon, NVIDIA, AMDPortables, stations de travail
GGUF i-quants avec imatrix (IQ1_S à IQ4_XS)2 à 4,5Les mêmes moteursGrands modèles, peu de mémoire
GPTQ, AWQ (W4A16)4 plus échellesvLLM, SGLang, TransformersServeurs GPU, peu d'utilisateurs
EXL3FractionnaireExLlamaV3, TabbyAPI (NVIDIA)Qualité par bit sur un GPU grand public
bitsandbytes (int8, NF4)8 ou 4Transformers, PEFTFine-tuning QLoRA
FP8 (W8A8)8vLLM, SGLang sur Ada, Hopper, Blackwell, AMD MI300XProduction multi-utilisateurs
NVFP4, MXFP44,5 et 4,25Blackwell ; AMD MI355X (MXFP4) ; llama.cpp lit les deuxServeurs 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.

Tableau de llama.cpp pour LLaMA 3 8B sur Wikitext. La KLD mesure l'écart de la distribution du token suivant par rapport au FP16 (0 = identique).
TypeTailleKLDLecture
Q8_07,96 Gio0,0014Pratiquement sans perte
Q6_K6,14 Gio0,0055Quasi sans perte
Q5_K_M5,33 Gio0,0108Quasi sans perte
Q4_K_M (imatrix)4,58 Gio0,0282L'équilibre habituel
Q3_K_M (imatrix)3,74 Gio0,0844Perte visible
Q2_K2,96 Gio0,4451Forte perte
IQ1_S (imatrix)1,88 Gio2,2546Inutilisable 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.

Règle pratique

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.

Notre règle

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.

Recommandation du Slash AI Lab. Vitesses du DGX Spark : tests de llama.cpp (février 2026) et de LMSYS (octobre 2025).
MatérielCommencer parÀ éviter
Portable ou PC : GPU de 8 à 16 Go ou 16 à 32 Go de mémoire unifiée4B à 14B en Q4_K_M ou QAT ; Q5_K_M ou Q6_K si ça tientIQ2 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 bitsUn 70B compressé à 2 bits
Mac avec 64 à 512 Go de mémoire unifiéeGGUF ou MLX en 4 bits ; MXFP4 natif comme gpt-ossAttendre 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/s70B denses : 2,7 tokens/s en FP8
Serveur Ampere (A100), peu d'utilisateursW4A16 (AWQ, GPTQ) ; INT8 W8A8 si la concurrence augmenteCompter sur le calcul FP8
Serveur Ada ou Hopper (H100, H200), beaucoup d'utilisateursFP8 W8A8 et cache KV en FP8Des poids 4 bits non testés sous forte charge
Serveur Blackwell (B200, B300, RTX PRO 6000)NVFP4 ou FP8 ; les checkpoints FP4 de l'éditeurRequantifier 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.

  1. 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).
  2. Fixez une référence : le même modèle en BF16 ou FP8, ou la version native, en décodage glouton.
  3. 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é.
  4. Relisez l'espagnol et le français à la main : accents, accords, registre (tú ou usted, vous), glissements vers l'anglais.
  5. Testez les appels d'outils et le JSON avec le template de chat de production, en validant chaque sortie contre son schéma.
  6. 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

  1. llama.cpp quantize tool: README (types, sizes, speeds) · ggml-org / llama.cpp, 2026-09
  2. llama.cpp perplexity tool: README and KLD scoreboards · ggml-org / llama.cpp, 2026-09
  3. "Give Me BF16 or Give Me Death"? Accuracy-Performance Trade-Offs in LLM Quantization · arXiv (ACL 2025), 2024-11-04
  4. Accuracy is Not All You Need · Microsoft Research (arXiv), 2024-07-12
  5. How Does Quantization Affect Multilingual LLMs? · Cohere (arXiv, Findings of EMNLP 2024), 2024-07-03
  6. Quantization Hurts Reasoning? An Empirical Study on Quantized Reasoning Models · arXiv (COLM 2025), 2025-04-07
  7. Introducing NVFP4 for Efficient and Accurate Low-Precision Inference · NVIDIA Technical Blog, 2025-06-24
  8. FP8 W8A8 quantization · vLLM documentation, 2026-09
  9. gpt-oss-120b model card · OpenAI (Hugging Face), 2025-08-05
  10. Quantization-aware training (QAT) checkpoints for Gemma 4 · Google, 2026-06-05
  11. Unsloth Dynamic GGUFs (Dynamic 2.0 and 3.0) · Unsloth documentation, 2026-09
  12. Ollama FAQ: K/V cache quantization and concurrency · Ollama documentation, 2026-09-26

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.

Questions fréquentes

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.

Parler à Slash

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.

Écrire à Esteban