Folha de Dicas do OpenRLHF
OpenRLHF é um framework RLHF de código aberto e alto desempenho projetado para escala. Construído em Ray para agendamento distribuído, vLLM para geração rápida e DeepSpeed/ZeRO para treinamento, separa os modelos Actor, Critic, Reward e Reference em GPUs para que você possa treinar modelos grandes (70B+) eficientemente. Implementa um amplo menu de algoritmos — PPO, GRPO, REINFORCE++, RLOO — além de amostragem dinâmica e RL agentic assíncrono.
Aprendizado por reforço em escala é operacionalmente exigente. Comece em um único nó com um modelo pequeno, confirme que as tendências de recompensa estão corretas e depois escale com Ray.
Instalação
| Método | Comando |
|---|
| pip | pip install openrlhf |
| Com extras vLLM | pip install openrlhf[vllm] |
| A partir do código-fonte | git clone https://github.com/OpenRLHF/OpenRLHF && cd OpenRLHF && pip install -e . |
| Docker | use a imagem de referência do projeto (CUDA + deps pré-instalado) |
| Requisitos | GPUs NVIDIA, CUDA, Ray, DeepSpeed, vLLM |
Arquitetura
| Componente | Função |
|---|
| Actor | O modelo de política sendo treinado |
| Critic | Modelo de valor (PPO) |
| Modelo de recompensa | Pontos nas respostas geradas |
| Modelo de referência | Baseline congelado para a penalidade KL |
| Ray | Agenda e coloca esses modelos entre GPUs |
| Engine vLLM | Acelera a fase de rollout/geração |
Pontos de Entrada de Treinamento Comuns
OpenRLHF fornece módulos CLI por algoritmo; inicie com deepspeed ou ray.
| Comando | Propósito |
|---|
openrlhf.cli.train_sft | Ajuste fino supervisionado |
openrlhf.cli.train_rm | Treinamento de modelo de recompensa |
openrlhf.cli.train_ppo | PPO (controlador único) |
openrlhf.cli.train_ppo_ray | PPO/GRPO distribuído com Ray + vLLM |
openrlhf.cli.train_dpo | Otimização de Preferência Direta |
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/ator |
--reward_pretrain | Caminho do modelo de recompensa |
--advantage_estimator group_norm | Seleciona normalização de grupo no estilo GRPO |
--vllm_num_engines | Número de engines de rollout vLLM |
--actor_num_gpus_per_node | Alocação de GPU para o ator |
--colocate_actor_ref | Coloca ator + referência juntos para economizar GPUs |
Algoritmos
| Algoritmo | Flag/Módulo |
|---|
| PPO | padrão em train_ppo* |
| GRPO | --advantage_estimator group_norm |
| REINFORCE++ | família --advantage_estimator reinforce |
| RLOO | --advantage_estimator rloo |
| DPO / KTO | módulos dedicados train_dpo / train_kto |
Escalabilidade e Desempenho
| Técnica | Flag/Nota |
|---|
| Estágio ZeRO | --zero_stage 3 para modelos grandes |
| Offload | --adam_offload para derramar estado do otimizador para CPU |
| Flash attention | --flash_attn |
| Colocação | --colocate_actor_ref, --colocate_critic_reward |
| Amostragem dinâmica | Integrada para melhorar a eficiência de amostragem |
OpenRLHF vs verl vs ART
| Aspecto | OpenRLHF | verl | ART |
|---|
| Fundação | Ray + DeepSpeed + vLLM | HybridFlow + FSDP/Megatron | Cliente/servidor + Unsloth |
| Força | RLHF em produção, algoritmos amplos | Desempenho + flexibilidade | Agentes no seu próprio código |
| Multimodal | RLHF de VLM (OpenRLHF-M) | Suportado | Focado em texto |
| Melhor para | Pipelines RLHF escaláveis | Desempenho de pesquisa | RL de agente único em trabalho |
Recursos