Chapitre 14 · Fine-tuning · 9 min
Spécialiser un modèle sans tout réentraîner
LoRA, QLoRA, SFT. Comment adapter un modèle généraliste à un domaine précis en entraînant 0,1 % de ses paramètres.
Le modèle de base, c'est quoi exactement ?
Quand GPT-4 ou Claude sortent de l'entraînement initial — des milliards de tokens de texte brut, en prédisant le mot suivant — ils savent beaucoup de choses. Mais ils ne savent pas comment se comporter.
Demande à un modèle brut de rédiger une lettre de motivation : il va probablement continuer la phrase comme un article Wikipédia sur les lettres de motivation. Ou pire, générer plusieurs réponses contradictoires, comme si le texte continuait une FAQ.
Le fine-tuning est l'étape qui transforme ce modèle brut en assistant utilisable : utile, cohérent, et adapté à un domaine.
Deux problèmes, deux solutions
Fine-tuning supervisé (SFT)
La forme la plus simple : montrer au modèle des paires (question, réponse idéale) et l'entraîner à produire ces réponses.
C'est ce qu'OpenAI a fait pour créer InstructGPT : des humains ont écrit des réponses exemplaires à des milliers de questions, et le modèle a appris à les imiter. Le résultat : un modèle qui "suit les instructions".
La limite : ça coûte cher en données humaines, et ça ne dit pas au modèle comment comparer deux réponses.
RLHF (et DPO en pratique)
On en a parlé au chapitre 08. Le renforcement par feedback humain apprend les préférences. C'est complémentaire au SFT, pas un remplacement.
Détail important : depuis 2024, le DPO (Direct Preference Optimization) a largement remplacé le PPO du RLHF classique pour la phase de préférences, surtout côté open source. Mais il ne l'a pas fait disparaître : la recette standard est aujourd'hui un empilement — SFT, puis optimisation de préférences (DPO et ses variantes), puis du RL à récompenses vérifiables (GRPO, popularisé par DeepSeek-R1 début 2025) pour le raisonnement. Le détail est dans le chapitre 08.
Mais toutes ces étapes ont en commun un problème de coût : elles modifient tous les paramètres du modèle. Pour un modèle de 70 milliards de paramètres, c'est plusieurs jours sur un cluster de dizaines de GPUs — des dizaines de milliers de dollars.
LoRA : entraîner 0,1 % des paramètres
LoRA (Low-Rank Adaptation) est une technique élégante : au lieu de modifier les poids W du modèle, on ajoute une mise à jour ΔW décomposée en deux petites matrices :
W_adapté = W_base + ΔW où ΔW = B × A
- A : matrice de rang r × dimension (petite)
- B : matrice dimension × rang r (petite)
- W_base : les poids d'origine — gelés, non modifiés
L'idée clé : les mises à jour de poids lors d'un fine-tuning ont une structure de rang faible en pratique. On n'a pas besoin d'une matrice complète pour capturer l'adaptation. Deux petites matrices suffisent.
À rang r = 8, pour une couche de dimension 4 096 : LoRA utilise 65 536 paramètres contre 16 millions pour la couche complète — soit 0,4 %.
Le titre annonçait 0,1 %, et les deux chiffres sont justes : 0,4 %, c'est le coût par matrice adaptée. Comme on n'applique en général LoRA qu'à une partie des matrices du modèle (souvent celles de l'attention), le total rapporté au modèle entier retombe autour de 0,1 %.
Joue avec le rang
Le rang r contrôle l'expressivité de la mise à jour. Observe comment ΔW change de structure quand tu fais varier r — et l'effet sur les réponses du modèle après fine-tuning.
LoRA ajoute deux petites matrices à côté des poids existants. Au lieu de modifier des milliards de paramètres, on en entraîne quelques millions — la majorité du modèle reste figée et partagée entre toutes les variantes fine-tunées.
Pourquoi ça marche si bien ?
La découverte surprenante des expériences LoRA : même à rang très faible (r = 4 ou 8), les performances après fine-tuning sont presque identiques à un fine-tuning complet. La raison intuitive : l'espace des adaptations utiles est intrinsèquement de faible dimension.
Autrement dit : pour spécialiser un modèle sur de la rédaction médicale ou du code Python, tu n'as pas besoin de modifier tous ses neurones. Quelques "directions" dans l'espace des poids suffisent.
QLoRA : descendre encore plus bas
Si LoRA réduit le nombre de paramètres entraînés, QLoRA (Quantized LoRA) réduit aussi la précision numérique des paramètres gelés.
Le modèle de base est chargé en 4 bits (au lieu de 16 ou 32), ce qui divise par 4 sa consommation mémoire. Les adaptateurs LoRA restent en 16 bits pour la précision du gradient. Pour la mécanique de la quantization elle-même (FP32 → INT4 → INT2, ce qu'on perd à chaque palier), voir le chapitre 18.
Résultat : fine-tuner un modèle de 70 milliards de paramètres sur un seul GPU grand public devient possible. C'est ce qui a permis l'explosion des modèles open-source spécialisés en 2023-2024.
La hiérarchie des adaptations
Aujourd'hui, les praticiens distinguent plusieurs niveaux :
Prompting : aucune modification du modèle. Quelques exemples dans le contexte. Rapide, zéro coût, limité.
RAG : connecter le modèle à une base de connaissances (chapitre 10). Pas de modification du modèle.
Fine-tuning LoRA : adapter le comportement et le style sur un dataset ciblé. Quelques heures sur un GPU, quelques milliers d'exemples. Le bon équilibre pour la plupart des cas.
Fine-tuning complet : modifier tous les paramètres. Nécessaire pour changer en profondeur les capacités du modèle (langues rares, domaine très spécifique). Coûteux.
Pré-entraînement : repartir de zéro ou continuer l'entraînement sur un nouveau corpus. Réservé aux labs ayant accès à des clusters de milliers de GPUs.
Ce que ça change pour toi
Si tu veux spécialiser un modèle pour ton cas d'usage — ton ton éditorial, ton domaine, tes formats de réponse — LoRA est aujourd'hui la technique de référence.
Des frameworks comme Hugging Face PEFT, Axolotl ou Unsloth — devenu l'outil le plus courant pour du LoRA/QLoRA sur un seul GPU — te permettent de lancer un fine-tuning en quelques lignes de Python. La vraie difficulté n'est pas technique : c'est de construire un dataset de qualité. Un bon fine-tuning commence par 500 exemples soigneusement écrits — pas par 10 000 exemples générés par ChatGPT.
Mis à jour le