Fine-tuning Llama avec QLoRA
QLoRA (Quantized Low-Rank Adaptation) permet de fine-tuner des modèles Llama massifs sur un seul GPU grand public. C'est la technique la plus accessible pour adapter Llama à votre domaine.
Pourquoi QLoRA ?
- Mémoire réduite : Fine-tuner Llama 3.3 70B sur un seul GPU 24 Go
- Qualité préservée : Résultats proches du fine-tuning full
- Rapide : Quelques heures au lieu de jours
- Économique : Un seul GPU A100 ou même un RTX 4090
Concept technique
QLoRA combine trois innovations : 1. Quantization 4-bit : Le modèle de base est chargé en 4-bit (NF4) 2. LoRA : Seules de petites matrices d'adaptation sont entraînées 3. Paged optimizers : Gestion mémoire optimisée avec paging
Implémentation avec PEFT + bitsandbytes
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
# Configuration de la quantization
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype="bfloat16",
bnb_4bit_use_double_quant=True
)
# Charger le modèle en 4-bit
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.3-70B-Instruct",
quantization_config=bnb_config,
device_map="auto"
)
model = prepare_model_for_kbit_training(model)
# Configuration LoRA
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)Préparer les données
Format conversationnel recommandé :
[
{
"messages": [
{"role": "system", "content": "Tu es un expert juridique."},
{"role": "user", "content": "Analyse cette clause."},
{"role": "assistant", "content": "Cette clause stipule..."}
]
}
]Hyperparamètres recommandés
- Epochs : 2-3 (risque de sur-apprentissage au-delà)
- Learning rate : 2e-4 à 5e-5
- Batch size : 4-8 (gradient accumulation si mémoire limitée)
- LoRA rank (r) : 16-64 selon la complexité de la tâche
- Max seq length : 2048-4096 selon vos données
Bonnes pratiques
- Évaluez le modèle de base d'abord (le fine-tuning est-il nécessaire ?)
- Gardez 10-20% des données pour la validation
- Surveillez la loss de validation pour détecter le sur-apprentissage
- Testez le modèle tuné sur des cas non vus
- Mergez les poids LoRA pour l'inférence production (pas de surcoût)
Alternatives
- Unsloth : Wrapper optimisé, 2x plus rapide que PEFT standard
- Axolotl : Framework complet pour le fine-tuning LLM
- TRL : Bibliothèque Hugging Face pour RLHF et SFT