GRPOTrainer — 그룹 상대 정책 최적화
GRPOTrainer — 그룹 상대 정책 최적화
GRPOTrainer는 GRPO(Group Relative Policy Optimization) 로 언어 모델을 훈련하는 트레이너예요. DeepSeekMath에서 제안된 방법으로, 보상 모델 없이 그룹 내 상대 비교로 정책을 최적화해요. 원 논문은 DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models이에요.
커스텀 보상 함수 사용
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의 적응형 엔트로피 제어