Chapitre 1 : Qu'est-ce que QLoRA ?
Adaptation Quantifiée de Bas Rang
QLoRA combine la quantification en 4 bits avec LoRA pour réduire considérablement les besoins en mémoire tout en maintenant la qualité.
L'Innovation QLoRA
Comparaison de la Mémoire
| Modèle | FT Complet | LoRA | QLoRA |
|---|---|---|---|
| 7B | ~80GB | ~14GB | ~6GB |
| 13B | ~160GB | ~26GB | ~10GB |
| 70B | ~600GB | ~140GB | ~48GB |
Comment Fonctionne QLoRA
- Charger le modèle de base en 4 bits (format NF4)
- Ajouter des adaptateurs LoRA en haute précision (bf16/fp16)
- Entraîner uniquement les paramètres LoRA
- Les gradients circulent à travers les poids déquantifiés
from transformers import BitsAndBytesConfig, AutoModelForCausalLM
from peft import LoraConfig, get_peft_model
# Configuration 4 bits
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
# Charger le modèle quantifié
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=bnb_config,
device_map="auto",
)
# Ajouter LoRA par-dessus
lora_config = LoraConfig(r=16, lora_alpha=32, ...)
model = get_peft_model(model, lora_config)
Composants Clés
NF4 (4-bit NormalFloat)
Format de quantification conçu pour les poids normalement distribués :
- Nombre égal de valeurs dans chaque bin
- Meilleur pour les poids de réseau neuronal que la quantification uniforme
Double Quantification
Quantifie les constantes de quantification :
- Économise environ ~0.4 bits supplémentaires par paramètre
- ~11% d'économies de mémoire supplémentaires
Optimiseurs Paginés
Gère les pics de mémoire pendant l'entraînement :
- Page les états de l'optimiseur vers le CPU lorsque nécessaire
- Prévient les erreurs OOM
Compromis Qualité vs Mémoire
| Méthode | Mémoire | Qualité (relative) |
|---|---|---|
| FT Complet | 100% | 100% |
| LoRA | 18% | 99% |
| QLoRA | 8% | 98% |
QLoRA atteint ~98% de la qualité de l'affinage complet avec ~8% de la mémoire.
Quand Utiliser QLoRA
✅ Utilisez QLoRA lorsque :
- Le GPU a < 24GB de VRAM
- Entraînement de modèles 7B+ sur du matériel consommateur
- Le coût est une préoccupation majeure
- Expérimenter et itérer rapidement
❌ Considérez LoRA/FT Complet lorsque :
- La qualité maximale est critique
- Vous avez une abondance de mémoire GPU
- Déploiement de modèle fusionné (surcharge de fusion)
Points Clés à Retenir
✅ QLoRA = quantification en 4 bits + LoRA ✅ Réduit la mémoire d'environ 60% par rapport à LoRA ✅ Perte de qualité minimale (~1-2%) ✅ Permet l'entraînement de modèles 70B sur 48GB ✅ Utilise le format NF4 et la double quantification