SFT (Supervised Fine-Tuning)
iaDéfinition
Le Supervised Fine-Tuning (SFT) est la premiere etape de post-training qui transforme un LLM de base (pre-entraine sur du texte brut) en un modele capable de suivre des instructions et de repondre de maniere conversationnelle. Le SFT fine-tune le modele sur un dataset de paires (instruction, reponse ideale) via une loss de cross-entropie standard sur les tokens de reponse. La difference entre le pre-training et le SFT : le pre-training entraine le modele a predire le prochain token dans du texte brut (web crawl, livres, code). Le modele apprend la syntaxe, les faits, et les patterns du monde. Le SFT lui apprend le format de la conversation : comment recevoir une instruction, y repondre de maniere utile, et dans quel style communicatif. Le SFT ne 'cree' pas de nouvelles connaissances mais 'debloque' les connaissances du pre-training. La qualite du dataset SFT est critique : les premiers papiers (Stanford Alpaca, 2023) ont montre qu'un petit dataset de haute qualite (52K exemples generees par GPT-4) produisait de meilleurs resultats que de grands datasets bruiteux. Le dataset de SFT doit couvrir diversement les instructions possibles (questions, analyses, generation de code, resume, etc.), etre exempt d'hallucinations, et avoir un style de reponse cible coherent. Le SFT est suivi du RLHF ou du DPO pour aligner les preferences : le SFT donne les comportements de base (follow instructions), mais le modele peut encore generer des reponses dangereuses, biaisees, ou non-helpfull. Le RLHF/DPO optimise pour les preferences humaines au-dela du simple suivi d'instruction. Les datasets SFT open-source : OpenHermes 2.5, Dolphin, UltraChat, Open-Platypus, Capybara, ShareGPT (conversations reelles GPT-4), et Orca (distillation de raisonnements GPT-4). Mixtral-Instruct, Llama 3 Instruct, et la plupart des LLMs open-source utilisent des variations de SFT sur ces datasets.
SFT avec TRL (HuggingFace)
from trl import SFTTrainer, SFTConfig
from transformers import AutoModelForCausalLM, AutoTokenizer
from datasets import load_dataset
model = AutoModelForCausalLM.from_pretrained('meta-llama/Meta-Llama-3.1-8B')
tokenizer = AutoTokenizer.from_pretrained('meta-llama/Meta-Llama-3.1-8B')
# Dataset format: {instruction, input, output} ou conversation turns
dataset = load_dataset('HuggingFaceH4/ultrachat_200k', split='train_sft')
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset,
args=SFTConfig(
max_seq_length=2048,
num_train_epochs=3,
per_device_train_batch_size=4,
learning_rate=2e-5,
output_dir='./sft_model'
)
)
trainer.train()
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