Hoja de Referencia de OpenRLHF
OpenRLHF es un framework RLHF de alto rendimiento y código abierto diseñado para escala. Construido sobre Ray para programación distribuida, vLLM para generación rápida y DeepSpeed/ZeRO para entrenamiento, separa los modelos de Actor, Crítico, Recompensa y Referencia en GPUs para entrenar modelos grandes (70B+) eficientemente. Implementa un amplio menú de algoritmos — PPO, GRPO, REINFORCE++, RLOO — más muestreo dinámico y RL agentico asincrónico.
El aprendizaje por refuerzo a escala es operacionalmente exigente. Comienza en un único nodo con un modelo pequeño, confirma que las tendencias de recompensa son correctas, luego escala hacia afuera con Ray.
Instalación
| Método | Comando |
|---|
| pip | pip install openrlhf |
| Con extras de vLLM | pip install openrlhf[vllm] |
| Desde el código fuente | git clone https://github.com/OpenRLHF/OpenRLHF && cd OpenRLHF && pip install -e . |
| Docker | usa la imagen de referencia del proyecto (CUDA + dependencias preinstaladas) |
| Requisitos | GPU(s) NVIDIA, CUDA, Ray, DeepSpeed, vLLM |
Arquitectura
| Componente | Rol |
|---|
| Actor | El modelo de política siendo entrenado |
| Critic | Modelo de valor (PPO) |
| Modelo de recompensa | Puntúa respuestas generadas |
| Modelo de referencia | Línea de base congelada para la penalización de KL |
| Ray | Programa y coloca estos modelos en GPUs |
| Motor vLLM | Acelera la fase de rollout/generación |
Puntos de Entrada de Entrenamiento Comunes
OpenRLHF incluye módulos CLI por algoritmo; inicia con deepspeed o ray.
| Comando | Propósito |
|---|
openrlhf.cli.train_sft | Ajuste fino supervisado |
openrlhf.cli.train_rm | Entrenamiento de modelo de recompensa |
openrlhf.cli.train_ppo | PPO (controlador único) |
openrlhf.cli.train_ppo_ray | PPO/GRPO distribuido con Ray + vLLM |
openrlhf.cli.train_dpo | Direct Preference Optimization |
PPO/GRPO con Ray (esquema)
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 | Controla |
|---|
--pretrain | Modelo base/actor |
--reward_pretrain | Ruta del modelo de recompensa |
--advantage_estimator group_norm | Selecciona normalización de grupo estilo GRPO |
--vllm_num_engines | Número de motores de rollout vLLM |
--actor_num_gpus_per_node | Asignación de GPU para el actor |
--colocate_actor_ref | Coloca actor + referencia juntos para ahorrar GPUs |
Algoritmos
| Algoritmo | Flag/Módulo |
|---|
| PPO | defecto en train_ppo* |
| GRPO | --advantage_estimator group_norm |
| REINFORCE++ | familia --advantage_estimator reinforce |
| RLOO | --advantage_estimator rloo |
| DPO / KTO | módulos dedicados train_dpo / train_kto |
Escalado y Rendimiento
| Técnica | Flag/Nota |
|---|
| Etapa ZeRO | --zero_stage 3 para modelos grandes |
| Offload | --adam_offload para descargar estado del optimizador a CPU |
| Flash attention | --flash_attn |
| Colocación | --colocate_actor_ref, --colocate_critic_reward |
| Muestreo dinámico | Integrado para mejorar eficiencia de muestreo |
OpenRLHF vs verl vs ART
| Aspecto | OpenRLHF | verl | ART |
|---|
| Fundación | Ray + DeepSpeed + vLLM | HybridFlow + FSDP/Megatron | Cliente/servidor + Unsloth |
| Fortaleza | RLHF de producción, algoritmos amplios | Rendimiento + flexibilidad | Agentes en tu propio código |
| Multimodal | VLM RLHF (OpenRLHF-M) | Soportado | Enfocado en texto |
| Mejor para | Pipelines RLHF escalables | Rendimiento de investigación | RL agentico único en el trabajo |
Recursos