{"id":466,"date":"2026-03-16T12:21:56","date_gmt":"2026-03-16T12:21:56","guid":{"rendered":"https:\/\/laeka.org\/publications\/dpo-vs-rlhf-optimisation-preferences-petites-equipes\/"},"modified":"2026-03-16T12:21:56","modified_gmt":"2026-03-16T12:21:56","slug":"dpo-vs-rlhf-optimisation-preferences-petites-equipes","status":"publish","type":"post","link":"https:\/\/laeka.org\/publications\/fr\/dpo-vs-rlhf-optimisation-preferences-petites-equipes\/","title":{"rendered":"DPO vs RLHF : pourquoi l&#8217;optimisation directe des pr\u00e9f\u00e9rences gagne pour les petites \u00e9quipes"},"content":{"rendered":"<p>Si tu es une petite \u00e9quipe essayant d&#8217;aligner un mod\u00e8le de langage, RLHF est probablement excessif. DPO fait le m\u00eame travail avec moins d&#8217;infrastructure, moins de calcul et moins de pi\u00e8ces mobiles. Voici pourquoi.<\/p>\n<h2>Le probl\u00e8me du pipeline RLHF<\/h2>\n<p>RLHF n\u00e9cessite trois mod\u00e8les ex\u00e9cut\u00e9s simultan\u00e9ment : le mod\u00e8le de langage que tu entra\u00eenes, un mod\u00e8le de r\u00e9compense entra\u00een\u00e9 sur les pr\u00e9f\u00e9rences humaines et un mod\u00e8le de r\u00e9f\u00e9rence pour les contraintes de divergence KL. Tu dois d&#8217;abord entra\u00eener le mod\u00e8le de r\u00e9compense, puis l&#8217;utiliser pour g\u00e9n\u00e9rer des signaux de r\u00e9compense pour l&#8217;entra\u00eenement PPO du mod\u00e8le de langage.<\/p>\n<p>Pour les op\u00e9rations \u00e0 l&#8217;\u00e9chelle d&#8217;OpenAI, ce pipeline est g\u00e9rable. Pour une \u00e9quipe de trois personnes avec quelques GPU, c&#8217;est un cauchemar. Le mod\u00e8le de r\u00e9compense seul exige un calcul significatif pour l&#8217;entra\u00eener et le valider. L&#8217;entra\u00eenement PPO est notoirement instable. L&#8217;espace des hyperparam\u00e8tres est \u00e9norme. Et le d\u00e9bogage exige de comprendre l&#8217;interaction entre trois mod\u00e8les distincts.<\/p>\n<p>La plupart des petites \u00e9quipes qui tentent RLHF passent plus de temps \u00e0 combattre l&#8217;infrastructure qu&#8217;\u00e0 am\u00e9liorer leur mod\u00e8le. Ce n&#8217;est pas une bonne utilisation des ressources limit\u00e9es.<\/p>\n<h2>Ce que DPO change<\/h2>\n<p>DPO \u00e9limine enti\u00e8rement le mod\u00e8le de r\u00e9compense. Au lieu d&#8217;entra\u00eener un mod\u00e8le s\u00e9par\u00e9 pour pr\u00e9dire les pr\u00e9f\u00e9rences humaines puis utiliser ces pr\u00e9dictions pour entra\u00eener le mod\u00e8le de langage, DPO utilise les donn\u00e9es de pr\u00e9f\u00e9rence directement. Le mod\u00e8le de langage lui-m\u00eame sert de mod\u00e8le de r\u00e9compense implicite.<\/p>\n<p>Les maths sont \u00e9l\u00e9gantes. DPO r\u00e9param\u00e8tre l&#8217;objectif RLHF pour montrer que la politique optimale sous RLHF peut \u00eatre exprim\u00e9e comme une simple fonction des propres probabilit\u00e9s logarithmiques du mod\u00e8le de langage. Aucun mod\u00e8le de r\u00e9compense s\u00e9par\u00e9 n\u00e9cessaire. Pas de PPO. Pas d&#8217;instabilit\u00e9.<\/p>\n<p>En pratique, l&#8217;entra\u00eenement DPO ressemble \u00e0 un fine-tuning supervis\u00e9 avec une fonction de perte sp\u00e9ciale. Tu alimentes le mod\u00e8le avec des paires de r\u00e9ponses \u2014 l&#8217;une pr\u00e9f\u00e9r\u00e9e, l&#8217;autre non \u2014 et la fonction de perte ajuste les poids du mod\u00e8le pour augmenter la probabilit\u00e9 de g\u00e9n\u00e9rer la r\u00e9ponse pr\u00e9f\u00e9r\u00e9e par rapport \u00e0 celle rejet\u00e9e.<\/p>\n<h2>L&#8217;avantage des petites \u00e9quipes<\/h2>\n<p>Pour les petites \u00e9quipes, les avantages de DPO sont concrets et significatifs.<\/p>\n<p><strong>R\u00e9duction du calcul.<\/strong> DPO n\u00e9cessite environ un tiers du calcul d&#8217;un entra\u00eenement RLHF \u00e9quivalent. Tu entra\u00eenes un mod\u00e8le au lieu de g\u00e9rer trois. Pour les \u00e9quipes fonctionnant sur des GPU de consommateur ou des budgets cloud limit\u00e9s, c&#8217;est la diff\u00e9rence entre faisable et impossible.<\/p>\n<p><strong>Stabilit\u00e9.<\/strong> L&#8217;entra\u00eenement PPO est notoirement capricieux. Les petits changements dans les hyperparam\u00e8tres peuvent produire des r\u00e9sultats radicalement diff\u00e9rents. L&#8217;entra\u00eenement DPO est stable. La fonction de perte est bien comport\u00e9e. La sensibilit\u00e9 des hyperparam\u00e8tres est faible. Tu peux it\u00e9rer rapidement sans passer des jours \u00e0 d\u00e9boguer les instabilit\u00e9s d&#8217;entra\u00eenement.<\/p>\n<p><strong>Simplicit\u00e9.<\/strong> Le pipeline RLHF a plusieurs modes de d\u00e9faillance. Le mod\u00e8le de r\u00e9compense peut \u00eatre mal \u00e9talonn\u00e9. La contrainte KL peut \u00eatre trop serr\u00e9e ou trop desserr\u00e9e. L&#8217;optimisation PPO peut diverger. DPO a un mode de d\u00e9faillance : les mauvaises donn\u00e9es. Corrige les donn\u00e9es, corrige le mod\u00e8le.<\/p>\n<p><strong>It\u00e9ration plus rapide.<\/strong> Avec DPO, tu peux passer de nouvelles donn\u00e9es de pr\u00e9f\u00e9rence \u00e0 un mod\u00e8le entra\u00een\u00e9 en heures au lieu de jours. Cela signifie plus d&#8217;exp\u00e9riences, des boucles de retour plus rapides et une am\u00e9lioration plus rapide. Pour les petites \u00e9quipes, la vitesse d&#8217;it\u00e9ration est tout.<\/p>\n<h2>Quand RLHF a encore du sens<\/h2>\n<p>DPO n&#8217;est pas strictement sup\u00e9rieur. RLHF a des avantages dans des contextes sp\u00e9cifiques.<\/p>\n<p><strong>R\u00e9utilisation du mod\u00e8le de r\u00e9compense.<\/strong> Si tu as besoin d&#8217;\u00e9valuer plusieurs mod\u00e8les diff\u00e9rents par rapport aux m\u00eames crit\u00e8res de pr\u00e9f\u00e9rence, entra\u00eener un mod\u00e8le de r\u00e9compense une fois et le r\u00e9utiliser est efficace. DPO n\u00e9cessite une r\u00e9entra\u00eenement pour chaque mod\u00e8le.<\/p>\n<p><strong>Apprentissage en ligne.<\/strong> RLHF peut incorporer les nouveaux retours en temps r\u00e9el via le mod\u00e8le de r\u00e9compense. DPO n\u00e9cessite un r\u00e9entra\u00eenement par lot. Pour les applications qui ont besoin d&#8217;une adaptation continue, RLHF est plus flexible.<\/p>\n<p><strong>\u00c9chelle.<\/strong> \u00c0 tr\u00e8s grande \u00e9chelle, la complexit\u00e9 suppl\u00e9mentaire de RLHF est amortie sur les budgets de calcul massifs. Le mod\u00e8le de r\u00e9compense devient une ressource partag\u00e9e. L&#8217;instabilit\u00e9 de PPO est g\u00e9r\u00e9e par de grandes \u00e9quipes de sp\u00e9cialistes. Si tu es Google ou Anthropic, la surcharge est g\u00e9rable.<\/p>\n<p>Mais pour tous les autres \u2014 les startups, les laboratoires de recherche, les chercheurs ind\u00e9pendants, les projets open source \u2014 DPO est le choix pragmatique.<\/p>\n<h2>La mise en garde sur la qualit\u00e9 des donn\u00e9es<\/h2>\n<p>La simplicit\u00e9 de DPO met toute la pression sur la qualit\u00e9 des donn\u00e9es. Avec RLHF, un mod\u00e8le de r\u00e9compense m\u00e9diocre peut partiellement compenser les donn\u00e9es de pr\u00e9f\u00e9rence bruyantes. Avec DPO, garbage in signifie garbage out. Il n&#8217;y a pas de mod\u00e8le interm\u00e9diaire pour lisser les choses.<\/p>\n<p>C&#8217;est en r\u00e9alit\u00e9 une caract\u00e9ristique, pas un bug. Cela force les petites \u00e9quipes \u00e0 se concentrer sur ce qui importe le plus : la qualit\u00e9 de leurs donn\u00e9es d&#8217;entra\u00eenement. Un petit dataset DPO soigneusement organis\u00e9 surpassera un grand dataset bruyant. Le co\u00fbt par paire est plus \u00e9lev\u00e9. Le co\u00fbt total est dramatiquement plus bas. Et les r\u00e9sultats sont meilleurs.<\/p>\n<p>Chez Laeka, nous avons d\u00e9couvert que 500-1000 paires DPO de haute qualit\u00e9, annot\u00e9es par des praticiens contemplatifs avec des explications diagnostiques, produisent un meilleur alignement que 50 000 paires crowdsourc\u00e9es. Le co\u00fbt par paire est plus \u00e9lev\u00e9. Le co\u00fbt total est dramatiquement plus bas. Et les r\u00e9sultats sont meilleurs.<\/p>\n<h2>Commencer<\/h2>\n<p>Si tu es une petite \u00e9quipe envisageant un entra\u00eenement \u00e0 l&#8217;alignement, voici le chemin pratique.<\/p>\n<p>Commence avec un mod\u00e8le de base que tu veux aligner. Qwen, Llama, Mistral \u2014 n&#8217;importe quoi qui correspond \u00e0 ton cas d&#8217;utilisation. G\u00e9n\u00e8re des r\u00e9ponses \u00e0 tes prompts cibles. Fais \u00e9valuer les paires de r\u00e9ponses par des humains et indique la pr\u00e9f\u00e9rence, avec de br\u00e8ves explications du pourquoi. Formate les donn\u00e9es en triplets DPO : prompt, r\u00e9ponse choisie, r\u00e9ponse rejet\u00e9e.<\/p>\n<p>Utilise la biblioth\u00e8que TRL de HuggingFace. Elle a un entra\u00eeneur DPO qui fonctionne directement. D\u00e9finis ton param\u00e8tre b\u00eata entre 0,1 et 0,5 (commence par 0,1). Entra\u00eene pendant 1-3 epochs. \u00c9value. It\u00e8re.<\/p>\n<p>Tout le processus peut s&#8217;ex\u00e9cuter sur un seul A100 ou m\u00eame un GPU de consommateur avec QLoRA. Aucune infrastructure de mod\u00e8le de r\u00e9compense. Pas de maux de t\u00eate PPO. Pas de pipeline \u00e0 trois mod\u00e8les. Juste des donn\u00e9es, une fonction de perte et un mod\u00e8le qui s&#8217;am\u00e9liore mesur\u00e9ment.<\/p>\n<p>DPO ne r\u00e9soudra pas tous tes probl\u00e8mes d&#8217;alignement. Mais pour les petites \u00e9quipes, il r\u00e9sout les bons aux bons co\u00fbts. Commence l\u00e0. Augmente l&#8217;\u00e9chelle si tu dois. La plupart des \u00e9quipes n&#8217;auront pas besoin.<\/p>\n<p><strong>Laeka Research \u2014 <a href=\"https:\/\/laeka.org\">laeka.org<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si tu es une petite \u00e9quipe essayant d&#8217;aligner un mod\u00e8le de langage, RLHF est probablement excessif. DPO fait le m\u00eame travail avec moins d&#8217;infrastructure, moins de calcul et moins de pi\u00e8ces mobiles. Voici pourquoi&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":120,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[266],"tags":[],"class_list":["post-466","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dpo-et-alignement"],"_links":{"self":[{"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/posts\/466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/comments?post=466"}],"version-history":[{"count":0,"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/posts\/466\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/media\/120"}],"wp:attachment":[{"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/media?parent=466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/categories?post=466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/laeka.org\/publications\/wp-json\/wp\/v2\/tags?post=466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}