Comment les paramètres s'articulent
Une exécution par renforcement répète une boucle : échantillonner les réponses, les noter, les comparer, mettre à jour. Chaque paramètre agit à un moment précis de cette boucle, de sorte que la plupart des problèmes rencontrés lors d'une exécution peuvent être attribués à l'un d'entre eux.
- 01Échantillonnagele modèle rédige N réponses pour chaque prompt⚙ réponses par prompt · longueur maximale de la réponse
- 02Évaluationl'évaluateur attribue à chaque réponse une note de 0 à 1⚙ évaluateur · modèle juge
- 03Comparaisonchaque score par rapport à la moyenne de son groupe⚙ aucun paramètre : le groupe sert de référence
- 04Mise à jourun petit pas vers les réponses supérieures à la moyenne⚙ taux d'apprentissage · KL β
Les paramètres
Ce qui transforme chaque réponse en un score de 0 à 1 : un modèle juge, la similarité avec votre réponse, une vérification des nombres, des vérifications de correspondance exacte, ou un mélange de ces éléments. C'est la définition de « meilleur » pour toute l'exécution, choisissez-le donc en fonction de ce que vous souhaitez réellement et vérifiez-le manuellement sur quelques réponses. La section Évaluateurs explique chaque option.
Quel LLM effectue la notation lorsque l'évaluateur inclut un juge. Un juge plus performant classe les réponses de manière plus fiable, ce qui est d'autant plus important ici car le GRPO transforme même de petites différences de score en mises à jour complètes. Son coût par appel est également plus élevé. Privilégiez un modèle issu d'une famille différente de celle du modèle en cours d'entraînement, et conservez un autre juge pour l'évaluation finale.
La taille du groupe : combien de réponses le modèle rédige pour chaque prompt par étape. Un plus grand nombre de réponses donne une image plus claire du type de réponse qui obtient un meilleur score, et augmente la probabilité qu'au moins l'une d'entre elles diffère des autres. Cela multiplie également le temps de génération et les tokens d'entrée du juge ; le juge effectue toujours un appel par prompt. Avec N = 2, la moindre différence devient un signal complet de +1 / −1.
La réponse la plus longue, en tokens, que le modèle peut rédiger par tentative. Une réponse qui atteint la limite est coupée au milieu d'une phrase et obtient généralement un mauvais score, ce qui gaspille l'étape ou apprend au modèle à être concis pour de mauvaises raisons. Fixez-la légèrement au-dessus de la longueur d'une bonne réponse : un token représente environ ¾ de mot, donc une réponse de 150 mots équivaut à environ 200 tokens. Les modèles de réflexion rédigent un long raisonnement avant de répondre ; Scalata désactive cette fonction pour eux pendant le RL afin que le budget soit alloué à la réponse.
La taille de chaque mise à jour. Les étapes de RL sont beaucoup plus petites que celles de l'apprentissage supervisé : le signal est plus bruité (scores des propres tentatives du modèle plutôt qu'une réponse correcte), et les données changent en même temps que le modèle. Une grande étape peut donc l'amener à un point dont ses prochaines réponses ne pourront pas se remettre. Avec LoRA, un taux d'environ 1e-5 est un point de départ courant ; le RL sur l'ensemble des poids utilise généralement environ 1e-6, comme l'a fait DeepSeekMath.
La force avec laquelle le modèle est maintenu près de son point de départ. À chaque étape, β × la divergence KL entre le modèle entraîné et une copie figée du modèle initial est soustrait de l'objectif. 0 signifie aucune pénalité ; c'est la valeur par défaut actuelle dans TRL et cela évite également de charger la copie figée. DeepSeekMath a utilisé 0,04. Augmentez cette valeur à partir de 0 si les réponses commencent à dériver d'une manière que l'évaluateur ne pénalise pas : formulation étrange, formatage cassé, changement de langue ou perte de compétences générales.
Exemples pratiques
- Prenez un évaluateur réussite/échec et un modèle qui répond correctement à un prompt 10 % du temps. Un groupe n'enseigne quelque chose que si ses réponses diffèrent.
- N = 2 : tous échouent avec une probabilité de 0,9² = 0,81 et tous réussissent avec 0,01, donc seulement environ 18 % des prompts donnent un signal.
- N = 4 : tous échouent avec une probabilité de 0,9⁴ ≈ 0,66, donc environ 34 % donnent un signal.
- N = 8 : 0,9⁸ ≈ 0,43, donc environ 57 % donnent un signal, pour un temps de génération deux fois plus long que pour N = 4.
- Si le modèle a raison la moitié du temps, N = 4 donne déjà un signal sur environ 88 % des prompts (seul 1 groupe sur 8 réussit ou échoue entièrement). Les groupes plus importants sont surtout utiles lorsque les bonnes réponses sont rares.
- Prenons une décision où le modèle de départ répond « Oui » ou « Non » avec une probabilité de 50 % pour chaque.
- Après l'entraînement, il répond « Oui » 80 % du temps. Divergence KL par rapport au départ = 0,8 × ln(0,8 ÷ 0,5) + 0,2 × ln(0,2 ÷ 0,5) ≈ 0,19.
- S'il devient sûr à 99 % : 0,99 × ln(0,99 ÷ 0,5) + 0,01 × ln(0,01 ÷ 0,5) ≈ 0,64. Le coût grimpe rapidement à mesure que le modèle acquiert des certitudes là où il était initialement indécis.
- Avec β = 0,04, ces coûts sont d'environ 0,008 et 0,025 par token, cumulés sur chaque token d'une réponse : c'est faible pour un seul token, mais notable lorsque le style d'une réponse entière évolue.
- Vos réponses de référence comptent en moyenne 120 mots ; les plus longues en comptent environ 250.
- 120 mots ≈ 160 tokens ; 250 mots ≈ 330 tokens.
- Une limite de 384 à 512 tokens laisse suffisamment de place pour une réponse complète. Surveillez le taux de troncature lors des premières étapes : si plus de quelques pour cent des réponses atteignent la limite, augmentez-la ou demandez des réponses plus courtes dans le prompt système.
Une première exécution judicieuse
- Commencez par une exécution supervisée, et non par le modèle de base brut, à moins que ce dernier ne réponde déjà raisonnablement bien à vos questions.
- Évaluateur : un modèle juge (ou juge + nombres pour les calculs), avec un juge performant et abordable.
- N = 4, longueur maximale de réponse légèrement supérieure à votre réponse habituelle, taux d'apprentissage autour de 1e-5 avec LoRA, KL β = 0.
- Commencez petit : quelques dizaines de prompts et une époque, puis analysez les groupes et le graphique de récompense avant de passer à l'échelle.
Erreurs courantes
- Augmenter N pour corriger une récompense stagnante. Si le modèle ne produit jamais de bonne réponse, davantage de tentatives de la même qualité n'aideront pas ; commencez avec un meilleur modèle.
- Une longueur maximale de réponse inférieure à votre réponse habituelle. Les réponses complètes sont coupées et le modèle apprend à partir de textes tronqués.
- Utiliser un taux d'apprentissage d'entraînement supervisé. Des étapes de RL trop importantes peuvent ruiner les résultats du modèle en quelques étapes.
- Commencer avec un KL β élevé. Le modèle n'évolue alors presque pas ; commencez à 0 et ne l'augmentez que si les réponses se dégradent.
- Noter avec le même juge que celui que vous utiliserez pour l'évaluation.
Références et lectures complémentaires
Les sources externes s'ouvrent dans un nouvel onglet.
- 01GRPO TrainerHugging Face TRL docs · huggingface.coValeurs par défaut et signification de la taille du groupe, de la longueur de complétion, de β et des variantes de perte.
- 02DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language ModelsShao et al., 2024 · arXiv · arxiv.orgLes paramètres GRPO d'origine : taux d'apprentissage de 1e-6, coefficient KL de 0,04, 64 réponses par question.
- 03Training language models to follow instructions with human feedbackOuyang et al., 2022 · arXiv · arxiv.orgComment une pénalité KL maintient un modèle affiné par RL proche de son point de départ supervisé.
- 04Kullback–Leibler divergenceWikipedia · en.wikipedia.orgLa définition, et pourquoi la divergence KL n'est pas symétrique.