?
SkillavancéVérifié le 2025-05

Quantization : GGUF, GPTQ, AWQ

Comprendre et appliquer les techniques de quantization pour réduire les besoins GPU.

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_M

GPTQ

  • 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

Sources

Llamaquantizationoptimisation