Quantization des modèles Llama
La quantization réduit la précision des poids du modèle (de 16-bit à 4-bit ou 8-bit) pour diminuer drastiquement les besoins en mémoire GPU et accélérer l'inférence.
Formats de quantization
GGUF (llama.cpp)
- Usage : Inférence locale (CPU + GPU partiel)
- Outils : llama.cpp, Ollama, LM Studio
- Avantage : Fonctionne sur CPU, idéal pour les machines sans GPU puissant
- Variantes : Q2_K, Q3_K, Q4_K_M, Q5_K_M, Q6_K, Q8_0
# Utiliser un modèle GGUF avec Ollama
ollama run llama3.3:70b-q4_K_MGPTQ
- Usage : Inférence GPU avec frameworks Python
- Outils : AutoGPTQ, ExLlama, vLLM
- Avantage : Haute performance sur GPU, compatible Hugging Face
- Précision : Généralement 4-bit
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"TheBloke/Llama-3.3-70B-GPTQ",
device_map="auto"
)AWQ (Activation-aware Weight Quantization)
- Usage : Inférence GPU haute performance
- Outils : vLLM, AutoAWQ
- Avantage : Meilleure qualité que GPTQ à même taille, plus rapide
- Précision : 4-bit principalement
Comparatif qualité/taille
Impact sur la qualité (Llama 3.3 70B)
- FP16 (original) : 100% qualité, 140 Go VRAM
- Q8 : ~99% qualité, 70 Go VRAM
- Q6_K : ~98% qualité, 54 Go VRAM
- Q5_K_M : ~97% qualité, 48 Go VRAM
- Q4_K_M : ~95% qualité, 40 Go VRAM
- Q3_K : ~90% qualité, 30 Go VRAM
- Q2_K : ~80% qualité, 25 Go VRAM
Choisir le bon format
Par cas d'usage
- Local sur Mac/PC : GGUF Q4_K_M avec Ollama
- Serveur GPU dédié : AWQ avec vLLM
- Prototypage Python : GPTQ avec Hugging Face
- Production haute performance : AWQ ou FP8 avec vLLM
Règle du pouce
- Q4 est le sweet spot : -75% mémoire pour -5% qualité
- En dessous de Q4, la dégradation devient sensible
- Q8 est quasi-lossless mais ne divise la mémoire que par 2
Quantifier soi-même
# GGUF avec llama.cpp
python convert_hf_to_gguf.py model_dir --outtype q4_K_M
# AWQ avec AutoAWQ
from awq import AutoAWQForCausalLM
model = AutoAWQForCausalLM.from_pretrained(model_path)
model.quantize(tokenizer, quant_config={"w_bit": 4, "q_group_size": 128})Bonnes pratiques
- Testez la qualité sur VOS données après quantization
- Préférez les quantizations groupées (_K_M) pour un meilleur compromis
- Utilisez AWQ pour la production GPU, GGUF pour le local
- Surveillez les régressions sur les tâches critiques