GRPOTrainer — 그룹 상대 정책 최적화

GRPOTrainer — 그룹 상대 정책 최적화

GRPOTrainer는 GRPO(Group Relative Policy Optimization) 로 언어 모델을 훈련하는 트레이너예요. DeepSeekMath에서 제안된 방법으로, 보상 모델 없이 그룹 내 상대 비교로 정책을 최적화해요. 원 논문은 DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models이에요.

출처: TRL — GRPO Trainer

커스텀 보상 함수 사용

from trl import GRPOTrainer

trainer = GRPOTrainer(
    reward_funcs=reward_func,
    ...,
)

여러 보상 함수를 리스트로 넘길 수도 있고, 동기·비동기 함수를 섞을 수 있어요.

from trl import GRPOTrainer

trainer = GRPOTrainer(
    reward_funcs=[reward_func, async_reward_func1, async_reward_func2],
    ...,
)

보상 함수는 프로세스당 프롬프트 슬라이스를 받아, num_generations/num_generations_eval에 맞는 올바른 수의 완성(completion)을 반환해야 해요.

기본 예시

from trl import GRPOTrainer
from trl.rewards import accuracy_reward
from datasets import load_dataset

dataset = load_dataset("trl-lib/DeepMath-103K", split="train")
trainer = GRPOTrainer(
    model="Qwen/Qwen2.5-0.5B-Instruct",
    reward_funcs=accuracy_reward,
    train_dataset=dataset,
)
trainer.train()

GRPOConfig 주요 파라미터

  • sync_ref_model (기본 False): ref_model_sync_steps마다 참조 모델을 활성 모델에 동기화(TD-DPO)
  • ref_model_mixup_alpha (기본 0.6): 현재 정책과 이전 참조 정책의 혼합 비율
  • ref_model_sync_steps (기본 512): 참조 모델 동기화 주기
  • top_entropy_quantile (기본 1.0): 정책 손실 항에서 엔트로피 상위 ρ 분위수 토큰만 유지
  • use_adaptive_entropy (기본 False): Skywork-OR1의 적응형 엔트로피 제어

더 알아보기