[ PROMPT_NODE_22850 ]
openrlhf-training
[ SKILL_DOCUMENTATION ]
# OpenRLHF - 高性能 RLHF 训练
## 快速开始
OpenRLHF 是一个基于 Ray 的强化学习人类反馈 (RLHF) 框架,针对分布式训练和 vLLM 推理加速进行了优化。
**安装**:
bash
# 启动 Docker 容器
docker run --runtime=nvidia -it --rm --shm-size="10g" --cap-add=SYS_ADMIN
-v $PWD:/openrlhf nvcr.io/nvidia/pytorch:25.02-py3 bash
# 卸载冲突包
sudo pip uninstall xgboost transformer_engine flash_attn pynvml -y
# 安装带有 vLLM 的 OpenRLHF
pip install openrlhf[vllm]
**PPO 训练** (混合引擎):
bash
ray start --head --node-ip-address 0.0.0.0 --num-gpus 8
ray job submit --address="http://127.0.0.1:8265"
--runtime-env-json='{"working_dir": "/openrlhf"}'
-- python3 -m openrlhf.cli.train_ppo_ray
--ref_num_nodes 1 --ref_num_gpus_per_node 8
--reward_num_nodes 1 --reward_num_gpus_per_node 8
--critic_num_nodes 1 --critic_num_gpus_per_node 8
--actor_num_nodes 1 --actor_num_gpus_per_node 8
--vllm_num_engines 4 --vllm_tensor_parallel_size 2
--colocate_all_models
--vllm_gpu_memory_utilization 0.5
--pretrain OpenRLHF/Llama-3-8b-sft-mixture
--reward_pretrain OpenRLHF/Llama-3-8b-rm-700k
--save_path ./output/llama3-8b-rlhf
--micro_train_batch_size 8 --train_batch_size 128
--micro_rollout_batch_size 16 --rollout_batch_size 1024
--max_epochs 1 --prompt_max_len 1024 --generate_max_len 1024
--zero_stage 3 --bf16
--actor_learning_rate 5e-7 --critic_learning_rate 9e-6
--init_kl_coef 0.01 --normalize_reward
--gradient_checkpointing --packing_samples
--vllm_enable_sleep --deepspeed_enable_sleep
**GRPO 训练** (组归一化策略优化):
bash
# 命令与 PPO 相同,但添加:
--advantage_estimator group_norm
## 常用工作流
### 工作流 1:完整 RLHF 流水线 (SFT → 奖励模型 → PPO)
**第 1 步:训练奖励模型** (DPO):
bash
deepspeed --module openrlhf.cli.train_rm
--save_path ./output/llama3-8b-rm
--save_steps -1 --logging_steps 1
--eval_steps -1 --train_batch_size 256
--micro_train_batch_size 1 --pretrain meta-llama/Meta-Llama-3-8B
--bf16 --max_epochs 1 --max_len 8192
--zero_stage 3 --learning_rate 9e-6
--dataset OpenRLHF/preference_dataset_mixture2_and_safe_pku
--apply_chat_template --chosen_key chosen
--rejected_key rejected --flash_attn --gradient_checkpointing
**第 2 步:PPO 训练**:
bash
ray start --head --node-ip-address 0.0.0.0 --num-gpus 8
ray job submit --address="