추론 가속화: 20~50% 더 빠른 LLM 추론
품질 저하 없이 LLM 추론 속도를 높이는 방법 - 실무 가이드
70B 모델은 한 번의 순전파(forward pass)에서 하나의 토큰을 생성하며, 각 패스마다 VRAM에서 가중치를 다시 로드하고 컨텍스트 전반에 걸쳐 어텐션을 계산하며 메모리를 동기화합니다. 토큰 사이에는 GPU가 순차적 의존성이 해결될 때까지 대기하며 유휴 상태에 머무릅니다.

H100 GPU에서 70B 모델은 30~50ms마다 하나의 토큰을 생성합니다. GPU는 병렬로 여러 토큰을 처리할 수 있는 충분한 연산 능력을 갖추고 있지만, 순차적 의존성 때문에 이를 활용할 수 없습니다. 각 토큰은 이전 토큰에 의존하므로 파이프라인이 멈추게 됩니다.
투기적 디코딩(Speculative decoding)은 출력 분포를 변경하지 않으면서 일반적으로 하나의 토큰을 생성하는 데 걸리는 시간에 여러 토큰을 생성할 수 있게 하여 이러한 병목 현상을 해결합니다. 얻을 수 있는 토큰은 표준 자기회귀 디코딩에서 얻을 것과 통계적으로 동일하며, 유일한 차이는 토큰을 얻는 속도에 있습니다.
이 가이드에서는 메커니즘, 2026년에 사용할 수 있는 변형, 수용률(acceptance rate)의 trade-off, 그리고 llama.cpp, vLLM, SGLang, TensorRT-LLM에서의 실제 설정 방법을 다룹니다.
자기회귀 디코딩의 작동 방식 (그리고 느린 이유)
투기적 디코딩을 이해하기 전에, 이를 우회하는 자기회귀 제약 조건을 이해해야 합니다. 표준 자기회귀 생성은 토큰을 순차적으로 처리합니다:
- 현재 컨텍스트로 모델에 순전파를 실행합니다.
- 출력 분포에서 다음 토큰을 샘플링합니다.
- 토큰을 컨텍스트에 추가합니다.
- 반복합니다.
각 단계는 전체 순전파가 필요합니다. VRAM에서 가중치를 로드하고 전체 컨텍스트에 걸쳐 어텐션을 계산하며 단일 토큰을 생성해야 합니다. 70B 파라미터를 가진 모델의 경우, H100에서 토큰당 약 30~50ms가 소요됩니다. GPU에는 여분의 연산 용량이 있지만, 순차적 의존성 때문에 이를 활용할 수 없습니다.
연산-VRAM 격차
현대 GPU는 단일 토큰 생성에 필요한 것보다 더 많은 FLOPs를 갖추고 있으므로, 실제 병목 현상은 메모리 대역폭입니다. 가중치는 각 순전파마다 VRAM에서 연산 유닛으로 스트리밍되어야 합니다. 한 번에 하나의 토큰을 생성할 때, GPU는 유용한 연산을 수행하는 시간보다 메모리 전송을 기다리는 시간에 대부분의 시간을 보냅니다.
투기적 디코딩은 메모리 전송당 GPU에 더 많은 작업을 제공하여 이 문제를 해결합니다. 한 번의 순전파당 하나의 토큰을 생성하는 대신, K개의 토큰을 생성하여 메모리 비용을 여러 출력에 분배합니다.
초안-검증(Draft-Verify) 메커니즘
투기적 디코딩은 반복되는 초안-검주 사이클에서 작동합니다. 빠른 초안 메커니즘은 K개의 후보 토큰을 제안합니다. 이는 작은 초안 모델, n-gram 조회, 또는 타겟 모델에 연결된 예측 헤드에서 비롯될 수 있습니다. 타겟 모델은 단일 순전파로 모든 K개의 토큰을 검증합니다. 초안 단계는 저렴하며, 일반적으로 타겟 모델의 순전파 시간의 5~20%를 차지합니다. 반면 검증 단계는 각 초안 토큰을 타겟 모델이 생성했을 것과 비교하여, 가장 긴 일치하는 접두사를 수용하고 첫 번째 거부 지점부터 재샘플링합니다.
K개의 토큰을 검증하는 비용은 자기회귀 방식으로 하나의 토큰을 생성하는 것과 거의 동일하므로, 초안이 정확할 경우 하나의 검증 단계 비용으로 K개의 토큰을 얻을 수 있습니다.
구체적인 예시
초안 모델이 5개의 토큰을 제안한다고 가정해 봅시다: ["I", " like", " cooking", " and", " traveling"]. 타겟 모델은 단일 순전파로 이를 검증합니다:
| 토큰 | 초안(Draft) | 타겟 동의? |
|---|---|---|
| 1 | “I” | ✓ |
| 2 | " like" | ✓ |
| 3 | " cooking" | ✗ (타겟은 " playing"이라고 할 것임) |
| 4 | " and" | — (평가되지 않음) |
| 5 | " traveling" | — (평가되지 않음) |
타겟은 토큰 1과 2를 수용한 후, 토큰 3에 대해 " playing"을 생성하여 세 개의 토큰을 한 사이클에서 생성합니다. 이는 세 번의 별도 순전파 대신 수행됩니다. 만약 초안이 토큰 5까지 정확했다면, 하나의 검증 비용으로 다섯 개의 토큰을 얻을 수 있었을 것입니다. 이는 해당 사이클에서만 5배의 속도 향상입니다.
검증 병목 현상
실제 환경에서 검증이 실행 시간을 지배합니다. 방법과 모델 크기에 따라 사이클의 42~95%를 차지합니다. 타겟 모델의 순전파가 병목 현상이며, 거부된 토큰은 낭비된 연산을 의미합니다.
이것이 수용률이 매우 중요한 이유입니다. 첫 번째 이후의 모든 거부된 토큰은 낭비된 검증 작업입니다. 가장 좋은 투기적 디코딩 방법은 단순히 원시 수용률이 아닌, 사이클당 기대 수용 토큰 수를 최대화합니다.
수학적 보장
투기적 디코딩의 가장 중요한 특성 중 하나는 타겟 모델의 표준 자기회귀 샘플링과 정확히 동일한 분포에서 토큰을 생성한다는 것입니다. 검증 단계는 기각 샘플링(rejection sampling)을 사용합니다. 초안이 토큰 x를 제안할 때, 타겟 모델은 자신의 확률 p(x)를 계산하고 초안은 p_draft(x)를 계산합니다. 수용 확률은 다음과 같습니다:
min(1, p(x) / p_draft(x))
타겟이 동의할 때(p(x) ≥ p_draft(x)), 토큰은 항상 수용됩니다. 타겟이 동의하지 않을 때, 토큰은 비율에 비례한 확률로 수용되며, 거부된 토큰은 잔차 분포(residual distribution)에서 재샘플링됩니다:
r(x) = max(0, p(x) - p_draft(x)) / Σ max(0, p(y) - p_draft(y))
이 절차는 출력 시퀀스가 타겟 모델의 분포를 정확히 따르도록 보장하므로, 투기적 디코딩은 손실 없습니다(lossless). 초안 모델은 속도에는 영향을 주지만 품질에는 영향을 주지 않습니다. 얻는 토큰은 표준 디코딩과 통계적으로 구별할 수 없으며, 동일한 퍼플렉시티(perplexity)와 분포를 가집니다. 유일한 차이는 지연 시간(latency)입니다.
초안 모델 전략
초안 메커니즘이 가장 중요한 변수입니다. 다양한 접근 방식은 설정 복잡성, 수용률, 속도 향상 측면에서 서로 다른 trade-off를 가집니다.
독립형 초안 모델
가장 간단한 접근 방식은 타겟 모델과 함께 더 작은 모델을 로드하는 것입니다. 일반적으로 1B3B 모델이 7B70B 타겟을 위해 초안을 작성합니다.
장점:
- 개념적으로 직관적임
- 모든 타겟 모델과 호환됨
- 초안 모델은 타겟의 분포와 일치하도록 튜닝 가능
단점:
- VRAM에 두 번째 모델을 로드해야 함 (크기에 따라 1~4 GB)
- 초안 모델의 품질이 수용률을 직접 결정함
- 교차 패밀리 초안(예: Qwen이 Llama를 위해 초안 작성)은 일반적으로 성능이 낮음
경험法则: 동일한 계열의 모델을 사용하십시오. Gemma 2 2B는 Gemma 2 27B를 위해 잘 초안 작성합니다. Llama 3.2 1B는 Llama 3.1 70B를 위해 잘 초안 작성합니다. 교차 패밀리 초안은 토큰 분포가 달라지기 때문에 낮은 수용률을 보이는 경향이 있습니다.
호환 가능한 초안 모델 찾기
모든 작은 모델이 주어진 타겟에 대한 초안 모델로 작동하지는 않습니다. 중요한 요소는 분포 정렬(distribution alignment)입니다. 즉, 초안 모델의 출력 확률이 타겟과 얼마나 밀접하게 일치하는지입니다.
| 타겟 모델 | 권장 초안 모델 | 패밀리 일치 |
|---|---|---|
| Llama 3.1 70B | Llama 3.2 1B-3B | 동일 |
| Llama 3.1 8B | Llama 3.2 1B | 동일 |
| Qwen 3 27B | Qwen 3 0.6B-1.8B | 동일 |
| Gemma 2 27B | Gemma 2 2B | 동일 |
| Mixtral 8x7B | Phi-3 4B (Mixtral 데이터로 학습) | 교차 (주의) |
황금률: 초안 모델의 수용률이 50% 미만으로 떨어지면, 투기적 디코딩이 실제로 속도를 늦출 수 있습니다. 대부분의 제안이 거부될 때, 초안 모델을 실행하고 검증하는 오버헤드는 이점보다 큽니다.
EAGLE 및 EAGLE-3: 예측 헤드
EAGLE(Efficient Architecture Guided Language Model Estimation)은 별도의 초안 모델의 필요성을 제거합니다. 대신, 타겟 모델의 내부 레이어에 경량 자기회귀 예측 헤드를 연결합니다.
EAGLE 작동 방식
EAGLE은 타겟 모델의 중간 레이어에서 숨겨진 상태(hidden states)를 받아 미래 토큰을 예측하는 예측 헤드를 학습시킵니다. 추론 중:
- 타겟 모델은 레이어를 통해 순전파를 실행합니다.
- 각 레이어에서 EAGLE 헤드는 숨겨진 상태를 읽고 미래 위치의 토큰을 제안합니다.
- 여러 헤드가 병렬로 작동하며, 각각 다른 미래 타임스텝을 예측합니다.
- 타겟 모델은 단일 패스로 모든 제안을 검증합니다.
장점: EAGLE 헤드는 타겟 모델의 분포와 일치하도록 특별히 학습됩니다. 이들은 타겟의 내부 표현을 직접 보므로, 독립형 초안 모델보다 훨씬 더 나은 정렬을 제공합니다.
EAGLE-3 개선 사항
EAGLE-3(2025)은 세 가지 주요 변경 사항을 통해 접근 방식을 개선합니다:
- 레이어 선택: 모든 레이어에 헤드를 연결하는 대신, EAGLE-3은 베이지안 최적화를 사용하여 최적의 종료 레이어를 선택하여 오버헤드를 줄입니다.
- 다중 토큰 예측: 각 헤드가 동시에 여러 토큰을 예측하여, 연산 비용이 비례하지 않으면서 초안 깊이를 증가시킵니다.
- 학습 효율성: EAGLE-3은 타겟 모델 자체의 생성 데이터로 학습하여, 분포 내(in-distribution) 워크로드의 수용률을 향상시킵니다.
수용률: EAGLE-3은 일반적으로 분포 내 워크로드에서 6080%의 수용률을 달성하며, 이는 독립형 초안 모델의 4060%와 비교됩니다. 높은 반복성을 가진 코드 생성 워크로드에서는 수용률이 85%를 초과할 수 있습니다.
설정: EAGLE-3은 타겟 모델에 대한 사전 학습된 헤드가 필요합니다. NVIDIA는 TensorRT-LLM 및 HuggingFace의 Speculative Decoding Modules 컬렉션을 통해 몇몇 인기 모델에 대한 EAGLE-3 헤드를 제공합니다. vLLM 및 SGLang에 대한 제3자 구현도 존재합니다.
P-EAGLE: 병렬 초안 작성 (2026년 3월)
EAGLE-3의 주요 한계는 자기회귀 초안 작성입니다. 각 초안 토큰은 이전 토큰에 의존하므로, K개의 초안 토큰을 생성하려면 초안 헤드를 통해 K번의 순차적 순전파가 필요하며, 초안 오버헤드는 K에 대해 선형으로 증가합니다. P-EAGLE은 최대 10개의 토큰을 병렬로 예측하도록 학습된 경량 4레이어 작성자를 통해 단일 순전파로 모든 K개의 초안 토큰을 생성하여 이 한계를 제거합니다.
결과: P-EAGLE은 NVIDIA B200의 실제 워크로드에서 기본 EAGLE-3 대비 최대 1.69배의 속도 향상을 제공합니다. 이 이점은 높은 K 값에서 확대됩니다. EAGLE-3의 순차적 초안 작성이 병목 현상이 되는 반면, P-EAGLE의 병렬 초안 작성은 추가 비용을 발생시키지 않습니다.
vLLM 설정: HuggingFace에서 사전 학습된 P-EAGLE 헤드를 다운로드하고, vLLM 구성에서 "parallel_drafting": true를 설정하며, 동일한 --speculative-model 플래그를 사용하십시오. vLLM이 나머지를 처리합니다. P-EAGLE은 현재 EAGLE 기반 투기적 디코딩의 최신 기술(state-of-the-art)이며, 2026년에 EAGLE을 배포한다면 P-EAGLE이 사용해야 할 변형입니다.
n-gram 투기적 디코딩
n-gram 투기적 디코딩은 신경망 초안을 프롬프트 히스토리에 대한 패턴 매칭으로 대체합니다. 알고리즘은 컨텍스트에서 반복되는 n-gram 시퀀스를 찾으며, 현재 토큰 시퀀스가 이전에 본 패턴과 일치할 때, 그 패턴 뒤에 따라왔던 토큰을 제안합니다. 예를 들어, 모델이 이미 def calculate_total(items):를 생성했고 def calculate_total(을 다시 마주했을 때, 이전 발생에 기반하여 다음 토큰이 items):일 가능성이 높다는 것을 알고 있습니다.
n-gram 맵 변형(ngram-map-k, ngram-map-k4v)은 선형 스캔 대신 빠른 조회를 위해 해시 테이블을 사용하며, 해시 키는 현재 크기 N의 n-그램이고 값은 그 뒤에 따라온 토큰 시퀀스입니다.
장점:
- VRAM 오버헤드가 없음 — 로드할 추가 모델 없음 (해시 테이블에 약 16 MB)
- 반복적인 워크로드(코드 편집, 리팩토링, 템플릿 생성)에 극도로 빠름
- 높은 자기 유사성을 가진 워크로드에서 수용률이 90%+에 도달할 수 있음
단점:
- 새로운 생성에는 무용지움 — 패턴이 이전에 나타나지 않았다면, n-gram은 제안할 것이 없음
- 창의적이거나 다양한 워크로드에서 수용률이 거의 0으로 떨어짐
- 제한된 초안 깊이 (일반적으로 매치당 2~4 토큰)
최적의 용도: 코드 리팩토링, 템플릿 채우기, 반복적 문서화, 그리고 모델이 비슷한 패턴을 다시 방문하는 모든 워크로드. 최악의 용도: 창의적 글쓰기, 개방형 채팅, 추론 작업.
파라미터 튜닝
n-gram 파라미터는 예상보다 더 중요합니다. 기본값은 코드에 적합하지만, 텍스트 워크로드는 조정이 필요합니다:
| 파라미터 | 기본값 | 코드 | 텍스트 | 참고 |
|---|---|---|---|---|
size-n (조회 길이) |
12 | 12-16 | 8-10 | 더 긴 n-그램은 거짓 양성을 줄이지만 짧은 패턴을 놓침 |
size-m (초안 길이) |
48 | 48 | 32 | 더 긴 초안은 매치당 더 많은 토큰을 의미하지만, 더 많은 거부를 초래 |
min-hits |
1 | 1 | 2 | 높은 min-hits는 매치 수가 줄어드는 대가로 거짓 양성을 줄임 |
텍스트 워크로드의 경우, size-n을 8~10으로 줄이고 min-hits를 2로 증가시키십시오. 이는 매치 빈도를 희생하여 매치당 더 높은 수용률을 얻습니다.
자체 투기적 디코딩(Self-Speculative Decoding)
자체 투기적 디코딩(또는 LayerSkip 또는 self-speculation이라고도 함)은 별도의 모델 없이 모델 자체의 부분적 계산을 초안으로 사용합니다.
작동 방식
각 토큰마다 전체 모델을 실행하는 대신, 자체 투기적 디코딩은 일부 트랜스포머 레이어를 건너뛰어 잘린 버전을 실행하여 저렴하게 초안 토큰을 생성하고, 전체 모델이 그 제안을 검증합니다.
예를 들어, 32레이어 모델은 초안 작성에 16레이어만 사용하여 실행한 후, 32레이어 모두로 검증합니다. 잘린 순전파는 더 적은 레이어를 처리하기 때문에 더 빠르며, 초안 토큰은 타겟과 동일한 초기 레이어를 보게 되는 이점을 가집니다.
장점:
- 로드할 추가 모델 가중치 없음
- 타겟 분포와 자연스럽게 정렬됨 (동일한 아키텍처, 부분적 레이어)
- 더 깊은 레이어에 상당한 중복이 있는 모델에서 잘 작동
단점:
- 부분적 순전파를 지원하도록 추론 엔진을 수정해야 함
- KV 캐시 복잡성 — 초안은 전체 모델의 캐시와 조정해야 하는 부분적 KV 캐시를 사용
- 수용률은 일반적으로 EAGLE이나 잘 튜닝된 초안 모델보다 낮음
llama.cpp 구현: PR #18471은 컨텍스트 히스토리를 초안으로 사용하는 자체 투기적 디코딩을 도입했습니다. 모델은 동일한 컨텍스트 창 내에서 패턴이 반복되는 코드 워크로드에 특히 효과적인, 자체 생성 히스토리에서 토큰을 재사용하여 계속을 제안합니다.
MTP (Multi-Token Prediction)
MTP는 특정 모델 체크포인트에 직접 구축된 투기적 디코딩의 전문화된 형태입니다. Qwen 3.6은 표준 및 MTP 활성화 GGUF 변형 모두를 제공합니다.
차이점: MTP 헤드는 학습 중에 모델 아키텍처에 내장됩니다. 모델은 단일 순전파로 여러 미래 토큰을 제안하는 추가 예측 헤드를 포함합니다. 별도의 초안 모델이 없습니다 — MTP 헤드는 타겟 모델 자체의 일부입니다.
Trade-off:
- 관리할 초안 모델 없음 —
--spec-type draft-mtp --spec-draft-n-max N으로 MTP 활성화 - MTP 헤드는 약 1~2 GB VRAM 오버헤드를 추가
- 희소 라우팅이 MTP 헤드를 저렴하게 유지하는 MoE 아키텍처(Qwen 3.6 35B-A3B)에서 가장 잘 작동
Qwen 3.6 27B 및 35B 전반에 걸친 MTP와 표준 디코딩에 대한 자세한 벤치마크는 Qwen 3.6 MTP vs Standard on 16GB GPU를 참조하십시오.
수용률: 실제 의미
수용률(α)은 투기적 디코딩 성능을 위한 가장 중요한 단일 지표입니다. 이는 속도 향상을 얻는지 아니면 오버헤드를 지불하는지를 결정합니다.
속도 향상 공식
검증 패스당 기대 수용 토큰:
E[accepted] = α × K
여기서 K는 사이클당 제안된 초안 토큰의 수입니다. α = 0.7이고 K = 5이면, 패스당 3.5개의 토큰을 수용합니다 — 이는 패스당 1개의 토큰을 생성하는 표준 디코딩 대비 3.5배의 속도 향상입니다.
방법별 수용률
| 방법 | 일반적인 α 범위 | 최적 워크로드 |
|---|---|---|
| 초안 모델 (동일 계열) | 40-60% | 일반 채팅, 추론 |
| 초안 모델 (교차 계열) | 20-40% | 드물게 권장됨 |
| EAGLE-3 | 60-80% | 일반 워크로드, 코드 |
| P-EAGLE | 65-85% | 일반 워크로드, 더 깊은 투기 |
| n-gram | 10-90%+ | 워크로드 의존적 (반복적일 경우 높음, 새로운 경우 거의 0) |
| MTP | 50-70% | Qwen 3.6 모델 특정 |
| 자체 투기적 | 30-50% | 코딩, 반복적 패턴 |
수용률이 떨어질 때
수용률은 생성 전반에 걸쳐 일정하지 않습니다. 이는 다음에 따라 달라집니다:
- 토큰 위치: 초기 토큰은 일반적으로 더 높은 수용률을 가집니다 (더 많은 컨텍스트, 불확실성 적음). 모델이 더 다양한 계속을 탐색함에 따라 후기 토큰은 떨어집니다.
- 워크로드 유형: 반복 패턴을 가진 코드 편집은 α > 80%를 보입니다. 개방형 창의적 글쓰기는 α < 40%를 보입니다.
- Temperature: 높은 temperature는 초안과 타겟 간의 분산을 증가시켜 수용률을 낮춥니다. 투기적 디코딩은 낮은 temperature(0.0~0.7)에서 가장 잘 작동합니다.
임계값: 유효 수용률(α × K)이 1.0 미만으로 떨어지면, 투기적 디코딩은 표준 디코딩보다 느립니다. 초안 오버헤드와 검증 시간이 단일 자기회귀 단계의 비용보다 큽니다.
프로덕션에서의 투기적 디코딩: 실제로 일어나는 일
연구 논문은 2~4배의 속도 향상을 보고하지만, 프로덕션 벤치마크는 더 미묘한 이야기를 들려줍니다 — 속도 향상은 배치 크기와 함께 줄어보고, 검증이 사이클 시간을 지배하며, 모든 워크로드에서 단일 방법이 승리하지는 않습니다.
SpecDecode-Bench 발견 사항 (2026)
vLLM에서 4가지 모델과 6가지 워크로드에 대한 5가지 SD 변형(n-gram, EAGLE, EAGLE-3, Draft-Model, MTP)에 대한 체계적인 평가는 다음을 밝혀냈습니다:
-
SD는 작동하지만, 속도 향상은 배치 크기와 함께 줄어듭니다. 배치 크기 1에서 EAGLE은 Llama-3-70B에서 최대 1.96배를 달성합니다. 배치 크기 128에서는 1.21배로 떨어집니다. 시스템은 높은 동시성에서 연산 제한(compute-bound)이 되며, GPU가 투기에 사용할 수 있는 유휴 용량이 줄어듭니다.
-
검증이 실행 시간을 지배합니다 (42~95%). 타겟 모델의 순전파가 병목 현상입니다. 거부된 토큰에 대한 낭비된 검증을 줄이는 것이 개선의 가장 유망한 방안입니다.
-
모든 곳에서 승리하는 단일 방법이 없습니다. EAGLE-3은 가장 좋은 전반적인 선택입니다. 초안-모델 방법은 타겟 모델이 클 때(70B+) 빛을 발합니다. n-gram은 코드 편집 및 높은 중복 작업에 최적입니다.
-
오라클 분석이 격차를 드러냅니다. n-gram + EAGLE 전략의 결합된 이론적 상한은 코드 편집 워크로드에서
4.9배에 도달하지만, 현재 구현은 23배를 달성합니다. 최적화할 여지가 있습니다.
실제 속도 향상 기대치
| 시나리오 | 기대 속도 향상 |
|---|---|
| 70B 모델, 단일 요청, EAGLE-3 | 1.5-2.0x |
| 70B 모델, 배치 32, EAGLE-3 | 1.2-1.5x |
| 8B 모델, 단일 요청, 초안 모델 | 1.3-1.8x |
| 코드 편집, n-gram | 2.0-4.0x (워크로드 의존적) |
| 창의적 글쓰기, 모든 방법 | 1.0-1.3x (종종 가치가 없음) |
| Qwen 3.6 27B에서의 MTP, 16GB GPU | 1.5-1.7x |
| B200에서의 P-EAGLE, 단일 요청 | 2.0-3.0x |
배치 크기 효과가 중요합니다. 작은 배치에서는 GPU가 투기에 사용할 수 있는 유휴 연산이 있습니다. 큰 배치에서는 시스템이 이미 포화 상태이며, 투기적 디코딩은 비례적인 이점 없이 오버헤드를 추가합니다.
프로덕션에서의 모니터링
프로덕션에서 수용률을 추적해야 합니다. 감소하는 수용률은 초안 모델이 타겟과 멀어지고 있다는 신호입니다. 이는 워크로드가 변경되었거나 초안 모델이 재학습이 필요하기 때문일 수 있습니다.
주요 모니터링 지표:
- 요청당 수용률 (베이스라인 주변에서 안정적이어야 함)
- 투기적 디코딩 사용/미사용 시 초당 토큰 수 (실제 속도 향상)
- 사이클 시간 대비 검증 시간 비율 (42~95%여야 함)
- 초안 모델 순전파 시간 (타겟 모델 시간의 < 20%여야 함)
수용률이 40% 미만으로 떨어지면, 해당 요청에 대해 투기적 디코딩을 비활성화하십시오. 오버헤드는 가치가 없습니다.
실제 설정
엔진 선택은 초안 전략만큼 중요합니다 — 각 런타임이 배칭, API 호환성, 처리량을 어떻게 처리하는지 확인하려면 Ollama vs vLLM vs LM Studio and other local runtimes를 참조하십시오. 투기적 디코딩 경로를 선택하기 전에.
llama.cpp
일반 서버 설정 및 GGUF 로딩에 대해서는 llama.cpp quickstart에서 시작하십시오; 아래 플래그는 이 위에 투기적 디코딩을 추가합니다.
llama.cpp는 --spec-type 플래그를 통해 여러 투기적 디코딩 방법을 지원합니다:
# Draft model (standalone)
llama-server \
--model target-model.gguf \
--draft-model draft-model.gguf \
--spec-draft-n-max 4 \
--parallel 1 # 필수: 투기적 디코딩을 위해 --parallel 1
# n-gram
llama-server \
--model target-model.gguf \
--spec-type ngram-simple \
--spec-ngram-simple-size-n 12 \
--spec-ngram-simple-size-m 48
# n-gram (텍스트 워크로드 튜닝)
llama-server \
--model target-model.gguf \
--spec-type ngram-simple \
--spec-ngram-simple-size-n 8 \
--spec-ngram-simple-size-m 32 \
--spec-ngram-simple-min-hits 2
# MTP (Qwen 3.6)
llama-server \
--model Qwen3.6-27B-MTP.gguf \
--spec-type draft-mtp \
--spec-draft-n-max 2
# Self-speculative (코딩 워크로드)
llama-server \
--model target-model.gguf \
--spec-type draft-self
중요 플래그:
--parallel 1— llama.cpp의 투기적 디코딩은 단일 배치 모드를 필요로 합니다. 이는 현재 제한 사항입니다.--spec-draft-n-max— 사이클당 초안 토큰 수. 3~5로 시작하십시오; 더 높은 값은 VRAM 압력을 증가시킵니다.--spec-ngram-simple-size-n— 조회 n-gram 길이. 기본값 12는 코드에 잘 작동하며, 텍스트의 경우 8로 줄입니다.
일반적인 함정:
--parallel 1을 잊는 것 — 서버는 조용히 투기적 디코딩을 무시합니다.- 교차 계열 초안 모델 사용 — 수용률이 붕괴하여 속도 향상을 상쇄합니다.
--spec-draft-n-max를 너무 높게 설정 — 각 추가 초안 토큰은 초안 버퍼에 대한 VRAM 비용을 증가시킵니다. 5~8 근처에서 체감 효과가 발생합니다.
vLLM
vLLM quickstart는 기본 배포를 다루며; 아래 플래그는 기존 vLLM 서버에서 투기적 디코딩을 활성화합니다.
vLLM은 --speculative-model 및 --speculative-num-steps 플래그를 통해 투기적 디코딩을 지원합니다:
# Draft model
vllm serve target-model \
--speculative-model draft-model \
--speculative-num-steps 5 \
--speculative-accept-length 5
# EAGLE-3
vllm serve target-model \
--speculative-model EAGLE-target-model/ \
--speculative-num-steps 7 \
--speculative-draft-tensor-parallel-size 1
# P-EAGLE (병렬 초안 작성)
vllm serve target-model \
--speculative-model P-EAGLE-target-model/ \
--speculative-num-steps 7 \
--speculative-parallel-drafting true
# n-gram
vllm serve target-model \
--speculative-method ngram \
--speculative-num-steps 5 \
--ngram-context-size 12
vLLM의 투기적 디코딩은 연속 배칭(continuous batching)과 통합되어 있으므로, 동시 워크로드에서 작동합니다. 스케줄러는 단일 순전파 내에서 여러 토큰 슬롯을 처리하며, 메모리 관리자는 초안 및 타겟 모델 모두에 대한 KV 캐시를 처리합니다.
SGLang
SGLang은 --speculative-algorithm 플래그를 통해 투기적 디코딩을 지원합니다:
python -m sglang.launch_server \
--model-path target-model \
--speculative-algorithm ngram \
--ngram-context-size 12 \
--ngram-max-candidate-tokens 6
SGLang의 RadixAttention 아키텍처는 접두사 캐싱이 검증 비용을 줄이기 때문에 투기적 디코딩과 잘 어울립니다 — 타겟 모델은 공유 접두사에 대해 캐시된 어텐션을 재사용하여, 각 검증 패스가 차가운(cold) 순전파보다 저렴해집니다.
TensorRT-LLM
TensorRT-LLM은 Triton Inference Server와 함께 프로덕션 등급 투기적 디코딩을 제공합니다. 설정은 더 복잡하지만 NVIDIA 하드웨어에서 최고의 성능을 제공합니다:
- 타겟 및 초안 모델 모두에 대한 TensorRT 엔진을 빌드합니다.
- 투기적 디코딩 구성을 지정하는
model.yaml로 모델 리포지토리를 구성합니다. - LLM API / PyTorch 백엔드로 Triton을 시작합니다.
TensorRT-LLM은 초안-모델 및 EAGLE-3 변형 모두를 지원합니다. 코드 생성 워크로드의 경우, n-gram 투기적 디코딩을 사용한 TensorRT-LLM은 프로덕션 배포에서 2~3배의 지연 시간 감소를 입증했습니다.
투기적 디코딩을 사용할 때
사용할 때
- 대형 타겟 모델 (7B+): 초안 메커니즘의 오버헤드가 타겟의 연산에 걸쳐 분배됩니다. 투기적 디코딩은 타겟 모델이 느릴 때 빛을 발합니다 — 타겟이 클수록 속도 향상의 가치가 더 큽니다.
- 저온도(low-temperature) 워크로드: 투기적 디코딩은 타겟 모델의 분포가 집중되고 초안이 일치할 가능성이 더 높은 temperature 0.0~0.7에서 가장 잘 작동합니다.
- 인터랙티브 애플리케이션: 지연 시간 민감 워크로드(채팅, 코드 완성, 에이전트 도구 호출)가 가장 많은 혜택을 받습니다. GPU를 이미 포화시키는 배칭 처리는 적은 혜택을 봅니다.
- 코드 생성 및 편집: 코드 패턴의 높은 반복성이 n-gram 및 자체 투기적 디코딩을 특히 효과적으로 만듭니다.
건너뛸 때
- 소형 타겟 모델 (< 3B): 초안 모델의 오버헤드가 타겟의 순전파 시간에 근접합니다. 속도 향상은 미미하거나 음수입니다.
- 고온도(high-temperature) 샘플링: temperature > 0.7에서, 타겟 모델의 분포가 너무 넓어 초안이 신뢰할 수 있게 일치하지 않습니다.
- 창의적 글쓰기 및 개방형 생성: 새로운 콘텐츠에 대한 낮은 수용률이 오버헤드를 가치 없게 만듭니다.
- 고배치 크기 (> 32): 시스템이 연산 제한이 되며, 투기적 디코딩은 비례적인 이점 없이 오버헤드를 추가합니다. SpecDecode-Bench는 배치 크기가 1에서 128로 증가함에 따라 속도 향상이 1.96배에서 1.21배로 떨어지는 것을 보여줍니다.
방법 결합
고급 설정은 여러 투기적 디코딩 전략을 결합합니다. SpecDecode-Bench 오라클 분석은 n-gram과 EAGLE을 적응적으로 결합하면 코드 편집 워크로드에서 속도 향상을 4.9배까지 밀어낼 수 있음을 보여주었습니다.
이 아이디어는 수용률이 높고 오버헤드가 거의 없는 이전에 나타났던 패턴에 대해 n-gram을 사용하고, 새로운 토큰에 대해 EAGLE로 폴백하는 것입니다. 실제로 이는 다중 방법 투기를 위한 엔진 지원을 필요로 하며 — vLLM과 TensorRT-LLM은 실험적 지원을 가지고 있지만, 프로덕션 등급 구현은 아직 성숙해지고 있습니다.
현재로서 가장 실용적인 결합은 llama.cpp의 MTP + n-gram입니다. MTP가 신경망 투기를 처리하는 동안, n-gram은 MTP가 놓치는 반복적 패턴을 잡습니다. Qwen 3 27B에서 이 결합은 표준 디코딩의 67 토큰/초 대비 120 토큰/초를 달성하여 1.8배의 속도 향상입니다.
비용 고려 사항
투기적 디코딩은 지연 시간을 위해 연산을 trade-off합니다. 토큰당 총 연산은 대략 동일합니다 — 단순히 순차적이 아닌 병렬로 더 많은 작업을 수행하는 것입니다.
GPU 비용 영향:
- 단일 요청 지연 시간은 20~50% 개선되며, 이는 인터랙티브 애플리케이션에 중요합니다.
- 처리량(여러 요청에 걸친 토큰/초)은 덜 개선됩니다 — GPU는 이미 큰 배치 크기에서 포화 상태입니다.
- VRAM 사용량은 초안 모델의 footprint만큼 증가합니다 (독립형 초안의 경우 1~4 GB, n-gram/EAGLE의 경우 미미).
클라우드 추론: H100 시간당 $2~4에, 투기적 디코딩은 토큰당 비용을 증가시키지 않으면서 요청당 지연 시간을 줄입니다. GPU를 이미 포화시키는 배칭 처리의 경우, 비용 이점은 미미합니다 — 어쨌든 동일한 GPU 시간을 지불하고 있습니다.
투기적 디코딩이 돈을 절약할 때: 요청당 요금을 부과하고 첫 토큰 도달 시간(time-to-first-token)을 줄이고자 하는 인터랙티브 애플리케이션. 2배의 속도 향상은 사용자가 절반의 시간을 기다린다는 것을 의미하며, 동일한 하드웨어에서 초당 더 많은 요청을 처리할 수 있습니다.
그렇지 않을 때: GPU 활용을 이미 최대화하는 배칭 처리. 투기적 디코딩의 추가 연산은 처리량을 증가시키지 않습니다 — 단순히 지연 시간 프로필을 변경할 뿐입니다.
다음 단계
투기적 디코딩은 연구 новинка에서 프로덕션 표준으로 성숙해지고 있습니다. 최전선은 현재 한계를 넘어押し進めています:
-
투기적 투기적 디코딩 (Speculative Speculative Decoding, SSD): 별도의 하드웨어에 걸쳐 초안 작성 및 검증 단계를 병렬화합니다. 초안 모델은 비동기적으로 실행되어, 여러 가능한 검증 결과에 대해 사전 투기합니다. 초기 결과는 최적화된 투기적 디코딩 대비 최대 2배, 자기회귀 디코딩 대비 5배의 속도 향상을 보여줍니다. 아직 프로덕션 준비가 되지 않았지만, 방향성은 명확합니다.
-
SpecSA (Sparse Speculative Verification): 투기적 디코딩과 동적 희소 어텐션을 결합합니다. 희소 어텐션을 검증 중심 워크로드로 전환하여, 자기회귀 희소 디코딩 대비 최대 3.49배의 엔드투엔드 처리량을 달성합니다. 희소 어텐션이 이미 사용 중인 롱 컨텍스트 모델에 관련성이 있습니다.
-
적응형 투기: 워크로드 특성에 기반하여 n-gram, EAGLE, 초안-모델 방법 간에 자동으로 전환합니다. 오라클 분석은 상당한 미개발 잠재력을 보여줍니다 — 현재 구현은 2~3배를 달성하지만, 이론적 상한은 4.9배입니다.
-
멀티모달 투기적 디코딩: draft-verify를 비전-언어 모델 및 비디오 생성으로 확장합니다. 초기 조사에서는 동일한 원칙이 적용되지만, 비텍스트 모달리티에 대한 검증 전략이 적응되어야 함을 보여줍니다.
의사결정 프레임워크
| 질문 | 답변 | 권장 사항 |
|---|---|---|
| 타겟 모델 크기? | < 3B | 투기적 디코딩 건너뛰기 |
| 타겟 모델 크기? | 7-13B | n-gram 또는 자체 투기적 사용 (낮은 오버헤드) |
| 타겟 모델 크기? | 30B+ | 초안 모델 또는 EAGLE-3 사용 (더 큰 타겟 = 더 많은 이점) |
| 워크로드 유형? | 코드 편집/리팩토링 | n-gram + EAGLE 결합 |
| 워크로드 유형? | 일반 채팅 | EAGLE-3 또는 P-EAGLE |
| 워크로드 유형? | 창의적 글쓰기 | 투기적 디코딩 건너뛰기 |
| 배치 크기? | 1-4 (인터랙티브) | 투기적 디코딩이 가장 큰 도움 |
| 배치 크기? | 32+ (처리량) | 투기적 디코딩이 덜 도움 |
| Temperature? | 0.0-0.7 | 투기적 디코딩에 적합 |
| Temperature? | > 0.7 | 투기적 디코딩 건너뛰기 |
| 하드웨어? | 16GB GPU | n-gram 또는 MTP 사용 (낮은 VRAM 오버헤드) |
| 하드웨어? | 24GB+ GPU | 초안 모델 또는 EAGLE-3 가능 |
| 엔진? | vLLM | EAGLE-3 또는 P-EAGLE (최적의 통합) |
| 엔진? | llama.cpp | n-gram 또는 MTP (가장 간단한 설정) |
| 엔진? | TensorRT-LLM | EAGLE-3 또는 초안 모델 (프로덕션 등급) |