Model Compression
La model compression (compression de modèle) est l’ensemble des techniques qui réduisent la taille, la consommation mémoire et le coût de calcul d’un modèle de deep learning, tout en préservant au maximum ses performances, pour permettre son déploiement sur du matériel aux ressources limitées.
Un LLM de 70 milliards de paramètres en FP16 pèse ~140 Go. Il nécessite plusieurs GPU pour l’inférence et des centaines pour l’entraînement. La model compression transforme ce mastodonte en un modèle qui tient sur un seul GPU consommateur, voire sur un smartphone, avec une dégradation de qualité souvent imperceptible. C’est ce qui rend possible l’exécution locale de modèles comme Llama 3 via Ollama ou llama.cpp.
Les quatre grandes familles de compression sont la quantization, le pruning, la knowledge distillation et la décomposition en bas rang. Chacune cible un type de redondance différent, et elles se combinent pour des gains multiplicatifs.
- Catégorie
- Optimisation de modèle / Déploiement
- Objectif
- Réduire taille, mémoire, latence en préservant la qualité
- Techniques principales
- Quantization, Pruning, Knowledge Distillation, Low-Rank Decomposition
- Gains typiques
- 2x à 10x+ de réduction de taille, 1,5x à 4x d’accélération
- Outils
- GPTQ, AWQ, llama.cpp, NVIDIA TensorRT, ONNX Runtime
- Phase
- Post-entraînement (PTQ) ou pendant l’entraînement (QAT)
Pourquoi compresser les modèles
La compression n’est plus une optimisation optionnelle. C’est une nécessité pour le déploiement en production. Plusieurs facteurs motivent son adoption systématique :
Coût d’inférence. Servir un LLM non compressé coûte cher en GPU. Réduire la taille du modèle de 4x (via quantization INT8) réduit proportionnellement le nombre de GPU nécessaires, et donc le coût par requête. Pour les services à grande échelle (ChatGPT, Claude, Perplexity), l’économie se chiffre en millions de dollars par mois.
Latence. La vitesse de génération d’un LLM est souvent limitée par la bande passante mémoire (memory-bound). Un modèle plus petit = moins de données à lire depuis la VRAM = des tokens générés plus vite. Un modèle 7B quantifié en INT4 peut générer 2 à 3x plus de tokens par seconde qu’en FP16 sur le même GPU.
Déploiement edge. Les smartphones, les systèmes embarqués et les appareils IoT ont des contraintes mémoire sévères (4-16 Go de RAM). La compression est la seule voie pour exécuter de l’IA avancée localement, sans dépendre du cloud.
Empreinte carbone. Moins de calcul = moins d’énergie. Des études montrent que la compression peut réduire la consommation énergétique de 30 à 50% tout en maintenant des performances comparables.
Les quatre familles de compression
Quantization : réduire la précision
La quantization convertit les poids et activations d’un format haute précision (FP32, BF16) vers un format basse précision (INT8, INT4, voire INT2). Chaque paramètre occupe moins de bits, ce qui réduit directement la taille du modèle et accélère les opérations matricielles.
Pour les LLM, les techniques de quantization les plus populaires sont :
| Technique | Type | Bits | Qualité | Usage principal |
|---|---|---|---|---|
| GPTQ | Post-entraînement (PTQ) | 4, 3, 2 | Bonne (4-bit) | Inférence GPU |
| AWQ | Post-entraînement (PTQ) | 4 | Excellente | Inférence GPU (vLLM) |
| GGUF | Post-entraînement (PTQ) | 2 à 8 | Variable | Inférence CPU/GPU (llama.cpp) |
| SmoothQuant | Post-entraînement (PTQ) | 8 | Excellente | Inférence INT8 optimisée |
| QAT | Pendant l’entraînement | 4, 8 | Optimale | Quand PTQ ne suffit pas |
La quantization est la technique de compression la plus utilisée pour les LLM. Son avantage principal : elle ne change pas l’architecture du modèle. Un modèle quantifié a exactement les mêmes couches, les mêmes connexions, juste des poids moins précis.
Pruning : supprimer les paramètres inutiles
Le pruning (élagage) supprime les poids, neurones ou couches qui contribuent le moins à la performance du modèle. L’idée repose sur l’hypothèse du « Lottery Ticket » (Frankle & Carlin, 2019) : un réseau de neurones contient un sous-réseau « gagnant » qui, entraîné isolément, atteint des performances comparables au réseau complet.
Il existe deux approches principales :
Pruning non structuré. Supprime des poids individuels (les met à zéro). Produit des matrices creuses (sparse). Offre des taux de compression élevés (50-90% de sparsité) mais nécessite du matériel ou des bibliothèques supportant les opérations sparse pour réaliser un gain de vitesse effectif. Sinon, la matrice reste la même taille en mémoire.
Pruning structuré. Supprime des structures entières (neurones, têtes d’attention, couches). Produit un modèle plus petit avec des matrices denses, directement accélérable sur n’importe quel matériel. NVIDIA a récemment démontré le pruning de profondeur (depth pruning) sur Qwen3-8B, réduisant le modèle à 6B paramètres avec une perte de qualité minimale après distillation.
Knowledge Distillation : apprendre d’un expert
La knowledge distillation (distillation de connaissances) entraîne un modèle « élève » (student) compact à imiter les sorties d’un modèle « professeur » (teacher) plus grand. Au lieu d’apprendre directement des labels durs (0 ou 1), l’élève apprend des distributions de probabilité « douces » (soft labels) du professeur, qui contiennent plus d’information sur les relations entre les classes.
Exemples concrets :
DistilBERT est une version distillée de BERT qui conserve 97% des performances tout en étant 60% plus petit et 60% plus rapide. Claude Haiku est un modèle compact d’Anthropic optimisé pour la vitesse et le coût, qui bénéficie de techniques de distillation depuis les modèles plus grands de la famille Claude. Dans le contexte des LLM modernes, DeepSeek V3 utilise la distillation de raisonnement à partir de son modèle R1 vers le modèle V3 standard.
Décomposition en bas rang (Low-Rank Decomposition)
Cette technique décompose les grandes matrices de poids en produits de matrices plus petites. Si une matrice de poids W (dimensions m × n) peut être approximée par le produit A × B (dimensions m × r et r × n, avec r ≪ min(m,n)), le nombre de paramètres passe de m×n à r×(m+n), soit une réduction significative.
LoRA (Low-Rank Adaptation) est l’application la plus célèbre de ce principe pour le fine-tuning. Plutôt que de modifier la matrice de poids complète, LoRA ajoute deux petites matrices de bas rang qui capturent les modifications nécessaires. Cela réduit drastiquement le nombre de paramètres entraînables (souvent 100x) et la mémoire requise.
Combiner les techniques : le pipeline standard
Les meilleures performances de compression s’obtiennent en combinant plusieurs techniques dans un pipeline séquentiel. L’ordre recommandé est :
1. Pruning structuré. Supprimer les couches ou têtes d’attention les moins importantes. Cela réduit la taille du modèle et simplifie l’architecture.
2. Knowledge distillation. Ré-entraîner le modèle élagué en utilisant le modèle original comme professeur. Cela récupère la qualité perdue par le pruning.
3. Quantization. Convertir le modèle distillé en INT8 ou INT4 pour réduire encore la taille et accélérer l’inférence.
Ce pipeline peut atteindre des taux de compression de 10x à 50x, transformant un modèle de recherche de plusieurs centaines de Go en un modèle de production de quelques Go. NVIDIA a démontré ce pipeline complet avec TensorRT Model Optimizer sur Qwen3-8B, produisant un modèle 6B pruné et distillé qui surpasse le modèle 4B original en vitesse et en précision.
Outils et frameworks
| Outil | Techniques | Spécialité |
|---|---|---|
| llama.cpp / GGUF | Quantization (2-8 bits) | Inférence CPU/GPU locale |
| AutoGPTQ | Quantization GPTQ | Inférence GPU optimisée |
| AutoAWQ | Quantization AWQ | Compatible vLLM, qualité élevée |
| NVIDIA TensorRT-LLM | Quantization, Pruning | Inférence GPU production NVIDIA |
| NVIDIA TensorRT Model Optimizer | Pruning, Distillation, Quantization | Pipeline compression complet |
| Hugging Face Optimum | Quantization (ONNX, OpenVINO) | Export et optimisation multi-plateforme |
| PyTorch Quantization | PTQ, QAT | Quantization native PyTorch |
| Intel Neural Compressor | Quantization, Pruning, Distillation | Optimisation pour CPU Intel |
Compression des LLM en pratique
Pour les LLM, la quantization domine largement les autres techniques. La raison : les LLM autorégressifs (decoder-only) sont memory-bound lors de la génération. Le goulot d’étranglement n’est pas le calcul mais la lecture des poids depuis la VRAM. Réduire la taille des poids de 16 bits à 4 bits accélère directement cette lecture de 4x.
Le pruning non structuré est moins efficace sur les LLM car les GPU modernes ne tirent pas bien parti des matrices creuses pour les opérations d’attention et de MLP des Transformers. Le pruning structuré (suppression de couches) est plus prometteur mais nécessite une phase de distillation coûteuse pour récupérer la qualité.
La distillation est très utilisée dans l’industrie : les modèles « slim » ou « mini » des grands fournisseurs (Claude Haiku, GPT-4o-mini, Gemini Flash) bénéficient de techniques de distillation depuis leurs modèles plus puissants. C’est une forme de compression au niveau de l’architecture plutôt qu’au niveau des poids.
Compromis qualité-compression
Toute compression implique un compromis. La question n’est pas « est-ce que ça dégrade ? » (oui, toujours un peu) mais « est-ce que la dégradation est acceptable pour mon cas d’usage ? »
En quantization INT8, la dégradation est quasi-imperceptible (< 1% sur les benchmarks standards). En INT4, elle est légèrement plus visible mais reste acceptable pour la plupart des applications (1-3% de dégradation). En INT2-INT3, la dégradation devient significative et le modèle peut perdre des capacités de raisonnement complexe.
Le pruning à 50% de sparsité avec fine-tuning préserve généralement 95-99% des performances. À 90% de sparsité, la dégradation dépend fortement de l’architecture et du dataset.
La distillation peut produire des modèles remarquablement performants : DistilBERT conserve 97% des performances de BERT avec 40% de paramètres en moins. Pour les LLM, les résultats varient davantage selon la taille de l’élève et la qualité des données de distillation.
Tendances et évolutions
Compression-aware training
La tendance dominante est d’intégrer la compression dès l’entraînement plutôt que de l’appliquer après coup. La Quantization-Aware Training (QAT) simule la quantization pendant l’entraînement pour que le modèle apprenne à compenser les erreurs d’arrondi. Le résultat est un modèle quantifié de meilleure qualité qu’un modèle quantifié post-entraînement. Pour les LLM, le coût de QAT est élevé (il faut ré-entraîner), mais les résultats sont supérieurs pour les quantizations agressives (INT4, INT2).
Matériel sparse
NVIDIA a introduit le support matériel de la sparsité structurée 2:4 (2 valeurs sur 4 sont zéro dans chaque bloc) depuis l’architecture Ampere (A100). Ce format de sparsité offre une accélération de ~2x sur les Tensor Cores tout en étant transparent pour l’utilisateur. L’adoption reste limitée car le pruning 2:4 nécessite un fine-tuning pour récupérer la qualité, mais c’est une direction prometteuse pour les futures architectures.
Impact environnemental
La compression joue un rôle croissant dans l’IA durable. Des études publiées en 2025 montrent que le pruning combiné à la quantization peut réduire la consommation énergétique de 30 à 50% pour l’inférence, avec un impact proportionnel sur les émissions de carbone. Pour les entreprises déployant de l’IA à grande échelle, la compression n’est plus seulement une optimisation technique mais aussi un levier de responsabilité environnementale.
Modèles nativement compacts
Plutôt que de compresser après coup, certains laboratoires conçoivent des architectures intrinsèquement efficaces. Les modèles Mixture of Experts (MoE) comme Mixtral et DeepSeek V3 n’activent qu’un sous-ensemble de paramètres par token, offrant les performances d’un grand modèle avec le coût d’inférence d’un petit. Les modèles « Small Language Models » (SLM) comme Phi-2 et Mistral Small 4 sont conçus dès le départ pour maximiser la qualité par paramètre, rendant la compression post-entraînement moins critique.
Guide pratique : compresser un LLM
Voici un workflow concret pour déployer un modèle 7B sur un GPU consommateur (24 Go) :
Étape 1 : Évaluer le modèle de base. Chargez le modèle en FP16 et mesurez la qualité (perplexité, scores sur vos benchmarks) et la consommation mémoire. Un 7B en FP16 ≈ 14 Go, il tient en 24 Go mais ne laisse pas de marge pour le KV cache et les gros batch sizes.
Étape 2 : Quantizer en INT4. Utilisez AutoAWQ ou AutoGPTQ pour quantifier le modèle. En AWQ, la commande est directe et le processus prend quelques minutes sur un seul GPU.
Étape 3 : Vérifier la qualité. Mesurez les mêmes benchmarks. La dégradation devrait être inférieure à 2-3%. Si elle est plus élevée, essayez INT8 ou un autre algorithme de quantization.
Étape 4 : Déployer. Servez le modèle quantifié avec vLLM (pour GPU) ou llama.cpp (pour CPU/GPU mixte). Le modèle 7B INT4 ≈ 3,5 Go tient confortablement en 24 Go avec une grande marge pour le KV cache.
Questions fréquentes sur la model compression
Quelle technique de compression est la meilleure pour les LLM ?
La quantization, et plus spécifiquement la quantization post-entraînement (PTQ) en 4 bits avec AWQ ou GPTQ. C’est la technique qui offre le meilleur rapport gain/effort pour les LLM : pas besoin de ré-entraîner le modèle, la taille est réduite de 4x, et la qualité est préservée à 95-99%. Pour des gains supérieurs, combinez avec du pruning structuré et de la distillation, mais cela nécessite un investissement en calcul et en ingénierie significatif.
La compression dégrade-t-elle toujours la qualité ?
Techniquement oui, car toute réduction de précision ou de paramètres perd de l’information. En pratique, la dégradation peut être imperceptible. La quantization INT8 est souvent qualifiée de « lossless » car la perte est en dessous du bruit de mesure des benchmarks. La distillation peut même améliorer certaines propriétés (vitesse de convergence, robustesse) si le modèle élève est bien conçu. Le seuil d’acceptabilité dépend de votre application : un chatbot grand public tolère bien INT4, un système médical critique peut exiger INT8 minimum.
Peut-on compresser un modèle déjà compressé ?
Oui, les techniques sont composables. Vous pouvez pruner un modèle, le distiller, puis le quantifier. Chaque étape ajoute de la compression. Cependant, les gains marginaux diminuent : compresser un modèle déjà à INT4 en INT2 produit un gain de taille de 2x mais une dégradation de qualité disproportionnée. L’ordre d’application compte : commencez par le pruning (structurel), puis la distillation (qualité), puis la quantization (taille).
Quelle est la différence entre compression et mixed precision ?
Le mixed precision (BF16/FP16) concerne l’entraînement : il réduit la mémoire et accélère le calcul pendant l’entraînement sans perte de qualité. La compression concerne principalement le déploiement et l’inférence : elle réduit la taille du modèle final pour le rendre déployable. Un modèle entraîné en BF16 mixed precision est ensuite compressé (quantifié en INT4, par exemple) pour l’inférence. Les deux sont complémentaires, pas concurrentes.
Combien de mémoire GPU faut-il pour un LLM compressé ?
Formule approximative : (nombre de paramètres × bits par paramètre) / 8 = taille en octets. Un modèle 7B en INT4 : 7 × 10⁹ × 4 / 8 = ~3,5 Go de VRAM pour les poids seuls. Ajoutez ~1-2 Go pour le KV cache et les activations. Un modèle 70B en INT4 : ~35 Go, ce qui tient sur un seul GPU de 48 Go (RTX 4090, A6000). Un modèle 7B en INT8 : ~7 Go, un 70B en INT8 : ~70 Go (nécessite un GPU 80 Go ou plusieurs GPU).