본문 바로가기

12. speculative decoding과 MTP

핵심 질문
  • "토큰을 여러 개 미리 내고 검증한다"는 것은 어떻게 속도를 얻으면서 결과를 바꾸지 않는가?
  • speculative decoding(런타임 기법)과 MTP(학습 목표)는 왜 다른 층위의 개념인가?

목표
  • draft-verify-accept 흐름을 정의하고, 정확성이 어떻게 보존되는지 이해한다.
  • 런타임 검증(speculative decoding)학습 시 목표(MTP)를 분리한다.

여정에서의 위치

02장에서 decode는 "한 스텝에 한 토큰", 순차적이라 했습니다. 03장에서 그 순차성 탓에 decode가 memory-bound로 기운다고 봤습니다. speculative decoding은 이 순차성의 벽을 추측으로 우회하려는 시도입니다: 값싼 방법으로 여러 토큰을 미리 추측하고, 비싼 본모델로 한 번에 검증합니다.

speculative decoding — draft, verify, accept

핵심 흐름은 세 단계입니다.

  1. draft(초안): 값싸고 빠른 draft(초안 생성기)가 앞으로 올 토큰 여러 개를 추측합니다.
  2. verify(검증): 크고 정확한 target(본모델)이 그 추측들을 한 번의 forward pass로 병렬 검증합니다.
  3. accept(수용): 본모델의 예측과 맞는 앞부분(가장 긴 일치 접두)은 수용하고, 처음 틀린 자리에서 본모델이 올바른 토큰을 내며 그 지점부터 다시 시작합니다.
flowchart LR
    D[draft: 토큰 여러 개 추측]:::comp --> V[target: 병렬 검증<br/>1 forward pass]:::comp
    V --> A{일치하는 접두?}:::ctrl
    A -->|맞는 만큼 수용| ACC[여러 토큰 한 번에 확정]:::result
    A -->|첫 불일치| FIX[본모델이 올바른 토큰 생성]:::result
    ACC --> D
    FIX --> D

    classDef comp fill:#d0ebff,stroke:#1971c2,color:#000;
    classDef ctrl fill:#c3fae8,stroke:#0ca678,color:#000;
    classDef result fill:#d3f9d8,stroke:#2f9e44,color:#000;
📌 핵심
왜 정확성이 안 깨지나
최종 출력을 결정하는 것은 언제나 본모델(target)입니다. draft는 "후보를 빨리 던지는" 역할일 뿐, 수용 기준(예: rejection sampling, 또는 greedy에서 동일 여부)이 본모델의 분포와 일치하는 토큰만 통과시킵니다. 그래서 speculative decoding은 속도를 얻되 출력 분포를 (이론상) 바꾸지 않는 것을 목표로 합니다. draft는 무엇이 나올지가 아니라 얼마나 빨리 확정되는지에만 영향을 줍니다.

이득은 무엇에 달려 있나: 수용률(acceptance rate)

speculative decoding의 이득은 draft의 추측이 얼마나 자주 수용되는가(acceptance rate)에 달려 있습니다.

  • 수용률이 높으면: 한 번의 본모델 forward로 여러 토큰이 확정 → 지연↓.
  • 수용률이 낮으면: 추측이 자꾸 버려져, draft 비용만 더한 채 이득이 사라질 수 있음.
⚖️ 절충(tradeoff)
  • 얻는 것: 순차 decode의 지연↓ 가능(memory 병목 우회).
  • 잃는 것/비용: draft를 돌리는 추가 연산, 수용률이 낮으면 순손해, 시스템 복잡도↑. 또한 draft와 target의 분포가 어긋나면 수용률이 떨어집니다.
  • 즉 speculative decoding은 "추측이 잘 맞는 워크로드"에서만 확실한 이득입니다.
🔬 증거 읽기 (주장 유형·조건)
"speculative decoding으로 2~3배 빨라진다"류의 수치는 measured이며, 모델·draft 구성·과제·수용률·하드웨어에 크게 의존합니다. 예를 들어 한 자료는 MoE(전문가 혼합) 모델에서는 검증 시 추가 전문가 가중치 로드로 이득이 상쇄될 수 있고, 배치 1에서는 특히 이득이 안 날 수 있다고 지적합니다(확인일 2026-07-20). 조건 없는 배속 주장은 신뢰도를 낮춰 읽으세요.

MTP는 다른 층위다: 런타임 검증 vs 학습 목표

이 장의 핵심 규율입니다. speculative decodingMTP(Multi-Token Prediction)는 자주 함께 등장하지만 다른 층위의 개념입니다.

  • speculative decoding = 런타임(추론 시) 기법: "여러 토큰을 미리 내고 본모델로 검증한다"는 실행 방식. draft가 별도 모델일 수도, 모델 내부 head일 수도 있습니다.
  • MTP = 학습 시 목표(training objective): 표준적인 "다음 토큰 하나 예측"에 더해, 여러 미래 토큰을 예측하도록 학습시키는 훈련 방법. 위치 t에서 t+1뿐 아니라 t+2, t+3…도 맞히도록 추가 head를 둡니다.

이 둘의 관계:

  • MTP로 학습된 모델은, 그 다중 예측 head를 런타임에 draft 경로로 재사용해 speculative decoding을 할 수 있습니다("native" speculative decoding). 즉 MTP는 speculative decoding을 가능하게 하는 재료가 될 수 있습니다.
  • 그러나 MTP로 학습했다고 반드시 추론에서 다중 토큰을 쓰는 것은 아닙니다. 자료에 따르면 가장 단순한 형태에선 MTP 모델도 추론 시 여전히 한 번에 한 토큰을 생성할 수 있습니다 — MTP는 학습 목표이지 추론 강제가 아닙니다(확인일 2026-07-20).
  • 반대로 speculative decoding은 MTP 없이도(별도 draft 모델·EAGLE 등으로) 가능합니다.
flowchart TB
    subgraph 학습층위
        MTP[MTP: 여러 미래 토큰 예측 목표로 학습]:::mem
    end
    subgraph 런타임층위
        SD[speculative decoding: draft-verify-accept]:::comp
    end
    MTP -.head를 draft로 재사용 가능.-> SD
    EXT[별도 draft 모델 / EAGLE 등]:::comp -.도 가능.-> SD
    MTP -.단순 형태: 여전히 1토큰씩 추론 가능.-> AR[표준 autoregressive decode]:::comp

    classDef mem fill:#e5dbff,stroke:#7048e8,color:#000;
    classDef comp fill:#d0ebff,stroke:#1971c2,color:#000;
    classDef comp fill:#d0ebff,stroke:#1971c2,color:#000;
⚠️ 흔한 실수
흔한 오해
  • "MTP = speculative decoding" — 아닙니다. MTP는 학습 목표, speculative decoding은 런타임 실행 방식입니다. 겹쳐 쓰일 수 있을 뿐 같지 않습니다.
  • "MTP 모델은 항상 여러 토큰을 한 번에 낸다" — 아닙니다. 단순 형태에선 추론 시 한 토큰씩도 가능합니다.
  • "speculative decoding은 출력을 바꾼다" — 목표상 아닙니다. 최종 확정은 본모델이 하며, 수용 기준이 분포를 보존하도록 설계됩니다.
🔬 증거 읽기 — 버전 의존 주의
"이 모델은 MTP를 지원한다/native speculative decoding이 된다"는 서술은 모델·프레임워크 버전에 의존합니다. 예컨대 특정 엔진이 어떤 모델의 MTP를 언제부터 지원하는지는 버전마다 다르며, 오래된 버전은 같은 체크포인트를 일반 draft 모델로 잘못 다뤄 실패할 수 있다는 보고도 있습니다(확인일 2026-07-20). 지원 여부·기본값은 확인 못 하면 unknown으로 두세요.

여정에 위치시키기

speculative decoding은 03장에서 본 decode의 순차성·memory 병목을 추측으로 우회하려는 4부의 두 번째 카드입니다. 11장의 양자화가 "데이터를 작게"였다면, 이 장은 "스텝을 건너뛰기"입니다. 둘 다 조건부 이득(양자화는 병목·과제, speculative는 수용률·워크로드)이라는 점에서 이 안내서의 일관된 태도를 다시 보여줍니다.

📌 핵심

  • speculative decoding: draft가 여러 토큰을 추측 → target이 병렬 검증 → 맞는 접두를 수용. 최종 결정은 본모델이라 출력 분포를 (목표상) 보존.
  • 이득은 수용률에 달려 있고, MoE·배치 1 등에선 이득이 상쇄될 수 있다.
  • MTP는 학습 목표, speculative decoding은 런타임 기법 — 다른 층위.
  • MTP head를 draft로 재사용해 native speculative decoding이 가능하지만, MTP≠speculative decoding이고 MTP 모델이 반드시 다중 토큰 추론을 하는 것도 아니다.

🔎 이 장의 '지지하지 않는 결론'

  • "speculative decoding은 항상 빠르다"고 말할 수 없습니다 — 수용률이 낮거나 MoE·배치 1 등에선 이득이 사라질 수 있습니다.
  • "MTP를 쓰면 곧 추론이 빨라진다"를 단정할 수 없습니다 — MTP는 학습 목표이며, 추론 이득은 draft 재사용·수용률·버전 지원에 달려 있습니다.

✍️ 확인 문제

  1. draft-verify-accept 세 단계를 설명하고, 왜 최종 출력 분포가 (이론상) 보존되는지 말하세요.
  2. (조건 유형) "speculative decoding으로 2배 빨라졌다"를 신뢰하려면 어떤 조건들(최소 세 가지)이 함께 공개돼야 합니까?
  3. MTP와 speculative decoding이 "다른 층위"라는 말의 의미를, 각각이 언제(학습/추론) 작동하는지로 설명하세요.
다음 묶음(5부): 13 · vLLM 아키텍처 → 14 · 추론 지표 → 15 · 벤치마크 주장 비판하기. 시스템과 증거의 세계로.