🏃

Speculative Decoding (투기적 디코딩)

소형 모델로 예측 초안을 만들고 대형 모델이 검증

LLM의 토큰 생성은 자기회귀(autoregressive) 방식이라 한 번에 하나의 토큰만 생성합니다. GPU 연산 능력이 남아도 메모리 대역폭에 병목이 걸려 속도가 제한됩니다. Speculative Decoding은 이 문제를 해결합니다. 빠른 Draft 모델(소형)이 γ개의 토큰을 한 번에 생성하고, Target 모델(대형)이 이 토큰들을 병렬로 한꺼번에 검증합니다. 맞으면 채택, 틀리면 Target 모델이 수정합니다. Target 모델의 출력 품질은 유지하면서(수학적으로 동일한 분포), 속도만 향상됩니다. Medusa, EAGLE 등의 변형도 있습니다.

핵심 개념

1

Draft Model(소형, 빠름)이 γ개의 후보 토큰을 자기회귀적으로 생성

2

Target Model(대형, 느림)이 원본 프롬프트 + Draft 토큰들을 한 번의 forward pass로 검증

3

각 Draft 토큰을 앞에서부터 검증 — Target의 확률 분포와 비교

4

Draft 토큰이 Target 분포와 일치하면 채택 (accept)

5

불일치하는 첫 토큰부터 Target 모델이 재생성 (reject + resample)

6

평균적으로 한 번의 Target forward pass에서 여러 토큰이 확정 → 속도 2~3× 향상

장점

  • 출력 품질 동일 (수학적으로 동일한 분포 보장)
  • 2~3배 속도 향상
  • 기존 모델 수정 불필요
  • 메모리 대역폭 병목 해결

단점

  • Draft Model 선택이 성능에 영향 (너무 다르면 reject율 높음)
  • Draft Model 추가 메모리 필요
  • 구현 복잡도 (검증/재샘플링 로직)
  • 배치 처리에서 효과 감소

사용 사례

Google DeepMind (원논문) Apple MLX Framework vLLM / TGI 서빙 엔진 Medusa — 단일 모델 내 여러 헤드로 병렬 예측 EAGLE — 자기 자신의 hidden state로 Draft