코드 생성 성능을 향상시키는 놀라울 만큼 단순한 자기 증류 기법

1 week ago 8
  • Simple Self-Distillation(SSD) 은 대형 언어 모델이 교사 모델이나 강화학습 없이 스스로 생성한 코드를 다시 학습해 성능을 높이는 방법
  • Qwen3-30B-Instruct 모델의 LiveCodeBench v6 pass@1 점수를 42.4%에서 55.3%로 향상시키며, 특히 어려운 문제 구간에서 +15.3pp 개선
  • SSD는 코드 생성 중 정확도와 탐색 간 충돌을 완화하며, 문맥에 따라 꼬리 확률을 억제하고 유용한 다양성을 유지
  • 단순한 온도 조정이나 디코딩 정책 변경만으로는 동일한 효과를 재현할 수 없으며, SSD는 모델 내부 분포 자체를 재형성
  • 외부 데이터나 검증 없이 적용 가능한 간단한 후처리 학습 절차로, LLM 코드 생성 품질 향상에 실질적 대안을 제시함

단순 자기 증류(Simple Self-Distillation, SSD)

  • SSD(Simple Self-Distillation) 은 대형 언어 모델(LLM)이 교사 모델, 검증기, 강화학습 없이 스스로 생성한 코드 출력을 이용해 성능을 향상시키는 방법
    • 모델이 특정 온도(temperature)절단(truncation) 설정으로 샘플을 생성하고, 그 결과를 표준 지도 미세조정(SFT) 으로 다시 학습
    • 외부 라벨 데이터, 보상 모델, 실행 환경이 전혀 필요하지 않음
  • Qwen3-30B-Instruct 모델의 LiveCodeBench v6 pass@1 점수를 42.4% → 55.3% 로 향상 (+12.9pp, +30% 상대 향상)
    • 특히 어려운 문제(hard split) 에서 가장 큰 개선(+15.3pp)
    • Qwen 및 Llama 계열의 4B, 8B, 30B 모델 전반에서 일반화
  • SSD는 정확도-탐색(precision-exploration) 충돌을 완화하는 방식으로 작동
    • 코드 생성 중 일부 토큰은 높은 정확도를 요구(“lock”), 일부는 다양한 탐색을 요구(“fork”)
    • SSD는 문맥에 따라 불필요한 꼬리 분포를 억제하면서 유용한 다양성은 유지

1. 연구 배경

  • 고품질 지도 신호(예: 사람 작성 코드)가 부족해 LLM 코드 생성 성능 향상에 제약 발생
  • 기존 접근법의 한계
    • 교사 모델 기반 증류: 교사 모델의 성능 한계 상속
    • 강화학습(RL): 보상 모델 및 실행 기반 검증 필요, 불안정함
    • 비지도 대안(예: 다수결, 엔트로피 최소화): 장기 학습 시 붕괴 위험
  • SSD는 외부 데이터나 검증 없이 모델 자체 출력만으로 개선 가능함을 입증

2. SSD 방법론

  • 데이터 합성

    • 주어진 문제 프롬프트 집합 X에 대해, 모델 pθ에서 온도 Ttrain절단 설정 ρtrain(top-k, top-p) 으로 샘플링
    • 생성된 출력(y)은 검증 없이 그대로 학습 데이터(DSSD) 로 사용
    • 대부분의 경우 N=1 (문제당 한 샘플) 로 충분
  • 학습

    • 표준 교차 엔트로피 손실로 지도 미세조정 수행
    • L(θ) = −E(x,y)∼DSSD Σ log pθ(yt | x, y<t)
  • 추론

    • 학습된 모델 pθ*을 평가 온도 Teval과 절단 설정 ρeval로 디코딩

3. 실험

  • 모델 구성

    • Llama-3.1-8B-Instruct, Qwen3-4B/30B (Instruct, Thinking) 등 5개 모델
    • 2개 계열(Llama, Qwen), 3개 규모(4B, 8B, 30B), 2가지 추론 스타일(Instruct, Thinking)
  • 데이터

    • rSTARcoder 데이터셋의 경쟁 프로그래밍 문제 약 10K개 사용
    • 정답 검증 없이 단순 문법 필터링만 적용
  • 학습 설정

    • Megatron-LM 기반, 8×B200 GPU 사용
    • AdamW 옵티마이저, 최대 시퀀스 길이 65,536
    • Instruct 모델 2,500 step, Thinking 모델 300 step
  • 평가

    • LiveCodeBench v6 (LCB v6) 를 주요 벤치마크로 사용
    • pass@1, pass@5, 난이도별(Easy/Medium/Hard) 세분화 평가

4. 주요 결과

  • 전반적 성능 향상

    • Qwen3-30B-Instruct: 42.4% → 55.3% pass@1 (+12.9pp)
    • Qwen3-4B-Instruct: +7.5pp, Llama-8B: +3.5pp
    • Thinking 모델도 +2~3pp 향상
  • 난이도별 개선

    • Qwen3-30B-Instruct: Easy +6.5pp / Medium +14.2pp / Hard +15.3pp
    • Thinking 모델에서도 Hard 구간에서 가장 큰 향상
  • 다양성 유지

    • pass@5 향상이 pass@1보다 큼 → 생성 다양성 유지 및 향상
    • 예: Qwen3-30B-Instruct pass@5 +18.1pp (Hard +23.0pp)
  • 도메인 일반화

    • 경쟁 프로그래밍 외 수학·일반 코드·이해 과제에서도 성능 유지

5. 디코딩 정책 비교

  • 온도 조정만으로는 SSD 효과 재현 불가

    • Base 모델의 온도 스윕 결과: pass@1 변화폭 1.5–3.0pp 수준
    • SSD는 동일 조건에서 +11.8pp(Qwen3-30B-Instruct) 향상
    • 특히 Hard 문제와 pass@5에서 격차가 가장 큼
    • SSD는 모델 내부 분포 자체를 변화시켜 단순 디코딩 조정으로는 대체 불가

6. 하이퍼파라미터 상호작용

  • 훈련 온도(Ttrain)평가 온도(Teval) 의 곱 Teff = Ttrain × Teval이 성능을 결정
    • Teff ≈ 1.2 부근에서 최고 성능
    • Ttrain이 높을수록 Teval 변화에 민감해짐
  • 절단(truncation) 을 추가하면 성능 상한 상승
    • 최적 설정: Ttrain=2.0, Teval=1.1, top-k=10 → pass@1 49.7% (+7.3pp)
    • 절단은 저확률 꼬리 제거로 추가 개선 제공

7. SSD 작동 원리

  • 정확도-탐색(Precision–Exploration) 충돌

    • Lock: 문법적으로 정답이 거의 고정된 위치 → 낮은 온도 필요
    • Fork: 여러 해법이 가능한 위치 → 높은 온도 필요
    • 단일 온도로 두 요구를 모두 만족시키기 어려움
  • SSD의 역할

    • Lock에서는 꼬리 확률을 억제해 정밀도 강화
    • Fork에서는 상위 후보 간 확률을 평탄화해 탐색 다양성 유지
    • 결과적으로 문맥 의존적 분포 재형성 수행

8. 실험적 검증

  • 모의 환경 실험

    • Fork 1회 + Lock 3회 구조의 단순 환경에서 SSD 적용
    • SSD 후 성공 확률 상승, 최적 온도 범위 확장
    • 학습과 디코딩이 서로 보완적임을 확인
  • 실제 모델 분석

    • SSD 후 상위 토큰 누적 확률 증가, 꼬리 확률 감소
    • 높은 Teval에서도 유효한 상위 후보 수 증가, 엔트로피 상승
    • 즉, SSD는 꼬리 제거와 상위 분포 확장을 동시에 달성

9. 이론적 분석

  • SSD 학습 손실은 세 가지 항으로 분해됨
    1. Support Compression: 꼬리 확률 제거
    2. Within-Support Reshaping: 상위 분포 재형성
    3. Alignment to Base Model: 원 모델과의 정렬 유지
  • Lock에서는 첫 번째 항이 지배적 → 꼬리 제거
  • Fork에서는 두 번째 항이 작동 → 상위 분포 평탄화
  • 전체 엔트로피는 감소하지만, 유용한 탐색 엔트로피는 유지
  • 단순 디코딩 조정은 이러한 문맥별 재형성을 수행할 수 없음

10. 비정상 데이터 실험

  • Ttrain=2.0, 절단 없음으로 생성된 데이터의 62%가 의미 없는 잡음(gibberish)
  • 그럼에도 불구하고 SSD 적용 후
    • pass@1: 42.4% → 48.1% (+5.7pp)
    • pass@5: 53.5% → 64.0% (+10.5pp)
    • Hard 문제에서 +7.3pp / +13.8pp 향상
  • 이는 SSD가 정답 품질이 아닌 분포 구조 학습을 통해 개선을 이끌 수 있음을 보여줌

결론

  • Simple Self-Distillation(SSD)
    • 외부 교사나 검증 없이 모델 자체 출력만으로 코드 생성 성능을 향상
    • 정확도-탐색 충돌을 완화하며, 분포 재형성을 통해 일반화된 개선 달성
  • SSD는 후처리(post-training) 단계에서 적용 가능한 간단하면서도 강력한 방법으로, LLM 코드 생성 품질 향상에 실질적 대안을 제시함
Read Entire Article