Capstone 14 — 추측 디코딩(Speculative Decoding) 추론 서버
vLLM 0.7에 탑재된 EAGLE-3는 실제 트래픽에서 2.5-3배의 처리량(Throughput)을 만들어 냅니다. P-EAGLE(AWS 2026)은 병렬 추측(Parallel Speculation)을 한 단계 더 밀어붙였습니다. SGLang의 SpecForge는 대규모로 드래프트 헤드(Draft Head)를 학습했고, Red Hat의 Speculators 허브(Hub)는 자주 쓰이는 오픈 모델에 맞춰 정렬된 드래프트를 공개했습니다. TensorRT-LLM은 NVIDIA 플랫폼에서 추측 디코딩을 일급(First-class) 기능으로 끌어올렸습니다. 2026년 프로덕션 서빙 스택(Serving Stack)은 EAGLE 계열 드래프트를 사용하는 vLLM 또는 SGLang에, FP8 또는 INT4 양자화(Quantization)와 대기 시간(Queue Wait) 기반 HPA를 더한 구성이 표준입니다. 이번 캡스톤의 목표는 두 개의 오픈 모델을 베이스라인 대비 2.5배 이상의 처리량으로 서빙하면서, 완전한 꼬리 지연(Tail Latency) 보고서를 함께 만들어 내는 것입니다.
유형: Capstone
언어: Python(서빙), C++ / CUDA(커널 점검), YAML(설정)
선수 지식: Phase 3(deep learning), Phase 7(transformers), Phase 10(LLMs from scratch), Phase 17(infrastructure)
실습 Phase: P3 · P7 · P10 · P17
예상 시간: 약 30시간
문제
추측 디코딩(Speculative Decoding)은 2026년에 흔히 쓰는 상용(commodity) 기술이 되었습니다. EAGLE-3 드래프트 헤드는 타깃 모델(Target Model)의 은닉 상태(Hidden State) 위에서 학습되며, 앞으로 등장할 N개 토큰을 미리 예측합니다. 타깃 모델은 이를 한 번의 패스(Pass)로 검증합니다. 60-80% 수준의 수락률(Acceptance Rate)은 종단 간 처리량을 2-3배까지 끌어올립니다. vLLM 0.7은 이 기능을 자체적으로 통합해 제공하고, SGLang + SpecForge는 그에 필요한 학습 파이프라인(Training Pipeline)을 제공합니다. Red Hat의 Speculators는 Llama 3.3 70B, Qwen3-Coder-30B MoE, GPT-OSS-120B에 맞춰 정렬된 드래프트를 공개해 두었습니다.
기술의 핵심은 모델 자체보다 서빙 운영(Serving Operation)에 있습니다. 수락률은 트래픽 분포(Traffic Distribution)에 따라 달라지며, ShareGPT, 코드, 도메인 데이터에서 모두 다른 값을 보입니다. 거부(Rejection)가 발생했을 때의 꼬리 지연은 오히려 추측을 쓰지 않을 때보다 나빠질 수 있으므로, 정상 상태의 초당 토큰 수(tokens/sec)만 보고해서는 충분하지 않습니다. 여러 배치 크기(Batch Size) 각각에 대해 p99를 반드시 함께 보고해야 합니다. Anthropic / OpenAI API 대비 1M 토큰당 비용(Cost per 1M Tokens)은 결과의 신뢰성을 좌우하는 핵심 지표입니다.
개념
추측 디코딩은 두 개의 계층(Layer)으로 구성됩니다. 드래프트(Draft) 모델(EAGLE-3 헤드, n-gram, 또는 더 작은 타깃 정렬형 모델)이 매 스텝마다 k개의 후보 토큰(Candidate Token)을 제안합니다. 타깃(Target) 모델은 이 k개 토큰 전체를 한 번의 패스로 검증하며, 수락된 접두(Prefix)는 그리디 경로(Greedy Path)를 대체합니다. 수락률은 드래프트와 타깃 사이의 정렬 정도, 그리고 입력 분포(Input Distribution)에 따라 달라집니다.
EAGLE-3는 대부분의 트래픽에서 n-gram 드래프트보다 우수한 결과를 냅니다. P-EAGLE은 더 깊은 드래프트 트리(Draft Tree)를 만들기 위해 병렬 추측을 수행합니다. 다만 거부 시 p99 지연이 더 커진다는 트레이드오프가 있습니다. 검증 패스(Verify Pass) 자체가 커지기 때문이며, 서빙 설정(Serving Config)은 이를 드러내기 위해 배치 크기별로 구분한 지연 시간을 반드시 보고해야 합니다.
배포 환경은 Kubernetes입니다. vLLM 0.7은 GPU 한 장당, 혹은 텐서 병렬(Tensor Parallel) 샤드(Shard)당 하나의 리플리카(Replica)로 실행됩니다. HPA는 CPU가 아닌 대기 시간(Queue Wait)을 기준으로 오토스케일링(Autoscaling)합니다. FP8(Marlin)과 INT4(AWQ) 양자화는 모델을 H100 / H200의 GPU 메모리 한계 안에 맞춰 주는 역할을 합니다. 종단 간 보고서에는 처리량, 수락률, 배치 크기 1/8/32에서의 p50/p99, 그리고 1M 토큰당 비용($/1M tokens)이 포함되어야 합니다.
아키텍처
request ingress
|
v
vLLM server (0.7) or SGLang (0.4)
|
+-- draft: EAGLE-3 heads | P-EAGLE parallel | ngram fallback
+-- target: Llama 3.3 70B | Qwen3-Coder-30B | GPT-OSS-120B
| quantized FP8-Marlin or INT4-AWQ
|
v
verify pass: batch k draft tokens through target
|
v (accept prefix; resample for rejected suffix)
v
token stream back to client
|
v
Prometheus metrics: throughput, acceptance rate, queue wait, latency p50/p99
|
v
HPA on queue-wait metric
스택
- 서빙: vLLM 0.7 또는 SGLang 0.4를 사용합니다.
- 추측 방식: EAGLE-3 드래프트 헤드, P-EAGLE 병렬 추측, n-gram 폴백(Fallback)을 사용합니다.
- 드래프트 학습: SpecForge(SGLang) 또는 Red Hat Speculators를 사용합니다.
- 타깃 모델: Llama 3.3 70B, Qwen3-Coder-30B MoE, GPT-OSS-120B를 대상으로 합니다.
- 양자화: FP8(Marlin)과 INT4 AWQ를 적용합니다.
- 배포: Kubernetes + NVIDIA device plugin,
queue-wait 메트릭(metric) 기반 HPA를 사용합니다.
- 평가: 분포별 수락률을 측정하기 위해 ShareGPT, MT-Bench-v2, GSM8K, HumanEval을 사용합니다.
- 비교 참조: 벤더 베이스라인으로 TensorRT-LLM 추측 디코딩을 함께 살핍니다.
직접 만들기
-
타깃 모델 준비. Llama 3.3 70B를 선택합니다. Marlin으로 FP8 양자화를 수행한 뒤, vLLM 0.7 위에서 1xH100 또는 2x 텐서 병렬 구성으로 배포합니다.
-
드래프트 소스. Red Hat Speculators에서 정렬된 EAGLE-3 드래프트 헤드를 가져오거나 SpecForge로 직접 학습합니다. 학습 결과물은 vLLM의 speculative-decoding 설정에 로드합니다.
-
베이스라인 수치. 추측을 켜기 전 배치 1/8/32에서 초당 토큰 수, p50/p99 지연, GPU 사용률을 측정하고 공개합니다.
-
EAGLE-3 활성화. 설정을 켜고 같은 벤치마크를 다시 실행합니다. 속도 향상(Speedup), 수락률, p99 꼬리 지연 변화량(Delta)을 보고합니다.
-
P-EAGLE. 병렬 추측을 활성화해 더 깊은 드래프트 트리를 시도하고, 직렬 EAGLE-3와 비교합니다. P-EAGLE이 도움이 되는 지점과 오히려 해가 되는 지점을 함께 보고합니다.
-
도메인 트래픽. ShareGPT, HumanEval, 도메인 특화(Domain-specific) 트래픽을 같은 서버에 흘려보냅니다. 분포별 수락률을 측정하고, 드래프트가 언제 정렬에서 벗어나는지(drift)를 식별합니다.
-
두 번째 타깃 모델. 같은 파이프라인을 Qwen3-Coder-30B MoE에 적용합니다. MoE 라우팅(Routing) 잡음 때문에 드래프트가 더 까다로워집니다. 결과를 보고합니다.
-
K8s HPA. queue_wait_ms를 추적하는 HPA와 함께 Kubernetes에 배포합니다. 부하가 세 배로 증가했을 때 스케일아웃(Scale-out)이 동작하는 모습을 보여 줍니다.
-
비용 비교. 같은 평가 세트(Eval Set)에서 Anthropic Claude Sonnet 4.7 및 OpenAI GPT-5.4 대비 1M 토큰당 비용을 계산해 공개합니다.
사용해보기
$ curl https://infer.example.com/v1/chat/completions -d '{"messages":[...]}'
[serve] vLLM 0.7, Llama 3.3 70B FP8, EAGLE-3 active
[decode] bs=8, accepted_tokens_per_step=3.2, acceptance_rate=0.76
[latency] first-token 42ms, full-response 980ms (620 tokens)
[cost] $0.34 per 1M output tokens at sustained throughput
산출물 만들기
outputs/skill-inference-server.md가 제출 산출물을 설명합니다. 추측 디코딩을 적용한 측정 가능한 서빙 스택, 전체 벤치마크 보고서, Kubernetes 배포 구성을 함께 제출해야 합니다.
| 가중치 | 기준 | 측정 방법 |
|---|
| 25 | 베이스라인 대비 측정된 속도 향상 | 두 모델에서 품질 동등(Matched Quality) 기준 2.5x+ 처리량 |
| 20 | 현실 트래픽 위에서의 수락률 | 분포별 수락률 보고 |
| 20 | p99 꼬리 지연 관리 | 추측 유무 각각에 대해 배치 1/8/32 p99 |
| 20 | 운영 | K8s 배포, queue-wait 기반 HPA, 매끄러운 롤아웃(Rollout) |
| 15 | 작성과 방법론 | 무엇이 왜 바뀌었는지에 대한 명확한 설명 |
| 100 | | |
연습문제
-
(쉬움) 드래프트가 타깃보다 한 버전 뒤처졌을 때(예: Llama 3.3 → 3.4 drift) 수락률 저하를 측정합니다. 이를 감지하는 모니터링 경보(Alert)를 만듭니다.
-
(중간) n-gram 폴백을 구현합니다. EAGLE-3 수락률이 임계값(Threshold) 아래로 떨어지면 n-gram 드래프트로 전환하도록 합니다. 신뢰성(Reliability) 개선치를 보고합니다.
-
(중간) 통제된 MoE 실험을 수행합니다. 동일한 Qwen3-Coder-30B에 라우팅 잡음을 주입한 경우와 그렇지 않은 경우를 비교하여 드래프트 수락 민감도(Acceptance Sensitivity)를 측정합니다.
-
(어려움) H200(141GB)으로 확장합니다. 리플리카당 확보되는 모델 크기 여유(Headroom)와, 양자화하지 않은(unquantized) Llama 3.3 70B의 서빙 가능 여부를 보고합니다.
-
(어려움) 같은 H100 하드웨어 위에서 TensorRT-LLM 추측 디코딩을 벤치마크합니다. vLLM과 비교해 어느 지점에서 이기는지 보고합니다.
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| 드래프트 모델(Draft Model) | "스페큘레이터(Speculator)" | 타깃이 검증할 N개 토큰을 제안하는 작은 모델이다. |
| EAGLE-3 | "2026년 드래프트 아키텍처" | 타깃의 은닉 상태 위에서 학습되는 드래프트 헤드로, 약 75% 수락률을 목표로 한다. |
| P-EAGLE | "병렬 추측(Parallel Speculation)" | 하나의 타깃 패스로 검증되는 드래프트 분기(Branch) 트리이다. |
| 수락률(Acceptance Rate) | "히트율(Hit Rate)" | 재샘플링(Resampling) 없이 수락된 드래프트 토큰의 비율이다. |
| 양자화(Quantization) | "FP8 / INT4" | 더 많은 모델을 GPU 메모리에 담기 위해 가중치(Weight) 정밀도를 낮추는 기법이다. |
| 대기 시간(Queue Wait) | "HPA 메트릭" | 추론(Inference) 시작 전, 요청이 대기 큐(Pending Queue)에서 기다린 시간이다. |
| Speculators 허브 | "정렬된 드래프트" | 자주 쓰이는 오픈 모델용 EAGLE 드래프트를 제공하는 Red Hat Neural Magic 허브이다. |
더 읽을거리