Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Référence des hyperparamètres
Le tableau suivant répertorie tous les hyperparamètres configurables pour les tâches d'entraînement RL à tours multiples. Les recettes par défaut sont incluses ci-dessous.
| Catégorie | Paramètres | Par défaut | Choice | Explication |
|---|---|---|---|---|
| Par lots | global_batch_size | 128 | {32, 64, 128} | Nombre d'instructions uniques par étape d'entraînement. |
| Par lots | taille_groupe | 8 | [2, 32] | Déploiements par invite utilisés pour calculer les avantages basés sur les groupes (GRPO/RLOO). |
| RL | méthode_avantage | basé sur un groupe | monte_carlo, group_based, group_based_per_turn, rloo, reinforce_pp, reinforce_pp_baseline, opo, grpo_passk, gpg | Méthode de calcul des avantages pour les déploiements. |
| RL | loss_fn | ppo | importance_sampling, ppo, cispo | Formulation pour la perte de RL. |
| RL | clip_low_threshold | 0.8 | [0, 1] | Borne inférieure pour réduire le ratio de probabilité politique π_new/π_old dans la perte de substitution. PPO-style |
| RL | clip_high_threshold | 1.2 | [1, 10] | Borne supérieure pour réduire le ratio de probabilité politique dans la perte. |
| sampling_params | temperature | 1 | [0, 2] | Température d'échantillonnage appliquée aux logits avant l'échantillonnage. |
| sampling_params | sampling_top_p | 1 | [0, 1] | Nucleus-sampling coupure. Échantillons uniquement à partir du plus petit ensemble de jetons dont la probabilité cumulée est supérieure ou égale à top_p. |
| sampling_params | sampling_max_tokens | 4096 | [512, 8192] | Nombre maximum de jetons que le modèle peut générer par tour lors du déploiement. |
| val_sampling_params | sampling_max_tokens | 4096 | [512, 8192] | Nombre maximum de jetons que le modèle peut générer par tour pendant l'évaluation. |
| val_metrics_config | pass_k_values | [1, 2, 4, 8, 16, 32] | n/a | Liste des valeurs k pour le calcul des métriques pass @k. |
| val_metrics_config | seuil_de réussite | 1 | n/a | Seuil de récompense pour un déploiement considéré comme « réussi ». |
| Planning | max_epochs | 1 | [1, 30] | Total passe en revue les données. |
| Planning | max_steps | 50 | [1, 1000] | Nombre total d'itérations d'entraînement. |
| Planning | val_every | 10 | [0, 100] | Intervalle d'évaluation (étapes). |
| Modèle | model_name_or_path | obligatoire | Modèle à peaufiner (par exemple, GPT-OSS-20B « »). | |
| Modèle | lora_rank | 32 | [16,64] | Le rang de l'adaptateur LoRa qui contrôle la capacité de l'adaptateur. |
| Modèle | lora_alpha | 64 | [16 128] | Facteur d'échelle LoRa. Magnitude de mise à jour effective, alpha/rang. |
| Modèle | learning_rate | 4,00 E-05 | (0, 1e-2] | Taux d'apprentissage d'Adam. |
| Modèle | adam_beta1 | 0.9 | [0, 0,999999] | Taux de décroissance exponentiel de la moyenne courante du gradient (premier moment) dans Adam. |
| Modèle | adam_beta2 | 0,95 | [0, 0,999999] | Taux de décroissance exponentiel de la moyenne courante du gradient au carré (deuxième moment) chez Adam. |
| Modèle | adam_eps | 1,00 E-08 | [1e-16, 1e-2] | Petite constante ajoutée au dénominateur pour la stabilité numérique dans la règle de mise à jour d'Adam. |
| Modèle | adam_weight_decay | 0 | [0, 1] | Coefficient de décroissance du poids découplé (). AdamW-style |
| Modèle | adam_grad_clip_norm | 1 | [0, 100] | Norme de gradient globale maximale. |
| Déploiement | rollout_max_concurrency | 96 | [32, 96] | Les processus de déploiement maximal en vol peuvent se dérouler en parallèle. |
| Déploiement | rollout_timeout | 600 | [300, 86400] | Gestion des défaillances : délai au bout duquel nous considérons l'échec du déploiement. |
| Déploiement | rollout_max_retries | 3 | [1, 10] | Nombre de nouvelles tentatives en cas d'échec des déploiements. |
| async_config | max_steps_off_policy | 3 | [0, 10] | Seuil d'obsolescence dans l'entraînement asynchrone. Lorsque 0, il s'agit d'un entraînement synchrone. |
Bonnes pratiques pour le réglage des hyperparamètres
Lorsqu'une course est plate ou s'effondre, les six paramètres suivants expliquent la quasi-totalité de l'explication.
Taux d’apprentissage
Le learning_rate contrôle l'ampleur du pas effectué par l'optimiseur à chaque itération d'entraînement. Dans le RL à tours multiples, le signal de gradient par étape varie en fonction de la tâche : un environnement à faibles récompenses avec des résultats binaires produit de nombreux groupes où tous les déploiements obtiennent des résultats identiques, ce qui n'apporte aucun avantage à l'ensemble du groupe. Seuls les groupes présentant des résultats mitigés produisent un signal de gradient, de sorte que le gradient utile de chaque étape est dilué. Le taux d'apprentissage doit être inférieur pour s'aligner sur un signal plus faible, sinon la course nécessite plus d'étapes.
Un environnement riche en récompenses où les trajectoires au sein d'un groupe obtiennent des scores différents de manière fiable produit des avantages constants et non nuls dans la plupart des groupes, et le taux d'apprentissage par défaut est souvent déjà suffisant.
La taille effective des étapes dépend également de la configuration LoRa (c'est l'ampleur réelle de la mise à jourlearning_rate × alpha/rank), de sorte qu'un taux d'apprentissage fixe fonctionne différemment en fonction de la capacité de l'adaptateur.
Fonction de perte et plage de découpage
Si vous utilisez MTRL pour la première fois, l'échantillonnage par importance (importance_sampling) est un bon point de départ avant de passer à des algorithmes avancés basés sur le découpage. PPO et CISPO utilisent clip_low_threshold et clip_high_threshold pour limiter le ratio de probabilité, c'policy_new(action|state) / policy_old(action|state)est-à-dire dans quelle mesure la politique est autorisée à changer en une seule étape de formation.
Un ratio de 1.0 signifie qu'il n'y a pas de changement. Le seuil inférieur (par exemple0.8) empêche la politique de désapprendre de manière agressive les actions qu'elle privilégiait auparavant. Le seuil supérieur (par exemple1.2) l'empêche de trop s'engager dans des actions qui semblaient satisfaisantes en un seul lot.
-
PPO with
(clip_low_threshold, clip_high_threshold) = (0.8, 1.2)est la base de référence sûre pour toute première exécution. -
Le CISPO nécessite un découpage asymétrique large. Commencez par
clip_low_threshold = 1.0,clip_high_threshold = 6.0. Le CISPO permet de réduire librement les probabilités de mauvaises actions et s'appuie uniquement sur le clip supérieur pour éviter toute instabilité.
Il est recommandé de modifier les seuils de découpage en cas de ralentissement ou de sous-entraînement lors de l'entraînement.
Taille du lot et taille du groupe
Ces deux paramètres déterminent conjointement la quantité de signal de gradient utile que reçoit chaque étape d'entraînement.
global_batch_sizecontrôle le nombre d'invites uniques incluses dans une étape d'optimisation. Les lots les plus importants (128) présentent en moyenne des dégradés par rapport à un plus grand nombre d'instructions, ce qui permet d'obtenir des courbes de récompenses plus fluides et des mises à jour plus stables. Les lots plus petits (32) sont moins chers par étape et utiles pour une itération rapide, mais produisent des dégradés plus bruyants. Pour les cycles de production, 128 est une bonne valeur par défaut ; pour le débogage ou le criblage d'hyperparamètres, 32 convient.
group_sizedétermine le nombre de déploiements indépendants générés pour chaque invite. Ces déploiements sont comparés les uns aux autres pour calculer les avantages. Si tous les déploiements reçoivent la même récompense (tous réussissent ou échouent), l'avantage est nul et le groupe ne produit aucun signal de gradient. La valeur par défaut est group_size = 8. Réduisez-le si vous avez suffisamment de diversité dans le groupe, augmentez-le si l'environnement exige plus de diversité.
Nombre total de déploiements par étape =global_batch_size × group_size. Dans les environnements où les récompenses sont rares, où la plupart des groupes ne produisent aucun signal, il est souvent plus efficace de maintenir une taille de groupe modérée et d'augmenter la taille des lots ou le nombre de pas.
Off-policy obsolescence
Dans le cadre de l'entraînement asynchrone, max_steps_off_policy contrôle le niveau d'obsolescence autorisé d'un déploiement avant qu'il ne soit supprimé. La valeur par défaut de 3 masque la latence de fin du serveur de déploiement. Mais les déploiements périmés ont des ratios d'importance qui s'écartent considérablement de ceux-ci1.0, et lorsque ces ratios atteignent les limites du clip, ils ne fournissent aucun signal de gradient.
Défini sur 0 lorsque le débogage s'effondre. L'obsolescence asynchrone s'accompagne de mises à jour pondérées en fonction de l'importance et peut masquer les causes profondes. Réglez sur0, stabilisez, puis réactivez une fois que le problème est compris. Pour les environnements où les déploiements sont rapides, il max_steps_off_policy = 1 peut s'agir d'une meilleure option par défaut.
Nombre maximum de jetons d'échantillonnage
sampling_max_tokensest le plafond de génération par tour. Si le plafond est trop bas, les réponses du modèle sont tronquées en cours de réflexion et le modèle est récompensé pour une tentative incomplète. La politique apprend ensuite à associer ces préfixes tronqués à de mauvais résultats, en supprimant les comportements exploratoires qui auraient été efficaces si l'on avait laissé plus de place.
La valeur par défaut de 4096 fonctionne pour la plupart des tâches. Portez cette valeur à 8192 pour les modèles présentant des réponses trop longues thinking/reasoning . La règle de dimensionnement est la suivante : max_turns × (sampling_max_tokens + expected_tool_output) + prompt
≤ max_sequence_length avec une certaine marge.
Diagnostic : moniteur rollout/tokens/response_max Si les trajectoires se regroupent exactement au maximum, le modèle est tronqué silencieusement et risque de perdre du signal. val_sampling_params.sampling_max_tokensdevrait correspondre à l'entraînement.
Configuration du déploiement
Ces paramètres contrôlent la manière dont les déploiements sont produits et la manière dont le formateur gère les déploiements lents ou échoués.
-
rollout_max_concurrency— Contrôle le nombre de déploiements en cours à la fois. La valeur par défaut de 96 fonctionne bien pour la plupart des configurations. Une valeur trop élevée en mode asynchrone entraîne des déploiements périmés et peut submerger le moteur d'inférence. -
rollout_timeout— Combien de temps (en secondes) faut-il attendre pour un seul déploiement avant de le considérer comme un échec. La valeur par défaut de 600 est adaptée aux environnements d'utilisation d'outils classiques. Si elle est trop basse, les déploiements qui auraient pu réussir avec plus de temps sont tronqués. -
rollout_max_retries— Contrôle les tentatives de nouvelle tentative en cas d'échec des déploiements. Si le taux d'échec permanent dépasse environ 1 %, le problème provient de la configuration de l'environnement et non du nombre de nouvelles tentatives.
Paramètres de support
-
Capacité LoRa (
lora_ranketlora_alpha). L'ampleur effective de la mise à jour par étape est proportionnelle àalpha/rank, ce qui agit comme un multiplicateur sur le taux d'apprentissage. La valeur par défaut estlora_rank = 32, lora_alpha = 64(un ratio de 2:1). Envisagez d'augmenter uniquement si tout le reste est bien réglé et que la courbe des récompenses continue de plafonner. Doublez les deux ensemble (64/128) pour augmenter la capacité tout en préservant le même taux d'apprentissage effectif. -
temperature = 1,0, sampling_top_p = 1,0 pour l'entraînement. Pour la formation RL, vous souhaitez une diversité entre les déploiements au sein d'un groupe afin que la base de référence du groupe soit prise en compte. La température 1,0 est une bonne valeur par défaut. Pour l'évaluation, utilisez la température = 0,0 (décodage gourmand) afin que les courbes d'évaluation soient déterministes et comparables d'un cycle à l'autre.
-
pass_k_values. Pass @1 est le principal indicateur d'évaluation. Pass @G (où G = group_size) est un test de bon sens utile : si le pass @G est très élevé, la plupart des instructions sont trop faciles ; si le pass @G est très faible, la plupart des instructions sont trop difficiles et le signal de groupe est faible.
-
max_steps et max_epochs.
max_steps = 50pour le criblage (assez pour voir si la courbe bouge), 100 pour la production. L'effondrement du CISPO a tendance à apparaître entre les étapes 40 et 80.max_epochs = 1est la valeur par défaut ; plusieurs époques réutilisent les mêmes instructions lors de nouveaux déploiements, ce qui peut être utile si le nombre d'instructions est restreint, mais risque de trop s'adapter à une distribution d'invite étroite. -
adam_beta2 = 0,95. Inférieur à la valeur SFT par défaut de 0,999. Dans RL, les statistiques de gradient ne sont pas stationnaires. L'optimiseur doit donc suivre la variance récente du gradient de manière plus agressive.
-
weight_decay = 0,0. LoRa limite déjà les mises à jour via un paramétrage de bas niveau. L'ajout d'une diminution du poids aggrave la régularisation d'une manière qui n'a pas été bien caractérisée pour le réglage précis du RL.
-
adam_grad_clip_norm = 1,0. Limite la norme de gradient globale. Si l'effondrement est en corrélation avec de grandes pointes avant le découpage, passez à 0,5. Si la norme se situe exactement à 1,0 pour de nombreux pas et que la récompense est stable, le problème peut être le goulot d'étranglement : augmentez prudemment à 2,0.