← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· INSIGHT
La quantification des LLM expliquée : GGUF, Q4 vs Q8 et qualité
La quantification réduit la taille d'un LLM en stockant ses poids avec une précision moindre, divisant la VRAM par environ quatre à 4 bits. Ce guide explique le calcul de la VRAM, décode les noms de quantification GGUF comme Q4_K_M, compare GGUF à GPTQ et AWQ, et montre où la qualité se dégrade réellement.
Qu'est-ce que la quantification et pourquoi est-elle importante
La quantification réduit la précision numérique utilisée pour stocker les poids du modèle — généralement de FP16 (16 bits, 2 octets par poids) à 8 bits ou 4 bits. Comme la mémoire évolue linéairement avec les bits par poids, le 4 bits utilise environ quatre fois moins de VRAM que FP16. Cela accélère aussi l'inférence, car la génération de tokens est limitée par la bande passante mémoire, et pas seulement par le calcul.
Le calcul de la taille est simple : octets ≈ (paramètres × bits-par-poids) ÷ 8. Un modèle 8B en FP16 fait environ 16 Go ; en 4 bits, environ 4,5 Go. Cette différence transforme un modèle nécessitant un GPU de centre de données en un modèle capable de tourner sur un ordinateur portable.
GGUF est un format de fichier, pas une méthode
GGUF est un format de fichier unique qui stocke les poids quantifiés ainsi que les métadonnées du modèle (tokeniseur, architecture, hyperparamètres). C'est le successeur de GGML issu du projet llama.cpp, optimisé pour le CPU, Apple Silicon (Metal) et l'offload mixte CPU/GPU — ce qui explique pourquoi il domine l'inférence locale et sur ordinateur portable via llama.cpp, Ollama et LM Studio.
Le niveau de quantification figure dans le nom du fichier. Le chiffre correspond à la moyenne de bits par poids ; `_K` désigne les k-quants (la méthode moderne par super-blocs, avec des facteurs d'échelle doublement quantifiés et une allocation de bits tenant compte de la sensibilité des couches) ; `_S`, `_M`, `_L` sont les variantes petite, moyenne et grande. `_M` conserve sélectivement les couches sensibles — attention et sortie — avec une précision plus élevée, ce qui explique pourquoi Q4_K_M surpasse une quantification uniforme à 4 bits.
Q4 vs Q5 vs Q8 : taille et qualité, en chiffres
Une évaluation évaluée par les pairs sur Llama-3.1-8B rend les compromis concrets (les tailles concernent ce modèle ; les rapports se généralisent). Par rapport à une perplexité de référence FP16 d'environ 7,32 (plus c'est bas, mieux c'est) :
- Q8_0 — 8,5 bits/poids, ~7,95 Gio, perplexité 7,33 : essentiellement sans perte.
- Q6_K — 6,56 bpw, ~6,14 Gio, perplexité 7,35.
- Q5_K_M — 5,70 bpw, ~5,33 Gio, perplexité 7,40.
- Q4_K_M — 4,89 bpw, ~4,58 Gio, perplexité 7,56 : le point optimal en pratique, à moins d'un demi-pour cent de la référence.
- Q3 et en dessous — dégradation forte et constante, notamment sur les tâches de raisonnement.
La plage 4-5 bits est la zone sûre. En dessous de 3 bits, il faut recourir aux quantifications par matrice d'importance (IQ), qui utilisent des données de calibration pour concentrer la précision là où elle compte le plus — utilisables, mais en dernier recours lorsque la mémoire est très limitée.
GGUF vs GPTQ vs AWQ
GGUF n'est pas la seule option ; le bon choix dépend de l'environnement d'exécution.
- GGUF : conçu pour le CPU, Mac et l'offload mixte. À privilégier pour l'inférence locale et sur poste de travail.
- GPTQ : post-entraînement, basé sur la calibration, utilise des informations de second ordre pour minimiser l'erreur par couche. Le plus précis poids pour poids à une largeur de bits donnée, mais lent à produire et orienté vers le service GPU (vLLM, TGI, TensorRT-LLM).
- AWQ : protège environ 1 % des poids les plus importants d'après les magnitudes d'activation ; plus rapide à produire que GPTQ et optimisé pour GPU à 4 bits.
- bitsandbytes : quantifie à la volée au chargement, sans checkpoint pré-quantifié ni calibration — la voie la plus simple, très utilisée pour l'affinage QLoRA.
La répartition pratique : GGUF pour le local et l'ordinateur portable, AWQ ou GPTQ pour le débit sur serveur GPU.
Quelle perte de qualité observe-t-on réellement ?
Moins que la plupart des gens ne le craignent à 4 bits, et plus qu'ils ne l'imaginent en dessous de 3 bits. Sur l'évaluation Llama-3.1-8B, Q8 se situait dans la marge d'arrondi de la pleine précision, Q4_K_M a perdu moins d'un demi-pour cent sur les benchmarks moyens, et la rupture est apparue à 3 bits, avec la dégradation la plus nette sur les évaluations de raisonnement intensif comme les mathématiques de niveau primaire. N'oubliez pas que les chiffres absolus de perplexité et de taille sont propres à chaque modèle — les pourcentages se généralisent, mais vérifiez toujours les chiffres de votre modèle de base. Et réservez de la VRAM au-delà de la taille du fichier : le cache KV et environ 10 à 15 % de surcharge du framework ont eux aussi besoin de marge.
La quantification dans osFoundry
Choisir une quantification implique normalement de comprendre les bits par poids, de laisser de la place pour le cache KV et de fouiller dans un mur de suffixes GGUF cryptiques pour trouver le seul fichier qui convient sans planter. L'inférence locale d'osFoundry supprime cette étape : elle détecte votre mémoire disponible et sélectionne automatiquement la bonne quantification — Q4_K_M pour une VRAM serrée, Q5_K_M ou Q8_0 lorsqu'il y a de la marge — afin que le modèle tourne à la meilleure qualité que votre matériel prend en charge. Le catalogue n'affiche que les versions compatibles plutôt que toutes les variantes, et bascule en douceur vers une quantification plus légère si une plus lourde ne convient pas. Vous obtenez le point optimal entre taille et qualité d'un GGUF choisi à la main, sans avoir besoin de savoir ce que signifie Q4_K_M.
Frequently asked questions
- Qu'est-ce que la quantification de LLM en termes simples ?
- Il s'agit de stocker les poids d'un modèle avec une précision numérique moindre — par exemple 4 bits au lieu de 16 — afin de le réduire. Comme la mémoire évolue avec les bits par poids, la quantification à 4 bits utilise environ quatre fois moins de VRAM que FP16 et est plus rapide, pour un coût en qualité faible et généralement acceptable.
- Que signifie GGUF et qu'est-ce que c'est ?
- GGUF est le format de modèle à fichier unique du projet llama.cpp (le successeur de GGML) qui regroupe les poids quantifiés avec les métadonnées du modèle. Il est optimisé pour le CPU, Apple Silicon et l'inférence mixte CPU/GPU, ce qui en fait le standard des outils locaux comme llama.cpp, Ollama et LM Studio. C'est un format de fichier, pas un algorithme de quantification.
- Quelle est la différence entre Q4, Q5 et Q8 ?
- Le chiffre correspond à la moyenne de bits par poids, donc Q8 est plus volumineux et plus fidèle que Q5, lui-même plus volumineux que Q4. Sur un modèle 8B typique, Q8 est quasi sans perte avec environ 8 Go, Q5_K_M est un cran en dessous avec environ 5,3 Go, et Q4_K_M est le point optimal entre taille et qualité avec environ 4,6 Go et moins d'un demi-pour cent de perte.
- Quelle quantification GGUF dois-je utiliser ?
- Q4_K_M dans la plupart des cas — c'est le meilleur équilibre entre taille et qualité, et le point de départ standard. Passez à Q5_K_M ou Q8_0 si vous disposez de VRAM en réserve et souhaitez une meilleure fidélité, et ne descendez en dessous de Q4 (avec les quantifications IQ par matrice d'importance) que lorsque la mémoire est vraiment limitée, car la qualité chute fortement à 3 bits et en dessous.
- Quelle perte de qualité entraîne la quantification à 4 bits ?
- Étonnamment peu. Sur une évaluation évaluée par les pairs de Llama-3.1-8B, Q4_K_M s'est situé à moins d'un demi-pour cent de la référence en pleine précision sur les benchmarks moyens. La dégradation perceptible commence à 3 bits, notamment sur les tâches de raisonnement et de mathématiques. Les chiffres exacts varient selon le modèle, mais la plage 4-5 bits est largement considérée comme la zone sûre.
- GGUF vs GPTQ vs AWQ — lequel choisir ?
- GGUF pour l'inférence locale, sur ordinateur portable et Apple Silicon via llama.cpp ou Ollama. GPTQ et AWQ stockent une disposition adaptée au GPU et sont le meilleur choix pour le débit sur serveur GPU avec vLLM ou TGI — AWQ est plus rapide à produire, GPTQ est souvent le plus précis poids pour poids. bitsandbytes est le plus simple, car il quantifie au chargement sans calibration.
- Comment calculer la VRAM dont un modèle quantifié a besoin ?
- Utilisez octets ≈ (paramètres × bits-par-poids) ÷ 8. À 4 bits, cela représente environ 0,5 à 0,6 Go par milliard de paramètres, donc un modèle 8B fait environ 4,5 Go. Ajoutez ensuite de la marge pour le cache KV et environ 10 à 15 % de surcharge du framework — l'empreinte en cours d'exécution est toujours plus grande que le fichier sur disque.
Sources