Chapitre 2 : Optimisation Directe des Préférences
Alternative plus simple au RLHF
DPO optimise directement pour les préférences humaines sans modèle de récompense séparé.
DPO vs RLHF
| Aspect | RLHF | DPO |
|---|---|---|
| Modèle de Récompense | Requis | Non nécessaire |
| Entraînement RL | PPO/similaire | Optimisation directe |
| Complexité | Élevée | Moindre |
| Stabilité | Peut être instable | Plus stable |
Format des Données de Préférence
{
"prompt": "Expliquez l'informatique quantique",
"chosen": "L'informatique quantique utilise des qubits...",
"rejected": "Les ordinateurs quantiques sont juste plus rapides..."
}
Implémentation de DPO
from trl import DPOTrainer, DPOConfig
dpo_config = DPOConfig(
beta=0.1, # Poids de la pénalité KL
learning_rate=5e-7,
num_train_epochs=1,
gradient_accumulation_steps=4,
bf16=True,
)
trainer = DPOTrainer(
model=model,
ref_model=ref_model, # Modèle de référence pour KL
args=dpo_config,
train_dataset=preference_dataset,
tokenizer=tokenizer,
)
trainer.train()
Paramètre Clé : Beta
- Beta faible (0.01-0.05) : Optimisation plus forte
- Beta élevé (0.5-1.0) : Reste proche de la référence
- Défaut (0.1) : Bon équilibre