Instruction Tuning
L’instruction tuning est une forme de fine-tuning supervisé (SFT) qui consiste à entraîner un LLM pré-entraîné sur un dataset de paires (instruction, réponse) pour lui apprendre à comprendre et exécuter des consignes en langage naturel, plutôt que simplement prédire le prochain token.
- Catégorie
- Technique de post-entraînement / Fine-tuning supervisé
- Introduit par
- Google Research (FLAN, Wei et al., 2021)
- Objectif
- Aligner le modèle avec les intentions de l’utilisateur (suivre des instructions)
- Données
- Paires (instruction, réponse) en langage naturel
- Position dans le pipeline
- Après le pré-entraînement, avant le RLHF/DPO
- Modèles emblématiques
- FLAN-T5, FLAN-PaLM, InstructGPT, Alpaca, Vicuna, Llama-Instruct, Mistral-Instruct
Le problème que résout l’instruction tuning
Un LLM pré-entraîné est fondamentalement un modèle de complétion de texte. Son objectif d’entraînement est de prédire le prochain token étant donné le contexte précédent. Quand vous lui écrivez « Traduis cette phrase en espagnol : Le chien court. », le modèle ne « comprend » pas que vous lui donnez une consigne. Il voit simplement une séquence de tokens et essaie de prédire ce qui viendrait naturellement après dans un texte.
Le résultat est souvent décevant : le modèle peut continuer votre phrase, reformuler votre instruction, ou générer un texte vaguement lié au sujet sans jamais produire la traduction demandée. L’observation fondamentale, formulée dès 2020 dans le papier GPT-3, est que des passages ressemblant à une tâche NLI (Natural Language Inference) ou à une instruction explicite apparaissent rarement dans les corpus de textes utilisés pour le pré-entraînement. Le modèle n’a tout simplement jamais vu de paires instruction-réponse pendant son entraînement initial.
L’instruction tuning comble cette lacune. En entraînant le modèle sur des milliers de paires (instruction, réponse), on lui apprend un nouveau « mode » d’interaction : quand il reçoit un texte qui ressemble à une instruction, il doit produire une réponse qui exécute cette instruction, pas juste compléter la séquence.
Comment fonctionne l’instruction tuning
Le format des données
Chaque échantillon d’entraînement en instruction tuning contient trois éléments :
L’instruction. Une consigne en langage naturel qui spécifie une tâche. Par exemple : « Résumez le texte suivant en trois phrases. » ou « Classifiez ce commentaire comme positif ou négatif. »
Le contexte (optionnel). Des informations supplémentaires nécessaires pour exécuter la tâche. Par exemple : le texte à résumer, le commentaire à classifier, ou la phrase à traduire.
La réponse. Le résultat attendu qui démontre le comportement souhaité. C’est la « bonne réponse » sur laquelle le modèle va s’entraîner par apprentissage supervisé.
Contexte : « The dog runs quickly. »
Réponse : « Le chien court rapidement. »
L’entraînement utilise la cross-entropy standard comme fonction de perte, exactement comme pour le pré-entraînement. La différence est dans les données : au lieu de textes bruts, le modèle s’entraîne sur des paires structurées instruction-réponse.
Coût de calcul
Un point crucial : l’instruction tuning est très économique par rapport au pré-entraînement. Le papier FLAN-T5 rapporte que le fine-tuning ne représente que 0,2 % du coût de calcul du pré-entraînement (environ 128 TPU v4 pendant 37 heures pour FLAN-T5 11B). On parle de quelques milliers à quelques dizaines de milliers de pas d’entraînement, contre des centaines de milliers pour le pré-entraînement. C’est la « cerise sur le gâteau » du pré-entraînement, pour reprendre la métaphore du papier FLAN original.
Les datasets d’instruction tuning
Les datasets d’instruction tuning se construisent de deux façons principales.
Méthode 1 : Transformation de datasets existants
On prend des datasets NLP annotés existants (SQuAD pour le QA, WMT pour la traduction, etc.) et on applique des templates pour les convertir en format instruction. Par exemple, une paire (question, réponse) de SQuAD devient « Répondez à la question suivante en vous basant sur le contexte fourni : [contexte] Question : [question] » → [réponse].
C’est l’approche utilisée par les datasets Flan et P3, qui agrègent des centaines de datasets NLP existants. Flan couvre plus de 1 800 tâches, ce qui en fait l’un des plus vastes datasets d’instruction tuning.
Méthode 2 : Génération par LLM
On utilise un LLM puissant (comme GPT-4 ou Claude) pour générer des paires instruction-réponse à partir d’instructions amorces. C’est l’approche Self-Instruct (Wang et al., 2022), utilisée pour créer le dataset Alpaca (52 000 paires générées par InstructGPT). Plus récemment, des méthodes comme Evol-Instruct (WizardLM) augmentent progressivement la complexité des instructions générées.
L’avantage est la scalabilité et la diversité. L’inconvénient est le risque de propager les biais et limites du modèle générateur (distillation des défauts).
Méthode 3 : Annotation humaine
Des annotateurs humains rédigent directement des instructions et leurs réponses. C’est l’approche la plus coûteuse mais la plus qualitative. Les datasets notables incluent OpenAssistant (91 829 prompts humains en 35 langues), Dolly (15 000 instances en anglais), et ShareGPT (conversations partagées par les utilisateurs de ChatGPT).
Datasets majeurs
| Dataset | Taille | Méthode | Modèles entraînés |
|---|---|---|---|
| Flan (2021/2022) | 1 800+ tâches | Templates sur datasets NLP | FLAN-T5, FLAN-PaLM |
| P3 (PromptSource) | 2 000+ prompts | Templates collaboratifs | T0, BLOOMZ |
| Super-NaturalInstructions | 1 554 tâches | Annotations humaines | OPT-IML, Tk-Instruct |
| Alpaca | 52 000 paires | Généré par InstructGPT | Alpaca (LLaMA 7B) |
| ShareGPT | ~90 000 conversations | Conversations utilisateurs | Vicuna |
| OpenAssistant | 91 829 prompts | Annotation humaine, 35 langues | OpenAssistant |
| Evol-Instruct | 70 000 paires | Évolution progressive par LLM | WizardLM |
| Dolly | 15 000 paires | Annotation humaine (Databricks) | Dolly 2.0 |
Résultats clés de la recherche
Plus de tâches = meilleure généralisation. Le papier FLAN original (2021) a démontré que l’ajout de nouvelles tâches au dataset d’instruction tuning améliore les performances même sur des tâches jamais vues. Ce résultat fondamental signifie que l’instruction tuning enseigne une capacité de suivi d’instructions généralisable, pas simplement la mémorisation de réponses spécifiques.
Le format instruction est crucial. L’étude d’ablation de FLAN compare trois approches : entraîner avec des instructions complètes, entraîner avec juste le nom du dataset, et entraîner sans template. Le modèle entraîné avec instructions obtient +18 % de précision par rapport au modèle sans template et +8 % par rapport au modèle « nom du dataset ». C’est l’instruction elle-même, pas juste les données, qui fait la différence.
FLAN-PaLM : l’effet d’échelle. Flan-PaLM 540B, instruction-tuné sur 1 800+ tâches, surpasse PaLM 540B de +9,4 % en moyenne sur les benchmarks. Il atteint 75,2 % sur MMLU en five-shot, un résultat qui était state-of-the-art au moment de sa publication. L’instruction tuning est aussi efficace sur les petits modèles : FLAN-T5 obtient des performances few-shot comparables à PaLM 62B malgré une taille 5x inférieure.
Les MoE en bénéficient encore plus. Le papier « MoEs Meets Instruction Tuning » (2023) montre que les modèles Mixture-of-Experts bénéficient davantage de l’instruction tuning que les modèles denses. L’amélioration relative du MoE instruction-tuné par rapport au MoE de base est supérieure à l’amélioration du T5 par rapport au T5 de base. L’auxiliary loss aide aussi à prévenir le surapprentissage pendant l’instruction tuning des MoE.
Place dans le pipeline moderne de développement LLM
Le pipeline standard de développement d’un LLM moderne suit trois étapes :
Étape 1 : Pré-entraînement. Le modèle de base est entraîné sur des trillions de tokens de texte brut avec un objectif de prédiction du prochain token. Le résultat est un modèle qui « comprend » le langage mais ne sait pas suivre des instructions. C’est le modèle « base » (ex. LLaMA 3, Mistral 7B, Qwen 2.5).
Étape 2 : Instruction tuning (SFT). Le modèle de base est fine-tuné sur un dataset d’instructions. Le résultat est un modèle « instruct » capable de suivre des consignes (ex. LLaMA 3-Instruct, Mistral-Instruct). C’est cette étape qui transforme un modèle de complétion en un assistant conversationnel.
Étape 3 : Alignement (RLHF / DPO). Le modèle instruct est affiné pour mieux correspondre aux préférences humaines en termes d’utilité, de sécurité et d’honnêteté. Cette étape utilise soit le RLHF (avec un reward model), soit le DPO (optimisation directe sur des paires de préférences). C’est l’étape qui rend le modèle non seulement capable mais aussi agréable et sûr à utiliser.
Instruction tuning vs. chat tuning
L’instruction tuning et le chat tuning sont souvent confondus, mais ils ciblent des comportements différents :
| Dimension | Instruction tuning | Chat tuning |
|---|---|---|
| Format des données | Paires (instruction, réponse) single-turn | Conversations multi-tours (user/assistant) |
| Objectif | Suivre une consigne, exécuter une tâche | Maintenir un dialogue cohérent et naturel |
| Comportement appris | « Fais X » → résultat de X | Gestion du contexte, mémoire conversationnelle, ton |
| Modèles typiques | FLAN-T5, Alpaca, Tk-Instruct | ChatGPT, Claude, Gemini |
En pratique, les modèles modernes combinent les deux. Le dataset d’instruction tuning peut inclure à la fois des paires single-turn (une instruction, une réponse) et des conversations multi-tours. Les modèles « chat » les plus performants ont typiquement été entraînés sur un mélange des deux formats.
La qualité des données : le facteur décisif
Un résultat surprenant vient du papier LIMA (Zhou et al., 2023) : un modèle LLaMA 65B instruction-tuné sur seulement 1 000 exemples soigneusement sélectionnés rivalise avec des modèles entraînés sur des dizaines de milliers d’exemples. Ce résultat suggère que la qualité prime massivement sur la quantité dans l’instruction tuning.
Les caractéristiques d’un bon dataset d’instruction tuning :
Diversité des tâches. Le dataset doit couvrir un large éventail de tâches : QA, résumé, traduction, raisonnement, code, rédaction créative, classification, etc. C’est cette diversité qui permet la généralisation à des tâches inédites.
Qualité des réponses. Chaque réponse doit démontrer exactement le comportement souhaité : précise, bien formatée, de la bonne longueur, et cohérente en style. Une seule réponse de mauvaise qualité peut enseigner des comportements indésirables.
Variété des formulations. Les mêmes tâches doivent être présentées avec des formulations différentes (« Résumez ce texte », « Faites un résumé de », « En quelques phrases, de quoi parle ce texte ? ») pour que le modèle apprenne la tâche, pas le template.
Inclusion de Chain-of-Thought. Le dataset Flan 2022 inclut des annotations Chain-of-Thought (raisonnement étape par étape) pour certaines tâches. Les résultats montrent que l’inclusion de CoT améliore les performances sur les tâches de raisonnement non vues pendant l’entraînement, sans dégrader les performances sur les tâches non-CoT.
Extension au multimodal
L’instruction tuning s’étend désormais au-delà du texte. Les modèles multimodaux (texte + image, texte + vidéo) utilisent des datasets d’instruction tuning visuel (visual instruction tuning) où les instructions portent sur des images ou des vidéos. Le dataset Vision-Flan contient plus de 1,6 million d’instances couvrant 200+ tâches vision-langage. LLaVA (Large Language-and-Vision Assistant) a popularisé cette approche en montrant qu’on peut instruction-tuner un modèle vision-langage à partir de données générées par GPT-4.
Implémentation pratique
# Instruction tuning simplifié avec HuggingFace
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from trl import SFTTrainer
from datasets import load_dataset
# Charger le modèle de base
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-v0.3")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-v0.3")
# Charger un dataset d'instructions
dataset = load_dataset("databricks/databricks-dolly-15k")
# Formater les instructions
def format_instruction(sample):
instruction = sample["instruction"]
context = sample.get("context", "")
response = sample["response"]
if context:
return f"### Instruction:n{instruction}nn### Context:n{context}nn### Response:n{response}"
return f"### Instruction:n{instruction}nn### Response:n{response}"
# Lancer l'entraînement SFT
trainer = SFTTrainer(
model=model,
train_dataset=dataset["train"],
formatting_func=format_instruction,
args=TrainingArguments(
output_dir="./mistral-instruct",
per_device_train_batch_size=4,
num_train_epochs=3,
learning_rate=2e-5,
bf16=True,
),
)
trainer.train()
Verdict
L’instruction tuning est l’étape qui transforme un modèle de langage « savant mais inutilisable » en un assistant capable de suivre des consignes. Sans instruction tuning, GPT-4 ne serait qu’un très bon modèle de complétion de texte. C’est cette technique, combinée avec le RLHF, qui a déclenché la révolution ChatGPT.
Pour le praticien, les recommandations sont claires. La qualité des données prime sur la quantité : 1 000 exemples excellents valent mieux que 100 000 exemples médiocres. Utilisez un dataset diversifié couvrant de nombreux types de tâches. Incluez du raisonnement Chain-of-Thought pour les tâches complexes. Et n’oubliez pas que l’instruction tuning n’est que la première étape : un passage par le RLHF ou le DPO est nécessaire pour obtenir un modèle véritablement aligné avec les préférences utilisateur.
Questions fréquentes sur l’Instruction Tuning
Quelle est la différence entre instruction tuning et fine-tuning classique ?
Le fine-tuning classique adapte un modèle à une tâche spécifique (classification de sentiments, NER, traduction) en l’entraînant sur un dataset dédié. L’instruction tuning est plus général : il entraîne le modèle à suivre des instructions de façon générique, en utilisant un dataset diversifié couvrant de nombreuses tâches. Le résultat est un modèle capable de gérer des tâches qu’il n’a jamais vues, à condition qu’elles soient formulées comme des instructions. Les deux utilisent la même méthode (apprentissage supervisé), mais l’instruction tuning vise la généralisation là où le fine-tuning classique vise la spécialisation.
Pourquoi l’instruction tuning est-il si efficace avec si peu de données ?
Le modèle de base a déjà acquis une compréhension profonde du langage pendant son pré-entraînement sur des trillions de tokens. Il « sait » déjà traduire, résumer, raisonner. Ce qu’il ne sait pas, c’est quand et comment activer ces capacités en réponse à une instruction. L’instruction tuning ne lui enseigne pas de nouvelles connaissances : il « active » des capacités latentes en apprenant le format instruction-réponse. C’est pourquoi même 1 000 exemples de haute qualité (comme dans LIMA) suffisent pour un effet transformateur.
Faut-il faire l’instruction tuning avant ou après le RLHF ?
Avant. Le pipeline standard est : pré-entraînement → instruction tuning (SFT) → RLHF/DPO. L’instruction tuning donne au modèle les compétences de base en suivi d’instructions. Le RLHF affine ensuite le comportement pour l’aligner avec les préférences humaines (utilité, sécurité, ton). Faire du RLHF sur un modèle qui ne sait pas suivre des instructions est inefficace car le modèle n’a pas de « baseline » de comportement à partir de laquelle s’améliorer.
Peut-on utiliser un LLM pour générer les données d’instruction tuning ?
Oui, c’est même une pratique courante. Alpaca a été créé en demandant à InstructGPT de générer 52 000 paires instruction-réponse. WizardLM utilise Evol-Instruct pour complexifier progressivement des instructions générées par LLM. L’inconvénient est que le modèle élève hérite des limitations et biais du modèle « professeur ». Des travaux comme Self-Instruct montrent aussi qu’un modèle peut s’auto-améliorer en générant puis en s’entraînant sur ses propres instructions, bien que cette approche nécessite un modèle de base suffisamment performant.
L’instruction tuning suffit-il pour avoir un bon chatbot ?
Non. L’instruction tuning produit un modèle qui suit des instructions, mais qui peut être sec, verbeux, imprécis sur le ton, ou insuffisamment prudent sur les sujets sensibles. Le RLHF ou le DPO est nécessaire pour affiner les qualités subjectives : utilité, harmlessness, honnêteté, concision, empathie. C’est la combinaison instruction tuning + alignement qui produit les assistants modernes comme ChatGPT, Claude ou Gemini. Les modèles uniquement instruction-tunés (comme Alpaca ou FLAN-T5) sont fonctionnels mais nettement moins agréables à utiliser que les modèles alignés.