Chapitre 23 · 12 min
Appendice · RLHF et DPO
Promenade conceptuelle dans l’apprentissage par préférences — reward models, la boucle RLHF, et DPO comme alternative en une seule loss. Le troisième axe de l’alignement, en bref.
Le chapitre 17 enseigne la forme du chat via . Le chapitre 21 livre un assistant spécialisé. Aucun n’apprend au modèle ce que les humains préfèrent entre deux réponses également bien formées.
Ce troisième axe — preference tuning — est ce qui sépare « suit le template » de « la réponse que tes utilisateurs auraient choisie ». Cet appendice est conceptuel, pas hands-on. Le vrai preference tuning demande des données de préférence qu’on n’a pas et une infra qui dépasse le scope. Mais le mécanisme est petit une fois qu’on a fait le , et le nommer permet de lire la littérature moderne sans surprise.
1. Le setup
Après le , ton modèle produit des réponses plausibles. Plausible est nécessaire, pas suffisant. Pour « explique le tri à bulles », deux réponses peuvent suivre la même forme :
- A : « Le tri à bulles parcourt la liste, compare les éléments adjacents, les échange si besoin. Complexité O(n²). »
- B : « Voici comment ça marche c’est un algo de tri qui trie en échangeant les trucs. »
Les deux respectent le template . A est ce qu’un humain attentif préfère. Le ne sait pas exprimer « préfère A à B » — il ne fait que de l’imitation.
Le preference learning comble ce trou :
- Collecter des paires de préférence : un humain note A vs B sur le même prompt.
- Entraîner un modèle — ou une astucieuse — qui capture « A meilleur que B ».
- Mettre à jour le modèle pour produire plus de réponses « A-like ».
Deux branches : RLHF (reward model + RL) et DPO (saute le reward model avec une élégante). Le RLHF est arrivé en premier ; DPO (2023) est la simplification que l’open source a largement adoptée.
2. RLHF — la recette originale
InstructGPT (2022) et les premiers ChatGPT ont utilisé ça. Trois étapes par-dessus le :
a. Entraîner un reward model
Prends le modèle . Ajoute une tête scalaire : même backbone, mais la dernière couche sort un seul nombre. Entraîne sur des paires de préférence avec une de marge :
Ça pousse le reward de la réponse préférée plus haut que celui de la rejetée. Après assez de paires, le reward model est une fonction de score « human-preferred ».
b. La boucle PPO
La policy (le modèle ) génère des réponses. Chaque réponse reçoit un reward du reward model figé. La policy est mise à jour par PPO — une méthode RL qui pousse vers les rewards plus élevés tout en restant proche du (sinon ça part en reward hacking).
Le terme KL contre le est le régularisateur :
Sans KL, la policy s’effondre vers ce qui maximise le reward — souvent du non-sens que le reward model adore par défaut de ses propres biais.
c. Pourquoi c’est pénible
- Deux modèles supplémentaires à entraîner.
- Beaucoup de knobs PPO qui interagissent.
- Reward hacking, vrai mode d’échec.
- Coût compute = plusieurs fois le .
La plupart des pipelines open source post-2023 sautent le RLHF pour ces raisons.
3. DPO — direct preference optimization
Rafailov et al. (2023) ont remarqué un truc élégant : sous certaines hypothèses, la policy RLHF optimale a une forme close qui n’implique que le et les paires de préférence. Pas de reward model. Pas de RL. Une seule .
La DPO par triplet (prompt, chosen, rejected) :
En mots : pousse le modèle pour que l’écart entre log-prob de (chosen) et (rejected) grandisse, relativement au même écart sous une référence figée (le ). Le β est la KL.
Opérationnellement :
- Un modèle, pas trois. La référence = le , figé.
- Une qui se calcule exactement comme le , sur un triplet au lieu d’une paire.
- Pas de RL — même
loss.backward()qu’à l’appendice backprop. - Mêmes hyperparams que le , plus β (typiquement 0.1).
DPO est ce qu’utilisent la plupart des modèles open source instruct sortis depuis mi-2023 : Llama-3-Instruct, Mistral-Instruct, Zephyr, Tulu, OLMo-Instruct. Le code = ~100 lignes par-dessus la loop du chapitre 17.
4. Pourquoi ce livre s’arrête au SFT
Trois raisons :
- Données. Les paires de préférence coûtent cher. HH-RLHF d’Anthropic = 170k paires de contractors. Les remplacements open comme UltraFeedback existent mais sont bruyants.
- Rendement marginal à petite échelle. Un modèle 14M ou 124M qui galère déjà sur les faits gagne moins à être preference-tuné qu’à recevoir plus de pré- ou plus de de domaine.
- Scope. Le contrat du livre = construire l’architecture et sentir chaque pièce. Le preference tuning ajoute de l’infra (logging des paires, reward serving, sweeps β) sans ajouter de mécanisme conceptuel nouveau au-delà du .
Si tu veux preference-tuner après le capstone du ch.21, la recette pratique :
- Le modèle du ch.21 sert à la fois de policy et de référence.
- Collecte 500-2000 paires (toi en évaluant tes propres outputs, ou distillé d’un modèle plus gros).
- Branche dans
DPOTrainerde Hugging Face TRL, ~30 lignes.
5. À retenir
- enseigne la forme ; le preference tuning enseigne le choix entre deux réponses bien formées.
- RLHF = reward model + PPO. Recette originale, puissante mais pénible.
- DPO = une , pas de reward model, pas de RL. Dominante en open source depuis 2023.
- Le mécanisme tient en tête : de marge sur les différences de log-prob, régularisée par le .
- Les données sont le moat, pas l’algo.
Pour aller plus loin
- Christiano et al. (2017), « Deep RL from Human Preferences ».
- Ouyang et al. (2022), InstructGPT.
- Rafailov et al. (2023), DPO — court, à lire après le ch.17.
- DPOTrainer de Hugging Face TRL.