ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DAPO: An Open-Source LLM Reinforcement Learning System at Scale (25.03) 논문 리뷰
    AI/NLP 2025. 7. 19. 16:38
    728x90

     

    DAPO: An Open-Source LLM Reinforcement Learning System at Scale (25.03) 논문 리뷰 

     

     

     

    DAPO란?

    DAPO = Decoupled Clip and Dynamic sAmpling Policy Optimization

    ByteDance, Tsinghua University, The University of Hong Kong가 공동 개발한 오픈소스 강화학습 시스템

    배경과 문제점

    기존 상황의 문제:

    • OpenAI o1, DeepSeek R1 같은 최신 모델들이 강력한 성능을 보이지만 기술적 세부사항이 비공개
    • 연구 커뮤니티가 검증하고 발전시키기 어려운 상황
    • 기본 GRPO로는 AIME 2024에서 30점밖에 달성 못함 (목표 대비 크게 부족)

    GRPO의 4가지 핵심 문제점

    1. Entropy Collapse (엔트로피 붕괴)

    • 정책이 빠르게 결정론적이 되어 탐색 능력 상실
    • 고확률 토큰에만 수렴하여 다양한 추론 경로 발견 불가

    2. Gradient Starvation (기울기 고갈)

    • 모든 응답이 정답이거나 모든 응답이 오답인 경우
    • GRPO의 그룹 상대적 어드벤티지가 0이 되어 학습 신호 소실

    3. Length Bias (길이 편향)

    • 모든 응답을 길이 상관없이 동등하게 취급
    • 긴 추론 과정의 가치를 제대로 반영하지 못함

    4. Reward Noise (보상 노이즈)

    • 잘려진 응답에 대한 과도한 페널티
    • 유효하지만 긴 추론 과정까지 처벌하는 문제

    DAPO의 4가지 핵심 해결책

    1. Clip-Higher: 비대칭 클리핑

    기존 PPO/GRPO:

    # 대칭적 클리핑
    epsilon = 0.2
    clip_range = [1-0.2, 1+0.2] = [0.8, 1.2]

    DAPO의 개선:

    # 비대칭 클리핑
    epsilon_low = 0.2    # 하한
    epsilon_high = 0.28  # 상한 (더 크게!)
    clip_range = [0.8, 1.28]

    수식:

    L_CLIP-HIGHER(θ) = E_t[min(r_t(θ)Â_t, clip(r_t(θ), 1-ε_low, 1+ε_high)Â_t)]
     

    효과: 저확률 토큰이 고보상을 받을 때 확률을 더 적극적으로 증가시켜 탐색 촉진

    2. Dynamic Sampling: 동적 샘플링

    문제: 모든 응답이 동일한 보상을 받는 프롬프트

    # 이런 경우 어드벤티지가 모두 0이 됨
    all_rewards = [1, 1, 1, 1]  # 모두 정답
    # 또는
    all_rewards = [0, 0, 0, 0]  # 모두 오답

    해결:

    def filter_zero_gradient_prompts(batch):
        filtered = []
        for prompt, responses in batch:
            rewards = [compute_reward(r) for r in responses]
            if len(set(rewards)) > 1:  # 다양한 보상이 있는 경우만
                filtered.append((prompt, responses))
        return filtered

    효과: 일관된 기울기 흐름으로 학습 가속화

    3. Token-Level Loss: 토큰 단위 손실

    기존 방식:

    # 응답 단위 평균 후 집계
    sample_loss = mean(token_losses_per_response)
    total_loss = mean(sample_losses)

    DAPO 방식:

    # 토큰 단위로 직접 계산
    L_TOKEN = (1/∑T_i) * ∑∑L_i,t

    효과: 긴 추론 과정이 파라미터 업데이트에 더 큰 영향을 주어 추론 능력 향상

    4. Overlong Reward Shaping: 점진적 길이 페널티

    기존: 하드 컷오프

    if len(response) > max_length:
        reward = -1  # 무조건 패널티

    DAPO: 소프트 페널티

    if len(response) > threshold:
        penalty = soft_penalty_function(len(response) - threshold)
        reward = original_reward - penalty

    효과: 유효한 긴 추론 과정을 과도하게 처벌하지 않음

    실험 결과 및 성능

    메인 성과

    • AIME 2024: 50점 달성 (vs DeepSeek-R1-Zero-Qwen-32B 47점)
    • 효율성: 50% 적은 훈련 스텝으로 더 좋은 성능
    • 오픈소스: 완전 재현 가능한 시스템 제공

    개별 기법별 기여도

    기본 GRPO 30% 기준선
    + Overlong Filtering 36% +6점
    + Clip-Higher 38% +2점
    + Soft Overlong Punishment 41% +3점
    + Token-level Loss 42% +1점
    + Dynamic Sampling (완전한 DAPO) 50% +8점

    핵심 통찰: Dynamic Sampling이 가장 큰 개선 효과 (+8점)

    새로운 발견: 반성적 추론 능력 출현

    훈련 초기:

    "답은 A다."

     

    훈련 후:

    "답은 A인 것 같은데... 잠깐, 내 추론을 다시 검토해보자. 
    계산을 다시 해보니 실제로는 B가 맞네."

    의미: RL 훈련이 단순히 기존 행동을 최적화하는 것이 아니라 완전히 새로운 메타인지 능력을 유도할 수 있음

    훈련 모니터링 지표

    핵심 메트릭:

    1. 평균 응답 길이: 추론 능력과 강한 상관관계
    2. 보상 점수: 직접적인 성능 지표
    3. 생성 엔트로피: 탐색-활용 균형 측정
    4. 평균 토큰 확률: 모델 확신도 파악

    안정성 신호:

    • 엔트로피가 급격히 떨어지면 조기 수렴 위험
    • 응답 길이가 정체되면 훈련 문제 조기 경고
    • 보상 점수와 길이의 균형이 건강한 학습 지표

    데이터셋과 인프라

    DAPO-Math-17K:

    • 17,000개 수학 문제 (웹 소스 + 경시대회)
    • 복잡한 답 형식을 정수로 변환하여 보상 계산 단순화
    • 예: "a + b/c" → "a + b + c"로 문제 재구성

    훈련 설정:

    • 프레임워크: 오픈소스 verl
    • 옵티마이저: AdamW with 상수 학습률
    • 배치: 512 프롬프트, 프롬프트당 16 응답

    중요성과 영향

    기술적 기여:

    • 산업 수준 성능의 완전 오픈소스 시스템
    • 복잡한 추론 작업에 광범위하게 적용 가능한 4가지 핵심 기법
    • RL이 메타인지 능력을 유도할 수 있다는 증거

     

    Recap. 핵심 정리 

     

    • Entropy Collapse
    • exploration & exploition
    728x90
Designed by Tistory.