Speculative Decoding이란?

Speculative Decoding은 LLM 추론(inference)을 가속화하기 위한 기법으로, 작은 모델이 여러 토큰을 먼저 예측하고 큰 모델이 이를 한 번에 검증(verification)하는 방식이다.

핵심 아이디어는 다음과 같다.

“작은 모델이 초안을 쓰고(draft), 큰 모델이 맞는지 확인한다(verify).”

이 과정을 통해 큰 모델이 토큰을 하나씩 생성하는 autoregressive decoding의 병목을 줄일 수 있다.


1. 기존 Autoregressive Decoding의 문제

일반적인 LLM 생성은 다음과 같다.

입력:

The capital of France is

생성 과정:

Step 1: Paris
Step 2: .
Step 3: It
Step 4: is
...

매 토큰마다:

p(xt|x<t)p(x_t|x_{<t})를 계산해야 한다.

70B 모델이라면

1 token 생성
→ 전체 Transformer Forward
→ 다음 token 생성
→ 전체 Transformer Forward

를 반복한다.

즉, T tokensT \text{ tokens} 생성 시 T 번의 forwardT \text{ 번의 forward}가 필요하다.


2. 기본 아이디어

큰 모델:

M

작은 모델:

D (Draft Model)


작은 모델이 먼저

Paris . It is

4개 토큰을 예측한다.

큰 모델은

Paris . It is

전체를 한 번에 검증한다.

즉, Draft → Verify 구조이다.


3. Leviathan et al. (ICML 2023)

대표 논문:

Fast Inference from Transformers via Speculative Decoding

이 논문이 현재 대부분의 speculative decoding의 기반이다.


Step 1

작은 모델이 K개 생성

예:

Input:
The capital of France is

Draft:
Paris . It is

K=4


Step 2

큰 모델이 한 번에 평가

큰 모델:

M이 다음 확률 계산

M(xt+1|xt)M(x_{t+1}|x_{\le t})

M(xt+2|xt+1)M(x_{t+2}|x_{\le t+1})

M(xt+K|xt+K1)M(x_{t+K}|x_{\le t+K-1})

을 한 번의 forward에서 얻는다.


Step 3

Acceptance Test

draft token:

did_i 에 대해

Draft model:

q(di)q(d_i)

Large model:

p(di)p(d_i)


수락 확률

αi=min(1,p(di)q(di))\alpha_i=\min\left(1,\frac{p(d_i)}{q(d_i)}\right)


만약

uUniform(0,1)u \sim Uniform(0,1) 일 때

u<αiu < \alpha_i 이면 token accepted.


Draft token
↓
Large model도 비슷하게 생각
↓
Accept

Step 4

Reject 발생

예:

Draft:

Paris . It are

Large model:

Paris . It is

라고 판단.

그러면

Paris .

까지 accept.

이후는 Large model이 직접 생성.


4. 왜 빨라지는가?

예:

100 token 생성.

기존

100번 Large Model Forward

필요.


Speculative

K=5

accept rate=80% 라면,

5 token 단위 생성 가능.

실제로는

1002030100\rightarrow 20 \sim 30 회의 large-model 호출만 필요.


속도 향상:

대략 2×3×2\times \sim 3\times정도.

논문에서는 22.5×2\sim2.5\times수준 보고.


5. 왜 정확도가 유지되는가?

중요한 특징:

Speculative Decoding은 근사 방법이 아니다.

최종 샘플 분포가 p(x) (원래 Large Model)과 동일함이 증명된다.

  • Greedy decoding 결과 동일
  • Sampling 분포 동일

이다.


6. 알고리즘

while not EOS:

    1. Draft model
       generates K tokens

    2. Large model
       evaluates all K tokens

    3. Accept tokens
       sequentially

    4. First rejection:
         sample from corrected distribution

    5. Continue

7. 성능을 결정하는 요소

(1) Draft Model 품질

작은 모델이 큰 모델을 잘 따라야 한다.

예:

7B ← 70B는 잘 동작.

반면

125M ← 70B는 acceptance rate가 낮음.

(2) Acceptance Rate

r

높을수록 좋다.

보통 70%90%70\%-90\% 정도.


(3) Draft Length

K

너무 작으면 가속 효과 없음

너무 크면 reject 증가

보통 484 \sim 8 정도 사용.


8. 최근 발전

Medusa (2024)

Medusa

별도 Draft Model 없이

LLM 내부에 여러 speculative head 추가.

Head1 → t+1
Head2 → t+2
Head3 → t+3

예측.

추가 작은 모델이 필요 없다.


EAGLE

EAGLE

token이 아니라 hidden state를 예측.

Speculative decoding의 acceptance rate를 크게 향상.


ReDrafter

ReDrafter

Draft model이 여러 토큰을 recurrent하게 생성.

Google 계열 연구.


Lookahead Decoding

트리 형태로 여러 후보 생성.

      A
    / | \
   B  C  D

Large model이 동시에 검증.


9. LLM 연구 관점에서 중요성

현재 추론 가속화 분야에서 가장 중요한 축 중 하나이다.

대표 계열:

  1. Quantization
  2. KV Cache Optimization
  3. FlashAttention
  4. Speculative Decoding
  5. Early Exit

그중 speculative decoding은

  • 모델 품질 유지
  • 학습 없이 적용 가능
  • 2~3배 속도 향상

이라는 장점 때문에 실제 서비스 LLM에서 널리 사용된다.


연구자 관점의 핵심 정리

Speculative Decoding은 다음 식의 acceptance-rejection sampling을 이용해

αi=min(1,p(di)q(di))\alpha_i=\min\left(1,\frac{p(d_i)}{q(d_i)}\right)

작은 모델 q가 생성한 여러 토큰을 큰 모델 p가 한 번에 검증함으로써,

O(T)번 필요하던 large-model decoding을

O(T/K)수준으로 감소시키는 추론 가속화 기법이다. 이론적으로 최종 생성 분포는 원래 large model과 동일하며, 최근에는 Medusa, EAGLE, ReDrafter 등 draft model을 개선하거나 제거하는 방향으로 발전하고 있다.

10. 최근 발전 — 자세한 설명

Speculative decoding의 최근 발전은 크게 **“좋은 draft를 어떻게 싸게 만들 것인가?”**로 요약할 수 있다.


10.1 Medusa: 별도 draft model 제거

기존 speculative decoding은 보통 작은 draft model q가 필요하다.
Medusa는 이를 없애고, target LLM 내부에 여러 개의 auxiliary decoding head를 붙인다.

구조:

Backbone LLM hidden state
        ↓
Head 1 → 다음 토큰 예측
Head 2 → 2번째 미래 토큰 예측
Head 3 → 3번째 미래 토큰 예측
...

즉, 별도 작은 모델 없이 같은 LLM의 hidden state로 여러 future token 후보를 만든다.

Medusa의 핵심은 세 가지이다.

  1. Multiple decoding heads
    • 각 head가 t+1, t+2, …, t+k 위치의 토큰을 예측한다.
  2. Tree-based attention
    • 여러 후보 continuation을 tree 형태로 만들고, target model이 한 번에 검증한다.
  3. Medusa-1 / Medusa-2
    • Medusa-1: backbone은 freeze하고 head만 학습.
    • Medusa-2: backbone까지 함께 fine-tuning하여 더 높은 speedup을 얻음.

Medusa 논문은 Medusa-1에서 약 2.2×, Medusa-2에서 2.3–3.6× 수준의 speedup을 보고한다.  


10.2 Hydra: Medusa head의 의존성 문제 개선

Medusa의 약점은 각 future-token head가 대체로 독립적으로 예측한다는 점이다.

예를 들어:

Head 1: "New"
Head 2: "York"
Head 3: "is"

라고 예측해야 할 때, Head 2는 Head 1이 실제로 “New”를 냈다는 정보를 충분히 조건으로 쓰지 못한다.

Hydra는 이를 개선하여 sequentially-dependent draft heads를 제안한다.

즉,

Head 1 predicts token 1
Head 2 predicts token 2 conditioned on token 1
Head 3 predicts token 3 conditioned on token 1, token 2

에 가깝게 만든다.

결과적으로 Medusa보다 draft accuracy와 acceptance rate가 올라간다. Hydra++는 Medusa 대비 최대 1.31×, autoregressive decoding 대비 최대 2.70× throughput 향상을 보고한다.  


10.3 EAGLE: token이 아니라 feature를 예측

EAGLE은 speculative decoding에서 매우 중요한 계열이다.

기존 방식:

Draft model → token 예측
Target model → token 검증

EAGLE 방식:

Draft module → target LLM의 intermediate feature 예측
Feature → LM head → token 후보 생성
Target model → 검증

핵심 아이디어는 토큰 분포를 직접 맞히는 것보다, target model의 feature trajectory를 예측하는 것이 더 쉽다는 것이다.

특히 EAGLE은 target LLM의 second-to-top-layer feature를 extrapolate한다. 그리고 한 step 앞선 token sequence를 같이 사용해 feature uncertainty를 줄인다.  

장점:

  • 별도 full draft LM보다 가볍다.
  • target model과 feature space를 공유하므로 acceptance rate가 높다.
  • target distribution 보존을 목표로 설계되어 speculative sampling과 잘 맞는다.

EAGLE 이후에는 EAGLE-2, EAGLE-3로 발전했다. EAGLE-3는 feature prediction 제약을 완화하고, multi-layer feature fusion과 direct token prediction 쪽으로 이동한 변형이다.  


10.4 ReDrafter: RNN 기반 draft model

ReDrafter는 Apple 계열 연구로, target LLM의 hidden state를 입력으로 받아 RNN drafter가 여러 토큰을 생성한다.

구조:

Target LLM hidden state
        ↓
RNN drafter
        ↓
draft token sequence
        ↓
target LLM verification

기존 작은 LM draft와 다른 점은, 독립된 작은 LM이 아니라 target LLM의 hidden state에 조건화된 recurrent draft module을 쓴다는 것이다.

ReDrafter의 핵심 요소:

  1. RNN drafter
    • target hidden state를 받아 continuation을 recurrent하게 생성.
  2. Beam search 기반 후보 생성
    • 여러 draft 후보를 만든다.
  3. Dynamic tree attention
    • beam 후보들의 중복 prefix를 제거하고 효율적으로 검증.
  4. Knowledge distillation
    • target LLM으로부터 drafter를 학습.

논문은 Vicuna + MT-Bench에서 H100 PyTorch 기준 최대 2.8×, Apple Silicon Metal GPU 환경에서 최대 2.3× speedup을 보고한다.  


10.5 Lookahead Decoding: draft model 없이 병렬 n-gram 생성

Lookahead decoding은 조금 다르다.
별도 draft model도 없고, auxiliary head도 없다.

핵심은 target LLM 자체를 이용해 여러 n-gram 후보를 병렬적으로 만들고 검증하는 것이다.

개념적으로는 다음과 같다.

Lookahead branch:
  여러 n-gram 후보를 병렬 생성

Verification branch:
  그 n-gram들이 현재 prefix에 이어질 수 있는지 검증

Lookahead decoding은 Jacobi iteration 관점에서 autoregressive dependency를 완화한다. 논문은 draft model이나 datastore 없이 동작하는 exact parallel decoding algorithm이라고 설명하며, MT-Bench에서 최대 1.8×, multi-GPU code completion에서 최대 speedup을 보고한다.  

장점:

  • 별도 draft model 불필요.
  • 추가 학습 불필요.
  • target model 분포 보존.

단점:

  • 계산량이 늘어날 수 있다.
  • speedup은 workload, GPU 병렬성, sequence 특성에 크게 의존한다.

10.6 Self-speculative decoding / early-exit 계열

또 다른 방향은 target model의 얕은 layer를 draft model처럼 사용하는 것이다.

예를 들어 32-layer LLM이 있다면:

Layer 1~16 → draft prediction
Layer 1~32 → verification

즉, 같은 모델 안에서 shallow layer가 먼저 후보를 만들고, full layer가 검증한다.

장점:

  • 별도 draft model이 필요 없다.
  • 모델 하나만 배포하면 된다.
  • memory footprint가 작다.

단점:

  • shallow layer의 예측 품질이 충분히 좋아야 한다.
  • layer skipping 구조나 early-exit head가 필요할 수 있다.
  • target model architecture에 따라 구현 난이도가 다르다.

8.7 Serving system 적용: vLLM, TensorRT-LLM, SGLang

최근 speculative decoding은 논문 수준을 넘어 실제 inference serving stack에 들어가고 있다.

예를 들어 vLLM은 speculative decoding 방식으로 draft model, EAGLE, MTP, n-gram, suffix decoding, MLP speculator 등을 지원한다.  

TensorRT-LLM도 speculative sampling 문서에서 작은 draft model 방식, Medusa, ReDrafter 등 여러 방식을 다룬다.  

실제 시스템에서는 단순히 알고리즘만 좋아서는 안 되고 다음 요소가 중요하다.

요소의미
Acceptance ratedraft token이 target에 의해 수락되는 비율
Draft latencydraft 생성 자체의 비용
Verification batchingtarget model이 후보들을 얼마나 효율적으로 검증하는지
KV cache reuseaccepted/rejected token 처리 시 cache 낭비를 줄이는지
Continuous batching compatibility여러 사용자 요청을 동시에 처리할 때 효율이 유지되는지
Sampling compatibilitygreedy뿐 아니라 temperature/top-p에서도 잘 동작하는지

방법별 비교

방법Draft 생성 방식추가 모델 필요추가 학습장점약점
Classic speculative decoding작은 LM필요보통 필요이론적으로 깔끔함좋은 draft model 필요
Medusamulti-head불필요필요배포 간단, 빠름head 학습 필요
Hydradependent multi-head불필요필요Medusa보다 높은 draft 품질구조 복잡도 증가
EAGLEfeature-level drafter가벼운 module필요높은 acceptance ratefeature predictor 학습 필요
ReDrafterRNN drafter가벼운 module필요strong drafter, tree 검증구현 복잡
Lookaheadtarget LLM 자체불필요불필요training-free, draft-free병렬 계산 여유 필요
Self-speculativeshallow layers불필요경우에 따라 필요단일 모델 배포layer별 예측 품질 의존

핵심 흐름 정리

Speculative decoding의 최근 발전은 다음 방향으로 이동하고 있다.

작은 draft LM 사용
        ↓
별도 draft model 제거
        ↓
LLM 내부 head 사용: Medusa, Hydra
        ↓
hidden feature 예측: EAGLE
        ↓
RNN/beam/tree 기반 강한 drafter: ReDrafter
        ↓
draft-free / self-speculative / serving-system 통합

연구적으로 가장 중요한 포인트는 acceptance rate와 draft cost의 trade-off이다.

Speedupaccepted tokens per verificationverification cost+draft cost\text{Speedup}\approx\frac{\text{accepted tokens per verification}}{\text{verification cost} + \text{draft cost}}

따라서 최근 방법들은 모두 다음 목표를 가진다.

draft는 싸게 만들고, target model이 받아들일 확률은 높인다.


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다