OpenRLHF RL 학습 가이드 — 알고리즘과 실행 모드

OpenRLHF RL 학습 가이드 — 알고리즘과 실행 모드

OpenRLHF(0.10.2)의 RL 학습은 세 가지 독립 축을 조합하는 방식이에요. 모든 알고리즘이 각 실행 모드·파이프라인에서 돌도록, 롤아웃은 토큰 단위 궤적을 만들고 손실 계층이 동일하게 소비해요.

출처: https://openrlhf.readthedocs.io/en/latest/agent_training.html

세 축

선택지 설정
실행 모드 Single-turn(기본) / Multi-turn --train.agent_func_path
RL 알고리즘 PPO / REINFORCE++ / REINFORCE++-baseline / RLOO / GRPO / Dr. GRPO --algo.advantage.estimator
파이프라인 Sync(Hybrid Engine) / Async(부분 롤아웃)

알고리즘 요약

알고리즘 --algo.advantage.estimator 핵심 아이디어
PPO gae (기본) 전체 critic과 클립 목적함수
REINFORCE++ reinforce critic 없는 버전, 메모리 절약
REINFORCE++-baseline reinforce_baseline 평균 보상을 베이스라인으로 (RLVR/추론에 강건)
RLOO rloo leave-one-out 베이스라인
GRPO group_norm 그룹 평균/표준편차 정규화

보상 소스 세 가지

  1. 학습된 보상 모델 — --reward.model_name_or_path
  2. 원격 HTTP RM 서버 — --reward.remote_url http://host:5000/get_reward
  3. 로컬 파이썬 보상 함수(RFT) — --reward.remote_url /path/to/reward_func.py

커스텀 보상 함수 예시:

# reward_func.py
import torch

def reward_func(queries, prompts, labels):
    """
    Args:
        queries: list[str] — full text (prompt + response) per sample
        prompts: list[str] — original prompts
        labels:  list[str] — ground-truth labels (from --data.label_key)

    Returns:
        dict with:
            rewards:    Tensor — used in advantage calculation
            scores:     Tensor — used by --algo.dynamic_filtering_enable (typically in [0, 1])
            extra_logs: dict   — values logged to Wandb / TensorBoard
    """
    batch_size = len(queries)
    reward = torch.zeros(batch_size)
    for i, (q, label) in enumerate(zip(queries, labels)):
        reward[i] = 1.0 if my_check(q, label) else 0.0
    return {
        "rewards": reward,
        "scores": reward,
        "extra_logs": {"accuracy": reward.mean().item()},
    }

더 알아보기