Aller au contenu

verl - Volcano Engine RL pour LLMs Cheatsheet

verl - Volcano Engine RL pour LLMs Cheatsheet

verl (Volcano Engine Reinforcement Learning) est un framework open-source haute performance pour l’apprentissage par renforcement lors de l’entraînement post-training de grands modèles de langage. C’est l’implémentation publique du paper HybridFlow, construit autour d’un modèle de programmation hybrid-controller qui te permet d’exprimer des flux de données RL complexes — PPO, GRPO, et autres — en quelques lignes en découplant le calcul des dépendances de données. Il s’intègre avec FSDP, Megatron-LM, vLLM et SGLang, et c’est l’un des frameworks RL les plus largement utilisés pour les LLMs.

L’entraînement RL post-training est exigeant en calcul et sensible à la configuration. Valide une récompense et une petite exécution avant de passer à la multi-nœud.

Installation

MethodCommand
pippip install verl
From sourcegit clone https://github.com/volcengine/verl && cd verl && pip install -e .
Dockeruse the official images referenced in the docs (CUDA + vLLM preinstalled)
RequirementsNVIDIA GPU(s), CUDA, PyTorch; vLLM or SGLang for rollout

Concepts Clés

TermMeaning
HybridFlowLe modèle de contrôleur : un seul contrôleur orchestre les workers distribués
RolloutPhase de génération qui produit des échantillons (servie par vLLM/SGLang)
Actor / CriticLa politique en cours d’entraînement et (pour PPO) le modèle de valeur
RewardSignal scalaire ; provenant d’un modèle de récompense ou d’une fonction personnalisée
PlacementComment les modèles sont mappés sur des ensembles de GPU (colocalisés ou séparés)
RecipeConfiguration d’entraînement prête à l’emploi pour un algorithme

Algorithmes Supportés

AlgorithmNotes
PPOClassic actor-critic RLHF
GRPOGroup-relative, no critic model required
ReMax / RLOOLightweight baselines
DAPO / Dr.GRPOGRPO variants
DPO-stylePreference optimization recipes

Exécution d’un Travail d’Entraînement

verl est piloté par des remplacements de config en style Hydra sur la ligne de commande.

# GRPO example (conceptual): point at data, model, and rollout backend
python3 -m verl.trainer.main_ppo \
  algorithm.adv_estimator=grpo \
  data.train_files=$DATA/train.parquet \
  data.val_files=$DATA/val.parquet \
  actor_rollout_ref.model.path=Qwen/Qwen2.5-7B-Instruct \
  actor_rollout_ref.rollout.name=vllm \
  trainer.n_gpus_per_node=8 \
  trainer.nnodes=1
Config groupControls
algorithm.*Algorithm and advantage estimator (e.g. adv_estimator=grpo)
data.*Train/val files, batch sizes, max lengths
actor_rollout_ref.model.*Base model path and dtype
actor_rollout_ref.rollout.*Rollout backend (vllm / sglang) and sampling
critic.*Critic model settings (PPO)
trainer.*GPUs per node, node count, logging, checkpoints

Backends & Scaling

ComponentOptions
Training engineFSDP, FSDP2, Megatron-LM
Rollout enginevLLM, SGLang
DistributionRay-based placement across GPUs/nodes
Device mappingColocate actor+rollout, or split across GPU sets

Récompense & Données

TaskHow
Custom rewardFournir une fonction de récompense module via config
Reward modelPointer reward_model.* sur un modèle de scoring
Dataset formatParquet avec prompt (et answer pour les récompenses vérifiables)
Verifiable rewardsSupport intégré pour math/code-style exact-match rewards

Monitoring

ToolIntegration
Weights & Biasestrainer.logger=['console','wandb']
TensorBoardSupported logger backend
Checkpointstrainer.save_freq, resume from trainer.resume_mode

verl vs Autres Frameworks RL

AspectverlOpenRLHFART
Core modelHybridFlow controllerRay actor splitClient/server
Training enginesFSDP + MegatronDeepSpeed/FSDPUnsloth
RolloutvLLM / SGLangvLLMvLLM
Best forDébit + flexibilitéRLHF production à l’échelleAgents dans ton propre code

Ressources