OpenRLHF 치트시트
OpenRLHF는 규모를 고려하여 설계된 고성능 오픈 소스 RLHF 프레임워크입니다. Ray는 분산 스케줄링, vLLM은 빠른 생성, DeepSpeed/ZeRO는 학습을 위해 구축되었으며, 액터, 크리틱, 리워드, 참조 모델을 GPU 간에 분리하여 대규모 모델(70B+)을 효율적으로 학습할 수 있습니다. PPO, GRPO, REINFORCE++, RLOO 등 다양한 알고리즘을 구현하며, 동적 샘플링 및 비동기 에이전틱 RL을 지원합니다.
규모의 강화학습은 운영상 까다롭습니다. 단일 노드에서 소규모 모델로 시작하여 리워드 추세를 확인한 후 Ray를 사용하여 규모를 확장하세요.
설치
| 방법 | 명령어 |
|---|
| pip | pip install openrlhf |
| vLLM 추가 포함 | pip install openrlhf[vllm] |
| 소스에서 | git clone https://github.com/OpenRLHF/OpenRLHF && cd OpenRLHF && pip install -e . |
| Docker | 프로젝트의 참조 이미지 사용(CUDA + 의존성 미리 설치) |
| 요구사항 | NVIDIA GPU(들), CUDA, Ray, DeepSpeed, vLLM |
아키텍처
| 컴포넌트 | 역할 |
|---|
| Actor | 학습 중인 정책 모델 |
| Critic | 값 모델(PPO) |
| 리워드 모델 | 생성된 응답에 점수 매김 |
| 참조 모델 | KL 페널티를 위한 고정 기저선 |
| Ray | 이러한 모델을 GPU 간에 스케줄 및 배치 |
| vLLM 엔진 | 롤아웃/생성 단계 가속화 |
일반적인 학습 진입점
OpenRLHF는 알고리즘별 CLI 모듈을 제공하며, deepspeed 또는 ray를 사용하여 시작합니다.
| 명령어 | 목적 |
|---|
openrlhf.cli.train_sft | 감독 미세 조정 |
openrlhf.cli.train_rm | 리워드 모델 학습 |
openrlhf.cli.train_ppo | PPO(단일 컨트롤러) |
openrlhf.cli.train_ppo_ray | Ray + vLLM으로 분산된 PPO/GRPO |
openrlhf.cli.train_dpo | 직접 선호도 최적화 |
Ray를 사용한 PPO/GRPO(스케치)
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
| 플래그 | 제어 항목 |
|---|
--pretrain | 기본/액터 모델 |
--reward_pretrain | 리워드 모델 경로 |
--advantage_estimator group_norm | GRPO 스타일 그룹 정규화 선택 |
--vllm_num_engines | vLLM 롤아웃 엔진 수 |
--actor_num_gpus_per_node | 액터를 위한 GPU 할당 |
--colocate_actor_ref | 액터 + 참조를 함께 배치하여 GPU 절약 |
알고리즘
| 알고리즘 | 플래그/모듈 |
|---|
| PPO | train_ppo*의 기본값 |
| GRPO | --advantage_estimator group_norm |
| REINFORCE++ | --advantage_estimator reinforce 패밀리 |
| RLOO | --advantage_estimator rloo |
| DPO / KTO | 전용 train_dpo / train_kto 모듈 |
확장 및 성능
| 기법 | 플래그/주석 |
|---|
| ZeRO 단계 | --zero_stage 3(대규모 모델용) |
| 오프로드 | --adam_offload(옵티마이저 상태를 CPU로 유출) |
| Flash attention | --flash_attn |
| 공동 배치 | --colocate_actor_ref, --colocate_critic_reward |
| 동적 샘플링 | 샘플 효율성 향상을 위해 기본 제공 |
OpenRLHF vs verl vs ART
| 측면 | OpenRLHF | verl | ART |
|---|
| 재단 | Ray + DeepSpeed + vLLM | HybridFlow + FSDP/Megatron | 클라이언트/서버 + Unsloth |
| 장점 | 프로덕션 RLHF, 광범위한 알고리즘 | 처리량 + 유연성 | 자체 코드의 에이전트 |
| 멀티모달 | VLM RLHF(OpenRLHF-M) | 지원됨 | 텍스트 중심 |
| 최고 | 확장 가능한 RLHF 파이프라인 | 연구 처리량 | 단일 에이전트 온 디바이스 RL |
리소스