OpenRLHF Cheatsheet
OpenRLHF ist ein hochleistungsfähiges, Open-Source-RLHF-Framework für Skalierung. Aufgebaut auf Ray für verteilte Terminplanung, vLLM für schnelle Generierung und DeepSpeed/ZeRO für Training trennt es die Actor-, Critic-, Reward- und Reference-Modelle über GPUs, damit Sie große Modelle (70B+) effizient trainieren können. Es implementiert ein breites Menü an Algorithmen — PPO, GRPO, REINFORCE++, RLOO — plus dynamisches Sampling und asynchrones agentem RL.
Reinforcement Learning in Skalierung ist operativ anspruchsvoll. Beginnen Sie auf einem einzelnen Node mit einem kleinen Modell, bestätigen Sie, dass die Reward-Trends korrekt sind, und skalieren Sie dann mit Ray auf.
Installation
| Methode | Befehl |
|---|
| pip | pip install openrlhf |
| Mit vLLM Extras | pip install openrlhf[vllm] |
| Von Quelle | git clone https://github.com/OpenRLHF/OpenRLHF && cd OpenRLHF && pip install -e . |
| Docker | Verwenden Sie das Referenz-Image des Projekts (CUDA + Abhängigkeiten vorinstalliert) |
| Anforderungen | NVIDIA GPU(s), CUDA, Ray, DeepSpeed, vLLM |
Architektur
| Komponente | Rolle |
|---|
| Actor | Das trainierte Policy-Modell |
| Critic | Value-Modell (PPO) |
| Reward-Modell | Bewertet generierte Responses |
| Reference-Modell | Eingefrorene Baseline für die KL-Strafe |
| Ray | Plant und platziert diese Modelle über GPUs |
| vLLM-Engine | Beschleunigt die Rollout-/Generierungsphase |
Häufige Trainings-Einstiegspunkte
OpenRLHF liefert CLI-Module pro Algorithmus; Starten Sie mit deepspeed oder ray.
| Befehl | Zweck |
|---|
openrlhf.cli.train_sft | Überwachtes Fine-Tuning |
openrlhf.cli.train_rm | Reward-Modell-Training |
openrlhf.cli.train_ppo | PPO (Single-Controller) |
openrlhf.cli.train_ppo_ray | PPO/GRPO verteilt mit Ray + vLLM |
openrlhf.cli.train_dpo | Direct Preference Optimization |
PPO/GRPO mit Ray (Skizze)
ray start --head --node-ip-address 0.0.0.0
python3 -m openrlhf.cli.train_ppo_ray \
--pretrain Qwen/Qwen2.5-7B-Instruct \
--reward_pretrain OpenRLHF/Llama-3-8b-rm-mixture \
--advantage_estimator group_norm \
--vllm_num_engines 2 --vllm_tensor_parallel_size 1 \
--actor_num_gpus_per_node 4 \
--colocate_actor_ref \
--prompt_data your/prompts --input_key prompt \
--save_path ./ckpt --use_wandb $WANDB_API_KEY
| Flag | Kontrollen |
|---|
--pretrain | Basis-/Actor-Modell |
--reward_pretrain | Reward-Modellpfad |
--advantage_estimator group_norm | Wählt GRPO-ähnliche Gruppennormalisierung |
--vllm_num_engines | Anzahl der vLLM-Rollout-Engines |
--actor_num_gpus_per_node | GPU-Zuteilung für den Actor |
--colocate_actor_ref | Platzieren Sie Actor + Reference zusammen, um GPUs zu sparen |
Algorithmen
| Algorithmus | Flag/Module |
|---|
| PPO | Standard in train_ppo* |
| GRPO | --advantage_estimator group_norm |
| REINFORCE++ | --advantage_estimator reinforce Familie |
| RLOO | --advantage_estimator rloo |
| DPO / KTO | Dedizierte train_dpo / train_kto Module |
Skalierung & Leistung
| Technik | Flag/Notiz |
|---|
| ZeRO-Stufe | --zero_stage 3 für große Modelle |
| Offload | --adam_offload zum Auslagern des Optimizer-Status auf CPU |
| Flash Attention | --flash_attn |
| Colocation | --colocate_actor_ref, --colocate_critic_reward |
| Dynamisches Sampling | In das System integriert, um Sampling-Effizienz zu verbessern |
OpenRLHF vs verl vs ART
| Aspekt | OpenRLHF | verl | ART |
|---|
| Foundation | Ray + DeepSpeed + vLLM | HybridFlow + FSDP/Megatron | Client/Server + Unsloth |
| Stärke | Production RLHF, breite Algos | Durchsatz + Flexibilität | Agents in Ihrem eigenen Code |
| Multimodal | VLM RLHF (OpenRLHF-M) | Unterstützt | Text-fokussiert |
| Beste Einsatzgebiete | Skalierbare RLHF-Pipelines | Research-Durchsatz | Single-Agent On-the-Job RL |
Ressourcen