Inférence

Quantization

La quantization est la technique de représentation des poids d'un réseau de neurones — et optionnellement de ses activations — dans des formats numériques de faible précision tels que INT8 ou INT4 au lieu de la précision par défaut FP16 ou BF16, réduisant l'empreinte mémoire et accélérant l'inférence au prix d'une petite dégradation de précision mais généralement acceptable.

La quantization de réseau de neurones réduit le nombre de bits utilisés pour stocker les paramètres du modèle. Un grand modèle de langage standard stocke les poids en point flottant 16 bits (BF16), consommant 2 octets par paramètre : un modèle de 70 milliards de paramètres nécessite environ 140 GB à cette précision. La quantification en entiers 8 bits (INT8) réduit de moitié l'utilisation de la mémoire à environ 70 GB ; la quantization 4 bits (INT4 ou NF4) la réduit à environ 35 GB, plaçant un modèle 70B à la portée d'une paire de GPU NVIDIA RTX 4090 grand public (chacun avec 24 GB de VRAM) ou d'un seul A100 80 GB. La réduction de la mémoire se traduit directement par des coûts d'hébergement plus bas et permet le déploiement sur du matériel qui serait autrement insuffisant.

Deux méthodologies principales existent. La quantization post-entraînement (PTQ) applique la quantization à un modèle déjà entraîné sans mises à jour de gradient supplémentaires : GPTQ (2022) utilise une information d'ordre deux approximative pour minimiser l'erreur de quantization couche par couche ; AWQ (Activation-aware Weight Quantization, 2023) identifie et protège la petite fraction de poids qui contribue le plus à la magnitude des activations, préservant la précision à des largeurs de bits très faibles sans réentraînement. L'entraînement conscient de la quantization (QAT) insère une quantization simulée dans la boucle d'entraînement afin que le modèle apprenne à compenser la perte de précision lors de la descente de gradient, produisant une précision plus élevée que PTQ à la même largeur de bits au prix d'un calcul d'entraînement supplémentaire. Les formats hybrides tels que NF4 (4-bit NormalFloat, optimisé pour les poids qui suivent une distribution normale, utilisé dans bitsandbytes) et GGUF (le format de conteneur utilisé par llama.cpp pour l'inférence CPU et mixte CPU/GPU) sont devenus les formats de distribution dominants pour les modèles de poids ouvert.

La quantization est le principal catalyseur de l'inférence LLM locale et sur appareil. Sans elle, même un modèle de 7 milliards de paramètres en FP16 nécessite environ 14 GB de mémoire, dépassant la capacité de la plupart des GPU portables et des accélérateurs mobiles. À l'échelle du cloud, la quantization des poids INT8 réduit de moitié la demande de bande passante mémoire pendant la phase de décodage — le goulot d'étranglement dominant pour la génération de jetons — doublant à peu près le débit par GPU. La perte de précision est généralement négligeable à INT8 et petite mais mesurable à INT4 sur la plupart des benchmarks ; passer à 2 bits ou 1 bit entraîne une dégradation plus importante et reste une frontière de recherche active.

En 2026, la quantization des poids INT8 est essentiellement universelle dans les déploiements d'inférence cloud. La communauté open-source distribue presque tous les modèles de poids ouvert majeurs — LLaMA 3, Mistral, Qwen 2.5, Gemma 2 — en tant que fichiers quantifiés GGUF par défaut sur Hugging Face. Le framework MLX d'Apple exploite la quantization 4 bits pour l'inférence sur appareil sur Apple Silicon. BitNet b1.58 (2024) de Microsoft Research a démontré une précision compétitive avec des poids ternaires (−1, 0, +1), et Qualcomm a commercialisé des accélérateurs d'inférence INT4 dédiés dans les SoC mobiles. La quantization du cache KV — quantification indépendante des tenseurs d'attention stockés de FP16 à INT8 ou INT4 — est également devenue une pratique standard dans les piles de service en production, y compris vLLM et TensorRT-LLM.

Exemple

Un développeur exécute LLaMA 3 70B localement sur un seul GPU NVIDIA RTX 4090 en utilisant la quantization GGUF 4 bits via llama.cpp ; le modèle quantifié occupe environ 38 GB en mémoire système avec déchargement GPU partiel plutôt que les ~140 GB requis à la précision BF16 complète, permettant une inférence locale pratique avec seulement une légère réduction de la précision des benchmarks.

Termes liés

← Glossaire