verl - Volcano Engine RL for LLMs 치트시트
verl(Volcano Engine Reinforcement Learning)은 대규모 언어 모델의 강화학습 사후 학습을 위한 오픈 소스 고성능 프레임워크입니다. HybridFlow 논문의 공개 구현으로, 복잡한 RL 데이터 흐름(PPO, GRPO 등)을 소수의 코드 줄로 표현할 수 있는 하이브리드 컨트롤러 프로그래밍 모델을 중심으로 구축되었습니다. FSDP, Megatron-LM, vLLM, SGLang과 통합되며, LLM을 위한 가장 널리 사용되는 RL 프레임워크 중 하나입니다.
RL 사후 학습은 계산이 많고 설정에 민감합니다. 멀티노드로 확장하기 전에 리워드와 소규모 실행을 검증하세요.
설치
| 방법 | 명령어 |
|---|
| pip | pip install verl |
| 소스에서 | git clone https://github.com/volcengine/verl && cd verl && pip install -e . |
| Docker | 문서에 참조된 공식 이미지 사용(CUDA + vLLM 미리 설치) |
| 요구사항 | NVIDIA GPU(들), CUDA, PyTorch; 롤아웃을 위해 vLLM 또는 SGLang |
핵심 개념
| 용어 | 의미 |
|---|
| HybridFlow | 컨트롤러 모델: 단일 컨트롤러가 분산 워커를 오케스트레이션 |
| Rollout | 샘플을 생성하는 생성 단계(vLLM/SGLang에서 제공) |
| Actor / Critic | 학습 중인 정책 및 (PPO의 경우) 값 모델 |
| Reward | 스칼라 신호; 리워드 모델 또는 사용자 정의 함수에서 |
| Placement | 모델을 GPU 세트에 매핑하는 방법(공동 배치 또는 분할) |
| Recipe | 알고리즘을 위한 사전 구성된 학습 설정 |
지원되는 알고리즘
| 알고리즘 | 주석 |
|---|
| PPO | 클래식 액터-크리틱 RLHF |
| GRPO | 그룹 상대, 크리틱 모델 불필요 |
| ReMax / RLOO | 경량 기저선 |
| DAPO / Dr.GRPO | GRPO 변형 |
| DPO-style | 선호도 최적화 레시피 |
학습 작업 실행
verl은 명령줄의 Hydra 스타일 설정 재정의로 구동됩니다.
# GRPO 예제(개념적): 데이터, 모델, 롤아웃 백엔드를 지정합니다
python3 -m verl.trainer.main_ppo \
algorithm.adv_estimator=grpo \
data.train_files=$DATA/train.parquet \
data.val_files=$DATA/val.parquet \
actor_rollout_ref.model.path=Qwen/Qwen2.5-7B-Instruct \
actor_rollout_ref.rollout.name=vllm \
trainer.n_gpus_per_node=8 \
trainer.nnodes=1
| 설정 그룹 | 제어 항목 |
|---|
algorithm.* | 알고리즘 및 이점 추정자(예: adv_estimator=grpo) |
data.* | 학습/검증 파일, 배치 크기, 최대 길이 |
actor_rollout_ref.model.* | 기본 모델 경로 및 dtype |
actor_rollout_ref.rollout.* | 롤아웃 백엔드(vllm / sglang) 및 샘플링 |
critic.* | 크리틱 모델 설정(PPO) |
trainer.* | 노드당 GPU, 노드 수, 로깅, 체크포인트 |
백엔드 및 확장
| 컴포넌트 | 옵션 |
|---|
| 학습 엔진 | FSDP, FSDP2, Megatron-LM |
| 롤아웃 엔진 | vLLM, SGLang |
| 분산 | GPU/노드 간 Ray 기반 배치 |
| 디바이스 매핑 | 액터+롤아웃을 공동 배치하거나 GPU 세트 간 분할 |
리워드 및 데이터
| 작업 | 방법 |
|---|
| 사용자 정의 리워드 | 설정을 통해 리워드 함수 모듈 제공 |
| 리워드 모델 | reward_model.*을 채점 모델로 지정 |
| 데이터셋 형식 | 프롬프트(및 검증 가능한 리워드의 경우 답변)를 포함하는 Parquet |
| 검증 가능한 리워드 | 수학/코드 스타일 정확 일치 리워드에 대한 기본 제공 지원 |
모니터링
| 도구 | 통합 |
|---|
| Weights & Biases | trainer.logger=['console','wandb'] |
| TensorBoard | 지원되는 로거 백엔드 |
| 체크포인트 | trainer.save_freq, trainer.resume_mode에서 재개 |
verl vs 다른 RL 프레임워크
| 측면 | verl | OpenRLHF | ART |
|---|
| 핵심 모델 | HybridFlow 컨트롤러 | Ray 액터 분할 | 클라이언트/서버 |
| 학습 엔진 | FSDP + Megatron | DeepSpeed/FSDP | Unsloth |
| 롤아웃 | vLLM / SGLang | vLLM | vLLM |
| 최고 | 처리량 + 유연성 | 규모 프로덕션 RLHF | 자체 코드의 에이전트 |
리소스