verl - Volcano Engine RL für LLMs Cheatsheet
verl (Volcano Engine Reinforcement Learning) ist ein Open-Source-, hochleistungsfähiges Framework für das Reinforcement-Learning-Post-Training von großen Sprachmodellen. Es ist die öffentliche Implementierung des HybridFlow-Papers, aufgebaut um ein Hybrid-Controller-Programmiermodell, das es Ihnen ermöglicht, komplexe RL-Datenflüsse auszudrücken — PPO, GRPO und andere — in wenigen Zeilen, während Berechnung von Datenabhängigkeiten entkoppelt wird. Es integriert sich mit FSDP, Megatron-LM, vLLM und SGLang und ist eines der am häufigsten verwendeten RL-Frameworks für LLMs.
RL-Post-Training ist rechenintensiv und empfindlich gegenüber Konfiguration. Validieren Sie eine Reward und einen kleinen Lauf, bevor Sie auf Multi-Node skalieren.
Installation
| Methode | Befehl |
|---|
| pip | pip install verl |
| Von Quelle | git clone https://github.com/volcengine/verl && cd verl && pip install -e . |
| Docker | Verwenden Sie die offiziellen Images aus der Dokumentation (CUDA + vLLM vorinstalliert) |
| Anforderungen | NVIDIA GPU(s), CUDA, PyTorch; vLLM oder SGLang für Rollout |
Kernkonzepte
| Begriff | Bedeutung |
|---|
| HybridFlow | Das Controller-Modell: Ein einzelner Controller orchestriert verteilte Worker |
| Rollout | Generierungsphase, die Samples produziert (bereitgestellt von vLLM/SGLang) |
| Actor / Critic | Die trainierte Policy und (für PPO) das Value-Modell |
| Reward | Skalares Signal; von einem Reward-Modell oder einer benutzerdefinierten Funktion |
| Placement | Wie Modelle auf GPU-Sets abgebildet werden (kosolokal oder geteilt) |
| Recipe | Eine vorgefertigte Trainingskonfiguration für einen Algorithmus |
Unterstützte Algorithmen
| Algorithmus | Notizen |
|---|
| PPO | Klassisches Actor-Critic RLHF |
| GRPO | Gruppenrelativ, kein Critic-Modell erforderlich |
| ReMax / RLOO | Leichte Baselines |
| DAPO / Dr.GRPO | GRPO-Varianten |
| DPO-Stil | Preference-Optimierungsrezepte |
Ausführung eines Trainingsjobs
verl wird durch Hydra-ähnliche Config-Overrides in der Befehlszeile gesteuert.
# GRPO-Beispiel (konzeptuell): Daten, Modell und Rollout-Backend angeben
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-Gruppe | Kontrollen |
|---|
algorithm.* | Algorithmus und Advantage-Estimator (z.B. adv_estimator=grpo) |
data.* | Trainings-/Val-Dateien, Batch-Größen, maximale Längen |
actor_rollout_ref.model.* | Basismodellpfad und Dtype |
actor_rollout_ref.rollout.* | Rollout-Backend (vllm / sglang) und Sampling |
critic.* | Critic-Modelleinstellungen (PPO) |
trainer.* | GPUs pro Node, Knotenanzahl, Logging, Checkpoints |
Backends & Skalierung
| Komponente | Optionen |
|---|
| Training-Engine | FSDP, FSDP2, Megatron-LM |
| Rollout-Engine | vLLM, SGLang |
| Verteilung | Ray-basierte Platzierung über GPUs/Nodes |
| Geräte-Mapping | Collocate Actor+Rollout oder über GPU-Sets verteilt |
Reward & Daten
| Aufgabe | Wie |
|---|
| Benutzerdefinierte Reward | Stellen Sie ein Reward-Funktionsmodul über Config bereit |
| Reward-Modell | Verweisen Sie reward_model.* auf ein Scoring-Modell |
| Datensatzformat | Parquet mit Prompt (und Antwort für überprüfbare Rewards) |
| Überprüfbare Rewards | Integrierte Unterstützung für Mathe/Code-Stil Exact-Match-Rewards |
Überwachung
| Tool | Integration |
|---|
| Weights & Biases | trainer.logger=['console','wandb'] |
| TensorBoard | Unterstützter Logger-Backend |
| Checkpoints | trainer.save_freq, Fortsetzen von trainer.resume_mode |
verl vs andere RL-Frameworks
| Aspekt | verl | OpenRLHF | ART |
|---|
| Core-Modell | HybridFlow-Controller | Ray Actor Split | Client/Server |
| Training-Engines | FSDP + Megatron | DeepSpeed/FSDP | Unsloth |
| Rollout | vLLM / SGLang | vLLM | vLLM |
| Beste Einsatzgebiete | Durchsatz + Flexibilität | Production RLHF in Skalierung | Agents in Ihrem eigenen Code |
Ressourcen