?
GuideavancéVérifié le 2025-05

Fine-tuning Llama avec QLoRA

Fine-tuner Llama sur vos données avec QLoRA pour un coût GPU minimal.

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

Sources

Llamafine-tuningQLoRA