Ir al contenido

Hoja de Referencia de OpenRLHF

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étodoComando
pippip install openrlhf
Con extras de vLLMpip install openrlhf[vllm]
Desde el código fuentegit clone https://github.com/OpenRLHF/OpenRLHF && cd OpenRLHF && pip install -e .
Dockerusa la imagen de referencia del proyecto (CUDA + dependencias preinstaladas)
RequisitosGPU(s) NVIDIA, CUDA, Ray, DeepSpeed, vLLM

Arquitectura

ComponenteRol
ActorEl modelo de política siendo entrenado
CriticModelo de valor (PPO)
Modelo de recompensaPuntúa respuestas generadas
Modelo de referenciaLínea de base congelada para la penalización de KL
RayPrograma y coloca estos modelos en GPUs
Motor vLLMAcelera la fase de rollout/generación

Puntos de Entrada de Entrenamiento Comunes

OpenRLHF incluye módulos CLI por algoritmo; inicia con deepspeed o ray.

ComandoPropósito
openrlhf.cli.train_sftAjuste fino supervisado
openrlhf.cli.train_rmEntrenamiento de modelo de recompensa
openrlhf.cli.train_ppoPPO (controlador único)
openrlhf.cli.train_ppo_rayPPO/GRPO distribuido con Ray + vLLM
openrlhf.cli.train_dpoDirect 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
FlagControla
--pretrainModelo base/actor
--reward_pretrainRuta del modelo de recompensa
--advantage_estimator group_normSelecciona normalización de grupo estilo GRPO
--vllm_num_enginesNúmero de motores de rollout vLLM
--actor_num_gpus_per_nodeAsignación de GPU para el actor
--colocate_actor_refColoca actor + referencia juntos para ahorrar GPUs

Algoritmos

AlgoritmoFlag/Módulo
PPOdefecto en train_ppo*
GRPO--advantage_estimator group_norm
REINFORCE++familia --advantage_estimator reinforce
RLOO--advantage_estimator rloo
DPO / KTOmódulos dedicados train_dpo / train_kto

Escalado y Rendimiento

TécnicaFlag/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ámicoIntegrado para mejorar eficiencia de muestreo

OpenRLHF vs verl vs ART

AspectoOpenRLHFverlART
FundaciónRay + DeepSpeed + vLLMHybridFlow + FSDP/MegatronCliente/servidor + Unsloth
FortalezaRLHF de producción, algoritmos ampliosRendimiento + flexibilidadAgentes en tu propio código
MultimodalVLM RLHF (OpenRLHF-M)SoportadoEnfocado en texto
Mejor paraPipelines RLHF escalablesRendimiento de investigaciónRL agentico único en el trabajo

Recursos