Pular para o conteúdo

Folha de Dicas do OpenRLHF

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étodoComando
pippip install openrlhf
Com extras vLLMpip install openrlhf[vllm]
A partir do código-fontegit clone https://github.com/OpenRLHF/OpenRLHF && cd OpenRLHF && pip install -e .
Dockeruse a imagem de referência do projeto (CUDA + deps pré-instalado)
RequisitosGPUs NVIDIA, CUDA, Ray, DeepSpeed, vLLM

Arquitetura

ComponenteFunção
ActorO modelo de política sendo treinado
CriticModelo de valor (PPO)
Modelo de recompensaPontos nas respostas geradas
Modelo de referênciaBaseline congelado para a penalidade KL
RayAgenda e coloca esses modelos entre GPUs
Engine vLLMAcelera a fase de rollout/geração

Pontos de Entrada de Treinamento Comuns

OpenRLHF fornece módulos CLI por algoritmo; inicie com deepspeed ou ray.

ComandoPropósito
openrlhf.cli.train_sftAjuste fino supervisionado
openrlhf.cli.train_rmTreinamento de modelo de recompensa
openrlhf.cli.train_ppoPPO (controlador único)
openrlhf.cli.train_ppo_rayPPO/GRPO distribuído com Ray + vLLM
openrlhf.cli.train_dpoOtimização de Preferência Direta

PPO/GRPO com Ray (esboço)

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/ator
--reward_pretrainCaminho do modelo de recompensa
--advantage_estimator group_normSeleciona normalização de grupo no estilo GRPO
--vllm_num_enginesNúmero de engines de rollout vLLM
--actor_num_gpus_per_nodeAlocação de GPU para o ator
--colocate_actor_refColoca ator + referência juntos para economizar GPUs

Algoritmos

AlgoritmoFlag/Módulo
PPOpadrão em train_ppo*
GRPO--advantage_estimator group_norm
REINFORCE++família --advantage_estimator reinforce
RLOO--advantage_estimator rloo
DPO / KTOmódulos dedicados train_dpo / train_kto

Escalabilidade e Desempenho

TécnicaFlag/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âmicaIntegrada para melhorar a eficiência de amostragem

OpenRLHF vs verl vs ART

AspectoOpenRLHFverlART
FundaçãoRay + DeepSpeed + vLLMHybridFlow + FSDP/MegatronCliente/servidor + Unsloth
ForçaRLHF em produção, algoritmos amplosDesempenho + flexibilidadeAgentes no seu próprio código
MultimodalRLHF de VLM (OpenRLHF-M)SuportadoFocado em texto
Melhor paraPipelines RLHF escaláveisDesempenho de pesquisaRL de agente único em trabalho

Recursos