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

Fine-tuning : LoRA, QLoRA, SFT expliqués · Step by Token