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, la plupart des fine-tunings de préférence se font via DPO (Direct Preference Optimization) plutôt que via le PPO classique du RLHF. C'est ce qui transforme un modèle SFT-uniquement en modèle aligné, sans le coût compute du RL. Le détail est dans le chapitre 08.
Mais SFT et DPO/RLHF ont en commun un problème de coût : ils modifient tous les paramètres du modèle. Pour un modèle de 70 milliards de paramètres, c'est des semaines de calcul et des milliers de dollars GPU.
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 %.
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 ou Axolotl te permettent de lancer un fine-tuning LoRA 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