DPO (Direct Preference Optimization)
iaDéfinition
Le Direct Preference Optimization (DPO) est une méthode d'alignement des LLMs sur les préférences humaines proposée par Rafailov et al. (Stanford, 2023) comme alternative directe et simplifiée au RLHF (Reinforcement Learning from Human Feedback). DPO a rapidement été adopté par la communauté open-source et par des acteurs majeurs comme Anthropic, Meta et Mistral AI car il élimine le besoin d'entraîner un reward model séparé et d'optimiser via PPO. L'insight clé de DPO est mathématique : il est possible de re-paramètriser le problème d'optimisation RLHF en substituant la politique optimale directement comme fonction des préférences, ce qui permet d'exprimer la loss RLHF entière en termes de log-probabilités du modèle de langage lui-même. En pratique, DPO utilise un dataset de préférences de la forme (prompt, réponse_choisie, réponse_rejetée) et optimise directement la politique du modèle pour maximiser la probabilité des réponses choisies par rapport aux rejetées. La loss DPO est : L_DPO(π_θ) = -E[(log σ(β × log(π_θ(y_w|x)/π_ref(y_w|x)) - β × log(π_θ(y_l|x)/π_ref(y_l|x))))], où y_w est la réponse préférée, y_l la rejetée, π_ref est le modèle de référence (le SFT model) et β contrôle l'écart toléré par rapport à la référence. Des variantes améliorées ont rapidement émergé : ORPO (Odds Ratio Preference Optimization, 2024) fusionne SFT et alignement en une seule passe sans modèle de référence. SimPO (Simple Preference Optimization, 2024) utilise la longueur moyenne des séquences comme normalisation. IPO (Identity Preference Optimization) corrige les problèmes d'over-fitting de DPO sur les préférences déterministes. Pour les équipes enterprise, DPO est souvent la première technique d'alignement à essayer après un SFT standard : avec des bibliothèques comme TRL de HuggingFace, un dataset de préférences de quelques milliers d'exemples et 1-2 GPU A100/H100, il est possible d'aligner significativement un LLM 7B sur des use-cases spécifiques en quelques heures.
Comparaison RLHF vs DPO
| Aspect | RLHF (PPO) | DPO |
|---|---|---|
| Reward model | Nécessaire | Pas nécessaire |
| Complexité | Haute (4 modèles en RAM) | Faible (2 modèles) |
| Stabilité | Délicate (mode collapse) | Plus stable |
| Compute | 3-5× SFT | ~1.5× SFT |
| Adopté par | OpenAI, pré-2023 | Mistral, Meta, communauté |
Implémentation avec TRL
from trl import DPOTrainer, DPOConfig
dpo_config = DPOConfig(
beta=0.1, # Température de régularisation
loss_type="sigmoid", # DPO standard (vs "ipo", "kto_pair", "orpo")
learning_rate=5e-7,
num_train_epochs=1,
per_device_train_batch_size=2,
gradient_accumulation_steps=8,
)
trainer = DPOTrainer(
model=model,
ref_model=ref_model, # Le SFT model congelé
args=dpo_config,
train_dataset=dataset, # Format: {prompt, chosen, rejected}
tokenizer=tokenizer,
)
trainer.train()
Construction d'un dataset DPO
Deux approches : (1) Annotations humaines (coûteux mais haute qualité — comme UltraFeedback), (2) LLM-as-judge : générer N réponses avec le modèle, classer avec GPT-4 → dataset synthétique. Des outils comme llm-judge ou distilabel (Argilla) automatisent ce pipeline.
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