PPO와 DPO를 넘어: GRPO, DAPO, GSPO – 차세대 LLM 정렬(Alignment) 기술 스택 심층 분석

The LLM Alignment Frontier A Deep Dive into PPO, DPO, GRPO, DAPO, and GSPO

2023-2024년 RLHF(Reinforcement Learning from Human Feedback)의 지형은 크게 두 가지로 나뉘었습니다:

  1. PPO (Proximal Policy Optimization): ‘정석’이지만 비용이 매우 많이 듭니다. 학습 안정성을 위해 Policy 모델과 동일한 크기의 Critic 모델(Value Network)을 로드해야 하며, 이는 메모리 점유율을 즉시 두 배로 높입니다(2x Parameters + Optimizer States). 70B 이상의 모델을 학습하려면 고가의 H100 클러스터가 필수적입니다. 또한 kl_coeff, clip_range와 같은 하이퍼파라미터 민감도가 높아 엔지니어의 피로도가 극심합니다.
  2. DPO (Direct Preference Optimization): ‘효율적’인 대안입니다. RL 문제를 이진 분류(Preference Learning) 문제로 변환하여 Critic 모델을 제거했습니다. 그러나 2025년에 들어서며 DPO가 추론 집약적 작업(Reasoning/CoT)에서 명확한 한계를 보인다는 것이 증명되었습니다. DPO는 진정한 ‘탐색과 활용(Exploration & Exploitation)’보다는 ‘스타일 정렬’에 가깝습니다. 즉, DeepSeek-R1과 같은 고도의 추론 능력을 이끌어내기에는 부족합니다.

현재의 과제: RL의 강력한 ‘탐색’ 능력은 유지하면서(DeepSeek-R1 수준의 추론), PPO와 같은 막대한 메모리 비용이 들지 않는 알고리즘이 필요합니다.

해답은 Group-Based Policy Optimization 제품군: GRPO, DAPO, 그리고 GSPO입니다.


🏗️ 아키텍처 진화: Token 단위에서 Group 단위로

1. GRPO (Group Relative Policy Optimization)

출처: DeepSeek-Math / DeepSeek-R1 Paper

GRPO는 이 패러다임 전환의 초석입니다. 핵심 혁신은 Critic 모델을 완전히 제거한 것입니다.

작동 원리:
PPO처럼 Value Network를 통해 Baseline $V(s)$를 추정하는 대신, GRPO는 ‘그룹 통계’를 Baseline으로 사용합니다.
동일한 Prompt 에 대해 모델이 출력 그룹 (예: )을 생성합니다. 각 출력의 Advantage 함수는 그룹 내 정규화를 통해 계산됩니다.

핵심 장점:

  • 메모리 절약: Policy 모델과 Reference 모델(KL 발산 계산용)만 로드하면 됩니다.
  • 추론 최적화: 여러 경로를 샘플링함으로써 모델은 어떤 추론 단계가 더 나은지 스스로 학습합니다.

2. DAPO (Decoupled Clip & Dynamic Sampling)

출처: DAPO Paper (ArXiv 2025)

GRPO가 메모리 문제를 해결했지만, 긴 사고 사슬(Long CoT) 학습 시 엔트로피 붕괴(Entropy Collapse) 현상이 발생할 수 있습니다. DAPO는 대규모 추론 학습을 위한 최적화 버전입니다.

핵심 개선 사항:

  • Clip-Higher: 기존 PPO/GRPO는 업데이트 폭을 엄격히 제한(Clip)하지만, DAPO는 상한선을 완화하여 모델이 국소 최적해에 빠지지 않고 다양성을 유지하도록 합니다.
  • Dynamic Sampling: 보상이 모두 같거나(모두 정답 혹은 오답) 변별력이 없는 샘플 그룹을 동적으로 필터링하여 학습 효율을 극대화합니다.

3. GSPO (Group Sequence Policy Optimization)

출처: GSPO Paper (ArXiv 2025)

Qwen3-MoE나 DeepSeek-V3와 같은 MoE (Mixture of Experts) 아키텍처에서는 토큰 단위의 GRPO 업데이트가 라우팅의 희소성으로 인해 불안정할 수 있습니다.

핵심 로직:
GSPO는 최적화 단위를 토큰 레벨에서 시퀀스 레벨로 격상합니다.

이 방식은 초거대 모델 학습 시, 특히 MoE 모델의 Router가 붕괴되는 것을 방지하는 데 탁월한 성능을 보입니다.


📊 알고리즘 결정 매트릭스

특성 PPO DPO GRPO DAPO GSPO
Critic 모델 ✅ 필요 (고비용) ❌ 불필요 ❌ 불필요 ❌ 불필요 ❌ 불필요
주요 시나리오 일반 RLHF 대화/스타일 정렬 수학/코드/추론 장문 추론 (CoT) MoE/초거대 모델
메모리 점유 높음 낮음 낮음 낮음 낮음
구현 복잡도 매우 높음 낮음 중간 높음 높음
안정성 낮음 (민감) 높음 중간 높음 매우 높음

💻 구현: TRL을 사용한 GRPO 적용

2025년 말 현재, Hugging Face의 trl 라이브러리는 GRPO를 기본적으로 지원합니다.

핵심 코드 구현 (GRPOTrainer)

from trl import GRPOTrainer, GRPOConfig

# 1. 보상 함수 정의 (Reward Functions)
def correctness_reward_func(prompts, completions, answer, **kwargs):
    rewards = []
    for completion, gold_answer in zip(completions, answer):
        if str(gold_answer) in completion:
            rewards.append(1.0)
        else:
            rewards.append(0.0)
    return rewards

# 2. GRPO 설정
training_args = GRPOConfig(
    output_dir="./grpo_model",
    per_device_train_batch_size=4,
    num_generations=8,              # G: 그룹 사이즈
    max_completion_length=1024,
    beta=0.04,                      # KL 페널티 계수
    fp16=True,
)

# 3. 트레이너 초기화 및 실행
trainer = GRPOTrainer(
    model=model_id,
    args=training_args,
    train_dataset=dataset,
    reward_funcs=[correctness_reward_func],
)

trainer.train()

🛠️ 실행 체크리스트

  1. 데이터 정제 (필수): GRPO는 탐색 중 우연히 정답을 맞히는 것에 의존합니다. 베이스 모델의 정답률이 0%라면 학습이 시작되지 않습니다. 반드시 고품질 CoT 데이터로 SFT를 선행하십시오.
  2. 보상 엔지니어링: 단순히 맞고 틀림(Outcome Reward)뿐만 아니라, 사고 과정의 형식이 맞는지(Process Reward)를 함께 설계하십시오.
  3. Group Size (): 메모리가 허용하는 한 를 크게 잡으십시오. 권장 범위는 8~64입니다.

🔚 결론

추론(Reasoning)과 코드 생성 영역에서 GRPO 및 그 변체(DAPO/GSPO)는 이미 PPO를 대체했습니다. 적은 메모리로 더 강력한 탐색 성능을 제공하는 이 알고리즘들은 현재 LLM 엔지니어링의 표준입니다.