Ce document regroupe les spécifications techniques et les guides de configuration pour l'utilisation des algorithmes PPO (Proximal Policy Optimization) et GRPO (Group Relative Policy Optimization) au sein du framework VeRL.
Optimisation de Politique Proximale (PPO)
L'algorithme PPO est une méthode de gradient de politique pour l'apprentissage par renforcement, conçue par OpenAI en 2017. Elle s'est imposée comme un standard pour le réglage fin des grands modèles de langage (LLM) en raison de son équilibre entre efficacité de calcul, facilité d'implémentation et stabilité de convergence.
Contrairement aux méthodes traditionnelles comme REINFORCE qui souffrent d'une variance élevée et d'instabilités lors de mises à jour trop brutales, PPO utilise une fonction d'objectif substitut tronquée (clipped surrogate objective). Cela permet de limiter l'amplitude des changements de politique à chaque étape.
1. Architectures et Composants Fondamentaux
- Structure Acteur-Critique : PPO s'appuie sur deux modèles distincts. L'Acteur (la politique) génère des actions, tandis que le Critique (la fonction de valeur) évalue ces actions.
- Estimation d'Avantage Généralisée (GAE) : Pour calculer l'avantage, PPO utilise GAE afin de réduire la variance des estimations tout en contrôlant le biais.
- Objectif Tronqué : Le mécanisme de clipping empêche la nouvelle politique de s'écarter excessivement de l'ancienne, sécurisant ainsi l'apprentissage.
2. Paramètres de Configuration
Les paramètres influençant la mémoire GPU (micro_batch_size) n'impactent pas la convergence mathématique mais sont cruciaux pour éviter les erreurs "Out of Memory" (OOM).
data.train_batch_size: Taille globale du lot de prompts pour générer les trajectoires. Le volume total de réponses est égal àtrain_batch_size * n_rollouts.actor_rollout_ref.actor.ppo_mini_batch_size: Taille des sous-lots utilisés pour la mise à jour de l'acteur après échantillonnage.actor_rollout_ref.actor.clip_ratio: Plage de troncature (généralement 0.2).actor_rollout_ref.actor.ppo_epochs: Nombre d'itérations d'optimisation sur un même ensemble de données échantillonnées.algorithm.gamma: Facteur de remise pour les récompenses futures.algorithm.lam: Paramètre lambda pour le calcul GAE.
3. Contrôle de la Divergence KL
Pour éviter que le modèle ne dérive trop par rapport au modèle de référence (souvent le modèle SFT initial), deux méthodes sont disponibles :
- Pénalité KL dans la récompense : Intègre la divergence KL directement comme un coût négatif dans le calcul de la récompense.
- Perte KL (KL Loss) : Ajoute un terme de divergence KL directement dans la fonction de perte de l'acteur (configuré via
use_kl_loss=True).
4. Exemple d'exécution (PPO)
# Exemple de script pour l'entraînement d'un modèle Qwen avec PPO
bash scripts/start_ppo_training.sh \
trainer.n_gpus_per_node=2 \
actor_rollout_ref.rollout.tensor_model_parallel_size=2 \
actor_rollout_ref.model.path=models/Qwen2.5-0.5B-Base \
critic.model.path=models/Qwen2.5-0.5B-Base \
data.train_batch_size=128 \
actor_rollout_ref.actor.ppo_mini_batch_size=32 \
actor_rollout_ref.actor.ppo_micro_batch_size=4
| Modèle | Méthode | Score de référence |
|---|---|---|
| Qwen2.5-0.5B | Pré-entraînement (SFT) | 36.4 |
| Qwen2.5-0.5B | PPO (VeRL) | 56.7 |
Optimisation de Politique Relative par Groupe (GRPO)
Introduit par l'équipe DeepSeekMath, GRPO simplifie l'apprentissage par renforcement en supprimant le modèle Critique. Cela réduit considérablement la charge mémoire et les besoins de calcul.
1. Fonctionnement de GRPO
- Échantillonnage par Groupe : Pour chaque question, le modèle génère plusieurs réponses (un groupe).
- Calcul de l'Avantage Relatif : L'avantage n'est pas prédit par un modèle tiers, mais calculé en comparant la récompense d'une réponse à la moyenne des récompenses du groupe.
- Optimisation de la Politique : Le modèle renforce les solutions qui sont statistiquement meilleures que la moyenne du groupe.
2. Configuration Spécifique
actor_rollout.ref.rollout.n: Nombre de réponses générées par prompt (doit être > 1 pour GRPO).algorithm.adv_estimator: Doit être défini surgrpo.actor_rollout_ref.actor.loss_agg_mode: Mode d'agrégation de la perte. Bien que "seq-mean-token-mean" soit utilisé dans le papier original, "token-mean" est souvent préféré pour la stabilité dans VeRL.actor_rollout_ref.actor.use_kl_loss: Généralement activé (True) pour GRPO afin de régulariser la politique sans pénalité de récompense explicite.
3. Extension : DrGRPO
Le DrGRPO (Differentiable Reward GRPO) traite le biais de longueur observé dans GRPO. Dans certains scénarios, GRPO peut favoriser des réponses inutilement longues. DrGRPO utilise une normalisation globale constante pour agréger les pertes au niveau des tokens afin de neutraliser ce biais.
Configuration pour DrGRPO :
loss_agg_mode: "seq-mean-token-sum-norm"norm_adv_by_std_in_grpo: False
4. Exemple d'exécution (GRPO)
# Lancement d'un entraînement GRPO
bash examples/grpo_trainer/run_qwen_grpo.sh \
actor_rollout.ref.rollout.n=8 \
algorithm.adv_estimator=grpo \
actor_rollout_ref.actor.use_kl_loss=True