Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

DPO (Direct Preference Optimization)

ia

Dé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

AspectRLHF (PPO)DPO
Reward modelNécessairePas nécessaire
ComplexitéHaute (4 modèles en RAM)Faible (2 modèles)
StabilitéDélicate (mode collapse)Plus stable
Compute3-5× SFT~1.5× SFT
Adopté parOpenAI, pré-2023Mistral, 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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis