Fine-Tuning et PEFT
Ce que vous saurez dans 3 minutes
- La différence critique entre Full Fine-Tuning (Lourd, Risqué) et PEFT (Léger, Sûr).
- Pourquoi LoRA est devenu le standard de facto de l’industrie.
- Combien ça coûte réellement d’adapter un modèle comme Llama 3 à vos données.
1. Comprendre
L’Analogie de l’Étudiant et du Stage
- Pre-Training (Modèle de Fondation) : C’est l’étudiant qui sort de 5 ans d’université. Il a une culture générale immense, il sait lire, écrire, raisonner. (Coût : Millions €).
- Fine-Tuning (Spécialisation) : C’est le stage de 6 mois dans une banque. Il apprend le jargon spécifique, les procédures internes et le ton de l’entreprise. (Coût : Milliers €).
Full Fine-Tuning vs PEFT
Avant 2021, pour spécialiser un modèle, on faisait du Full Fine-Tuning : on mettait à jour tous les neurones (100%).
- Problème 1 (Coût) : Il faut une armée de GPU (HBM saturée).
- Problème 2 (Oubli) : En apprenant la banque, le modèle oublie parfois comment écrire de la poésie (“Catastrophic Forgetting”).
Le PEFT (Parameter-Efficient Fine-Tuning) change la donne. On gèle le modèle (0 modification). On ajoute juste des petites couches “sandwich” par-dessus. On n’entraîne que ces couches ajoutées (< 1% des paramètres).
Focus sur LoRA (Low-Rank Adaptation)
LoRA est la star du PEFT. L’idée mathématique est géniale : les changements nécessaires pour spécialiser un modèle sont “de rang faible” (Low Rank). On peut les compresser dans deux minuscules matrices et dont le produit approxime le changement voulu.
2. Appliquer
Implémentation avec Hugging Face peft
C’est le standard industriel pour adapter Llama 3, Mistral, ou Gemma.
from transformers import AutoModelForCausalLM, AutoTokenizerfrom peft import LoraConfig, get_peft_model, TaskType
# 1. Charger le modèle (gelé par défaut si load_in_4bit)model_id = "meta-llama/Meta-Llama-3-8B"model = AutoModelForCausalLM.from_pretrained(model_id, load_in_4bit=True)
# 2. Définir la config LoRApeft_config = LoraConfig( task_type=TaskType.CAUSAL_LM, inference_mode=False, r=16, # Le "Rang". Plus c'est haut, plus c'est intelligent (et lourd). Standard: 8, 16, 32. lora_alpha=32, # Facteur d'échelle. Standard: 2x le rang. lora_dropout=0.1, target_modules=["q_proj", "v_proj"] # On cible les modules d'Attention)
# 3. Créer le modèle PEFTmodel = get_peft_model(model, peft_config)
# Preuve de l'efficacitémodel.print_trainable_parameters()# Output: "trainable params: 4,194,304 || all params: 7,000,000,000 || trainable%: 0.06%"# -> On entraîne seulement 0.06% du modèle !Comparatif réel pour adapter un modèle 70B (ex: Llama-3-70B) sur un corpus juridique.
| Méthode | GPU Requis | Temps | Coût Est. (Cloud) | Stockage Résultat |
|---|---|---|---|---|
| Full FT | 8x A100 (80GB) | 48h | ~1 500 € | 140 GB (Nouveau Modèle) |
| LoRA (PEFT) | 1x A100 (80GB) | 12h | ~50 € | 200 MB (Fichier Adapter) |
QLoRA : Encore plus loin
QLoRA (Quantized LoRA) combine la quantization 4-bit avec LoRA. Cela permet de fine-tuner un modèle massif (70B) sur une seule carte graphique grand public (RTX 4090) ou un petit GPU cloud (T4). C’est la démocratisation totale.
3. Aller plus loin
Quand PEFT ne suffit pas
PEFT est excellent pour :
- Le style (parler comme un pirate).
- Le format (sortir du JSON valide).
- Une base de connaissance légère.
PEFT est moins bon pour :
- Apprendre une langue totalement inconnue (ex: Sumérien ancien).
- Ingérer massivement des faits (mieux vaut utiliser le RAG pour ça).
Architecture Modulaire
L’avenir est aux modèles Multi-LoRA. Vous avez un modèle de base (Llama 3) et vous chargez dynamiquement des “cartouches” (Adapters) selon le besoin :
- L’utilisateur demande du code ? → Charge
adapter_python.safetensors - L’utilisateur demande une recette ? → Charge
adapter_cuisine.safetensors
C’est extrêmement efficace car la base reste en mémoire (RAM), on change juste les petits deltas (quelques Mo).
Questions Fréquentes
Fine-Tuning ou RAG ?
C’est LE débat classique.
- RAG : Pour donner des connaissances factuelles à jour (ex: Stock, News). C’est comme ouvrir un livre.
- Fine-Tuning : Pour donner un savoir-faire ou un comportement (ex: Parler poliment, raisonner en SQL). C’est comme suivre une formation. Souvent, on combine les deux.
Est-ce que je peux fusionner mon LoRA avec le modèle ?
Oui ! C’est l’opération de “Merge”.
merged_model = base_model + adapter.
Une fois fusionné, le modèle n’est pas plus lent que l’original. Zéro latence ajoutée.
Notions Liées (Spider Web)
- Base : LLM
- Technique Concurrente : RAG
- Optimisation : Quantization
Ressources Externes
- Hugging Face : PEFT Library Documentation
- Papier LoRA : LoRA: Low-Rank Adaptation of Large Language Models