AWQ (Activation-aware Weight Quantization)
iaDéfinition
AWQ (Activation-aware Weight Quantization) est un algorithme de quantification post-entraînement pour LLMs développé par Lin et al. (MIT HAN Lab, 2023). Il se distingue de GPTQ par son approche : plutôt que de compenser les erreurs de quantification via la hessienne, AWQ identifie et protège les poids les plus "saillants" d'un LLM selon les activations, puis les quantifie avec plus de précision ou les laisse en float16. L'insight clé d'AWQ est que tous les poids d'un LLM ne sont pas égaux : environ 1% des poids correspondent à des canaux d'activation à forte magnitude et ont un impact disproportionné sur la qualité du modèle. Quantifier ces poids critiques en int4 naïvement dégrade significativement les performances, tandis que les 99% restants peuvent être quantifiés sans problème. AWQ identifie ces poids importants en analysant les statistiques d'activation sur un petit dataset de calibration. La stratégie d'AWQ est de "scaler" (mettre à l'échelle) les poids importants avant quantification via des facteurs de scaling par canal, rendant leur magnitude compatible avec la représentation int4. Ces facteurs de scaling sont absorbés dans la couche précédente, laissant le comportement mathématique du modèle inchangé. Le résultat est une quantification 4-bit de qualité supérieure à GPTQ avec un processus plus rapide. AWQ est aujourd'hui le format préféré pour les déploiements production avec vLLM et TGI (Text Generation Inference). vLLM supporte les modèles AWQ nativement avec des kernels CUDA optimisés (via l'implémentation llm-awq ou AutoAWQ), permettant un throughput d'inférence supérieur à GPTQ grâce à une meilleure utilisation des Tensor Cores. La bibliothèque AutoAWQ est la référence open-source pour créer et charger des modèles AWQ.
Quantification AWQ
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
model_path = "mistralai/Mistral-7B-Instruct-v0.2"
quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM"}
model = AutoAWQForCausalLM.from_pretrained(model_path, safetensors=True)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.quantize(tokenizer, quant_config=quant_config)
model.save_quantized("./mistral-7b-awq-4bit")
tokenizer.save_pretrained("./mistral-7b-awq-4bit")
Inférence AWQ avec vLLM
from vllm import LLM, SamplingParams
llm = LLM(
model="casperhansen/mistral-7b-instruct-v0.2-awq",
quantization="awq",
dtype="auto",
gpu_memory_utilization=0.90
)
outputs = llm.generate(["Explique le RAG en 3 points."],
SamplingParams(temperature=0.7, max_tokens=512))
Mémoire requise par taille de modèle
- 7B AWQ 4-bit : ~4 GB VRAM (RTX 3060 12GB suffisant)
- 13B AWQ 4-bit : ~7 GB VRAM (RTX 3080 10GB)
- 34B AWQ 4-bit : ~18 GB VRAM (RTX 3090/4090 24GB)
- 70B AWQ 4-bit : ~38 GB VRAM (2× A100 40GB ou 1× A100 80GB)
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h