Supervised Fine-tuning (SFT)
iaDéfinition
Le Supervised Fine-tuning (SFT) est la première et indispensable étape du pipeline d'alignement des LLMs après le pré-entraînement. Il consiste à entraîner le modèle de base (base model) sur un dataset de paires instruction/réponse de haute qualité, pour lui apprendre à suivre des instructions et adopter un format conversationnel. C'est le SFT qui transforme un "modèle de completion" brut en assistant conversationnel utilisable. OpenAI, Anthropic et les équipes open-source ont convergé vers un pipeline standardisé : (1) Pré-entraînement sur des téraoctets de texte web → obtention du base model. (2) SFT sur ~10K-100K exemples soigneusement filtrés → obtention du chat model ou instruct model. (3) RLHF/DPO pour affiner l'alignement sur les préférences humaines. Le SFT utilise l'entraînement standard par gradient descendant avec la cross-entropy loss, mais avec une subtilité importante : on calcule la loss uniquement sur les tokens de réponse (pas sur le prompt/l'instruction). Ceci est implémenté par un loss mask : les tokens du prompt reçoivent un poids 0, les tokens de la réponse un poids 1. Cette technique empêche le modèle d'apprendre à "réciter" des instructions. La qualité du dataset SFT est plus importante que sa taille. LIMA (Zhou et al., 2023) a démontré qu'1000 exemples soigneusement sélectionnés peuvent suffire pour un SFT efficace. Alpaca (Stanford, 2023) avec 52K exemples GPT-4 générés, ShareGPT avec des conversations réelles, et les datasets OpenHermes ou WizardInstruct ont fortement influencé l'écosystème open-source. Pour les entreprises déployant des LLMs customisés, le SFT est souvent la méthode d'adaptation préférée : il est plus efficace que le prompt engineering seul et moins complexe que le RLHF. Des bibliothèques comme TRL (HuggingFace), Axolotl, LLaMA-Factory ou Unsloth rendent le SFT accessible sur des GPU consumer (RTX 3090/4090) avec QLoRA.
Pipeline SFT complet
from trl import SFTTrainer, DataCollatorForCompletionOnlyLM
from transformers import TrainingArguments
# Loss mask : ne calculer loss que sur la réponse
response_template = "[/INST]" # Pour Mistral/LLaMA
collator = DataCollatorForCompletionOnlyLM(response_template, tokenizer=tokenizer)
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
data_collator=collator,
args=TrainingArguments(
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-5,
fp16=True,
output_dir="./sft-output"
)
)
trainer.train()
Datasets SFT open-source notables
- OpenHermes 2.5 : 1M exemples haute qualité synthétiques
- SlimOrca : subset filtré d'OpenOrca (517K)
- WizardInstruct : évolution complexe d'instructions via LLM
- UltraChat : 200K conversations multi-tours
- Capybara : multi-turn, raisonnement long
Métriques d'évaluation SFT
MT-Bench (GPT-4 judge, score /10), AlpacaEval 2 (win rate vs GPT-4), IFEval (instruction following exact match), et les benchmarks de raisonnement (MMLU, GSM8K) pour mesurer la rétention de capacités.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h