Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Créer un dataset de préférences (DPO)
Le DPO (Direct Preference Optimization) est une alternative au RLHF pour aligner un modèle sur les préférences humaines. Au lieu de former un modèle de récompense séparé, le DPO entraîne directement le LLM à préférer les bonnes réponses aux mauvaises.
Le format d'un dataset DPO est différent du fine-tuning classique. Au lieu d'un seul assistant message, chaque exemple contient une paire : - "chosen" : la réponse préférée (celle qu'un humain a jugée meilleure) - "rejected" : la réponse rejetée (moins bonne, incorrecte, ou mal formulée)
Le format standard :
{ "prompt": "la question de l'utilisateur", "chosen": "la bonne réponse", "rejected": "la mauvaise réponse" }
En pratique, pour construire un dataset DPO, tu génères plusieurs réponses pour chaque question, puis un humain (ou un LLM juge) classe les réponses par qualité. La meilleure devient "chosen", la pire devient "rejected".
Écris une fonction creer_dataset_dpo(questions, generateur, juge) qui : 1. Pour chaque question, appelle generateur(question) qui renvoie une liste de réponses candidates (au moins 2) 2. Appelle juge(question, reponse) sur chaque réponse, qui renvoie un score entre 0 et 1 3. La réponse avec le meilleur score devient "chosen", celle avec le pire score devient "rejected" 4. Ne crée un exemple que si le score chosen est strictement supérieur au score rejected (sinon, les réponses sont trop similaires pour être utiles) 5. Renvoie un dict avec "dataset" (liste d'exemples DPO) et "paires_ignorees" (nombre de questions où les scores étaient égaux)