프로덕션의 EAGLE-3 추측 디코딩

추측 디코딩(Speculative decoding)은 빠른 초안 모델(draft model)과 대상 모델(target model)을 짝지어 동작합니다. 초안 모델이 K개의 토큰을 제안하면, 대상 모델은 단 한 번의 순방향 패스(forward pass)로 이를 검증하고, 받아들여진 토큰(accepted token)은 사실상 공짜로 얻게 됩니다. 2026년 기준 EAGLE-3는 프로덕션 등급 변형으로 자리 잡았습니다. EAGLE-3는 원시 토큰(raw token)이 아니라 대상 모델의 은닉 상태(hidden state) 위에서 초안 헤드(draft head)를 학습시키기 때문에, 일반 채팅(general chat) 트래픽에서 수용률(acceptance rate; alpha)을 0.6-0.8 구간까지 끌어올립니다. 올바른 질문은 "초안이 얼마나 빠른가"가 아니라 "내 트래픽에서 alpha가 얼마인가"입니다. alpha가 약 0.55 아래로 떨어지면, 높은 동시성(high concurrency) 상황에서는 거절된 초안(rejected draft)마다 두 번째 대상 순방향 패스가 필요해지기 때문에 추측 디코딩이 오히려 순손실이 됩니다. 이 lesson은 먼저 alpha를 측정하고 그다음에 플래그를 켜는 순서를 가르칩니다.

유형: Learn 언어: Python (표준 라이브러리, 수용률 시뮬레이터 장난감 코드) 선수 지식: Phase 17 · 04(vLLM Serving Internals), Phase 10 · 18(Multi-Token Prediction) 예상 시간: 약 60분

학습 목표

  • 추측 디코딩의 세 세대를 이름 짓고, EAGLE-3가 EAGLE-2 및 고전적인 초안 모델 방식과 어떤 점에서 다른지 설명할 수 있습니다.
  • 수용률 alpha를 정의하고, alpha와 초안 길이(draft length; K)로부터 기대 가속(expected speedup)을 계산하며, 목표 동시성에서의 손익분기 alpha(break-even alpha)를 찾을 수 있습니다.
  • 2026년 vLLM에서 추측 디코딩이 기본값이 아니라 선택적 활성화(opt-in)인 이유, 그리고 alpha를 측정하지 않고 켜는 것이 왜 프로덕션 안티패턴(anti-pattern)인지 설명할 수 있습니다.
  • 측정 계획을 작성할 수 있습니다. 어떤 벤치마크(benchmark), 어떤 프롬프트 분포(prompt distribution), 어떤 동시성 지점, 어떤 지표(metric)로 통과 여부(gate)를 판단할지 정합니다.

문제

디코딩은 메모리 대역폭에 묶이는(memory-bound) 작업입니다. H100에서 Llama 3.3 70B FP8을 실행하면, 디코딩된 토큰 하나마다 약 140GB/s의 가중치(weight)를 읽어 들이고 토큰 하나를 내놓습니다. 디코딩 도중 GPU의 연산 자원(compute)은 거의 놀고 있습니다. 병목은 행렬 곱셈(matrix multiplication) 처리량이 아니라 HBM 대역폭(HBM bandwidth)이기 때문입니다.

추측 디코딩은 바로 이 간극을 이용합니다. 저렴한 초안 모델로 K개의 후보 토큰(candidate token)을 만들고, 대상 모델에게는 단 한 번의 순방향 패스에서 K개 전체를 검증하게 합니다. 검증을 통과한 토큰은 사실상 공짜입니다. 어차피 대상 모델이 수행해야 했던 K개 묶음(batch-of-K) 순방향 패스 안에 비용이 분산(amortize)되기 때문입니다.

고전적인 초안 모델 접근은 같은 계열의 더 작은 모델을 사용합니다. 예를 들어 Llama 3.3 70B를 위해 Llama 3.2 1B가 초안을 작성하는 식입니다. 이 방식도 동작하긴 하지만 수용률은 보통 수준에 머무릅니다. 작은 모델의 출력 분포(distribution)가 대상 모델과 벌어지기 때문입니다. EAGLE, EAGLE-2, EAGLE-3는 대상 모델의 내부 상태 위에서 직접 가벼운 초안 헤드를 학습시키기 때문에 초안의 분포가 대상 모델을 훨씬 더 가깝게 따라갑니다. 그래서 초안 모델 방식에서 alpha 0.4 수준이던 값이 EAGLE-3에서는 0.6-0.8까지 올라갑니다.

함정은 EAGLE-3가 2026년 vLLM에서 선택적 활성화 기능이라는 점입니다. speculative_config를 명시적으로 설정해야만 동작합니다. 플래그가 없으면 가속도 없습니다. 실제 트래픽에서 alpha를 측정하지 않은 채 켠 팀들은 평균이 아니라 꼬리 지연 시간(tail latency)이 오히려 나빠지는 사례를 종종 마주합니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.추측 디코딩(speculative decoding)에서 수용률 alpha가 측정하는 것은 무엇이며, 왜 가장 중요한 단일 지표인가요?

2.EAGLE-3가 고전적인 초안 모델(draft model) 접근 방식과 어떻게 다른가요?

0/2 답변 완료

개념

추측 디코딩이 실제로 얻어 주는 것

추측 디코딩이 없을 때 토큰당 비용은 대상 모델의 순방향 패스 한 번입니다. 초안 길이 K와 수용률 alpha를 갖춘 추측 디코딩에서는, 대상 순방향 패스 한 번당 기대 토큰 수가 1 + K * alpha가 됩니다. 가속은 (1 + K * alpha) / (1 + epsilon)이며, 여기서 epsilon은 초안 생성과 검증을 합친 추가 비용(verify overhead)을 뜻합니다. K=5, alpha=0.7이면 (1 + 5*0.7) / (1 + 0.1) = 4.5 / 1.1 = 4.1x가 됩니다. 실제 현장의 숫자는 보통 2-3x 부근에 모입니다. 프로덕션 트래픽에서 alpha가 그렇게 높지 않은 경우가 많고, 배치 크기(batch size)가 커지면 epsilon도 함께 커지기 때문입니다.

왜 alpha가 유일하게 중요한 지표인가

거절된 토큰(rejected token)은 그냥 사라지지 않습니다. 처음 거절된 토큰을 다시 만들기 위해 두 번째 대상 순방향 패스를 강제로 발생시킵니다. alpha가 0.4까지 떨어지는 워크로드(workload)에서는 초안 비용, 검증 비용, 재시도(reroll) 비용을 모두 부담하게 됩니다. 높은 동시성, 예를 들어 동시 요청 256건 같은 상황에서는 디코딩 배치(decode batch)가 이미 충분히 커서 "대상 모델만 돌릴 때"와 "대상 모델에 검증을 더할 때" 사이의 메모리 대역폭 격차가 줄어듭니다. 2026년 대부분의 하드웨어에서 alpha가 0.55 아래라면 추측 디코딩은 순손실로 돌아섭니다.

alpha는 워크로드마다 다릅니다. ShareGPT 스타일의 일반 채팅 트래픽에서는 ShareGPT로 학습한 EAGLE-3가 0.6-0.8을 냅니다. 도메인 특화 트래픽(코드, 의료, 법률 등)에서는 일반 데이터로 학습한 초안 헤드가 0.4-0.6 수준으로 떨어집니다. 도메인 특화 초안 헤드를 따로 학습시키면 alpha를 회복할 수 있습니다. 이는 대상 모델 파인튜닝(target finetuning)에 비하면 훨씬 가볍고 빠른 학습 작업입니다.

EAGLE 세대 한눈에 보기

  • 고전적인 초안 모델(Classic draft model): 같은 계열의 작은 모델을 그대로 씁니다. alpha는 0.3-0.5입니다. 인프라는 단순합니다. 모델 두 개를 메모리에 올리고, 대상 모델의 순방향 한 번마다 초안 모델이 K번 순방향을 수행합니다.
  • EAGLE-1 (2024): 대상 모델의 은닉 상태, 특히 마지막 층(layer) 위에서 학습한 단일 초안 헤드입니다. alpha는 약 0.5-0.6입니다. 대상 모델 위에 가벼운 파라미터 오버헤드(parameter overhead)만 추가됩니다.
  • EAGLE-2 (2025): 적응형 초안 길이(adaptive draft length)와 트리 기반 초안(tree-based draft)을 도입합니다. 한 번의 대상 순방향 패스 안에서 여러 분기(branch)를 함께 검증합니다. alpha는 약 0.6-0.7입니다. 초안 스케줄러(draft scheduler)가 더 복잡해집니다.
  • EAGLE-3 (2025-2026): 마지막 층 하나만이 아니라 여러 대상 층 위에서 초안 헤드를 학습시킵니다. 정렬(alignment)이 더 좋아져서, 일반 채팅 기준 alpha가 약 0.6-0.8까지 올라갑니다.

2026년 프로덕션 레시피

  1. 대상 모델을 추측 디코딩 없이 그대로 배포합니다. 목표 동시성에서 기준선(baseline)이 되는 TTFT, ITL, 처리량(throughput)을 측정합니다.
  2. vLLM speculative_config를 통해 EAGLE-3 초안을 활성화합니다. 같은 벤치마크를 다시 돌립니다.
  3. 수용률 alpha를 기록합니다. vLLM V1은 이를 spec_decode_metrics.accepted_tokens_per_request로 보고합니다. 이 값을 요청한 초안 길이로 나누면 alpha가 됩니다.
  4. 프로덕션 트래픽 분포에서 alpha가 0.55 미만이라면, 추측 디코딩을 끄거나 도메인 특화 EAGLE-3 초안을 따로 학습시킵니다.
  5. 프로덕션 동시성에서 다시 실행해 P99 ITL이 악화되지 않았는지 확인합니다.

프로덕션 함정: P99 꼬리

추측 디코딩을 켜면 평균 ITL은 떨어집니다. 그러나 별도의 튜닝이 없으면 P99는 오히려 나빠질 수 있습니다. 거절된 초안은 "초안 생성 + 검증 실패 + 재시도"라는 두 단계 시퀀스(two-pass sequence)를 만들기 때문입니다. 배치가 가득 찬 상태에서는 이 두 단계가 직렬화(serialize)됩니다. 그래서 P50이 아니라 P99 ITL을 살펴봐야 합니다.

EAGLE-3가 이미 배포된 곳

구글(Google)은 2025년 AI Overviews에 추측 디코딩을 적용했습니다. 같은 품질을 유지하면서 응답 속도를 끌어올리는 방식이었습니다. vLLM V1은 문서화된 인터페이스로 speculative_config를 제공합니다. V1의 N-gram GPU 추측 디코딩(N-gram GPU speculative decoding)은 청크 프리필(chunked prefill)과 호환되는 변형입니다. SGLang은 프리픽스가 무거운 워크로드(prefix-heavy workload)를 위한 권장 초안 경로로 EAGLE-3를 지원합니다.

한 줄로 보는 손익분기 수식

기대 가속은 S(alpha, K) = (1 + K*alpha) / (1 + verify_overhead)입니다. S = 1로 두고 alpha에 대해 풀면 alpha_breakeven = verify_overhead / K가 됩니다. 일반적으로 verify_overhead가 약 0.15, K=5라면 alpha_breakeven = 0.03입니다. 다만 이것은 순수한 디코딩 수학입니다. 동시성이 높아지면 검증 추가 비용이 커지고, 디코딩 배치가 이미 여러 시퀀스에 걸쳐 메모리 읽기를 분산시키고 있기 때문에, 실무에서 유효 손익분기 alpha는 약 0.45-0.55까지 올라갑니다.

추측 디코딩을 쓰지 말아야 할 때

  • 지연 시간이 중요하지 않은 배치 크기 1(batch-1)의 오프라인 생성. 추측 디코딩 없이 대상 모델만 사용하세요.
  • 매우 짧은 출력, 즉 50 토큰 미만의 응답. 초안 비용과 검증 비용이 전체를 지배합니다.
  • 도메인 학습된 초안 헤드가 없는 전문 도메인. alpha가 너무 낮습니다.
  • vLLM v0.18.0에서 초안 모델 추측 디코딩과 --enable-chunked-prefill을 함께 쓰는 조합. 이 조합은 컴파일되지 않습니다. 문서화된 예외는 V1의 N-gram GPU 추측 디코딩뿐입니다.

사용해보기

code/main.py는 다양한 alpha 값과 초안 길이 K 조합에 대해, 추측 디코딩을 켠 디코딩 루프(decode loop)와 끈 디코딩 루프를 시뮬레이션합니다. 손익분기 alpha, 측정된 가속, 꼬리 거동(tail behavior)을 출력해 줍니다. 여러 (alpha, K) 조합으로 실행해 보면 추측 디코딩이 어느 지점부터 비용을 회수하지 못하는지 명확하게 확인할 수 있습니다.

산출물 만들기

이 lesson은 outputs/skill-eagle3-rollout.md를 만듭니다. 대상 모델, 트래픽 분포 설명, 목표 동시성을 입력하면 단계적인 EAGLE-3 배포 계획(rollout plan)을 산출합니다. 기준 벤치마크, 설정 활성화, alpha 측정, alpha >= 0.55 게이트, P99 ITL 감시까지 포함합니다.

연습문제

  1. 쉬움: code/main.py를 실행하세요. K=5에서 2배 가속을 얻으려면 어느 정도의 alpha가 필요합니까? 3배 가속에는 어떻습니까? 이 값은 verify_overhead에 얼마나 민감하게 반응합니까?
  2. 중간: 프로덕션 트래픽이 일반 채팅 70%, 코드 30%로 나뉜다고 가정합니다. ShareGPT로 학습한 EAGLE-3가 일반 채팅에서는 alpha 0.7, 코드에서는 alpha 0.4를 낸다면, 가중 평균 alpha(blended alpha)는 얼마이며 추측 디코딩이 순이익이라고 볼 수 있습니까?
  3. 중간: vLLM speculative_config 문서를 읽어 보세요. 세 가지 모드(초안 모델, EAGLE, N-gram)를 이름 짓고, 그중 어느 것이 청크 프리필과 호환되는지 답하세요.
  4. 어려움: EAGLE-3를 켠 뒤 평균 ITL은 25% 줄었지만 P99 ITL은 15% 올라갔습니다. 원인을 진단하고 완화책을 제안하세요.
  5. 어려움: Llama 3.3 70B용 EAGLE-3 초안 헤드의 메모리 비용을 계산해 보세요. 고전적인 초안 모델로 Llama 3.2 1B를 함께 띄우는 비용과 어떻게 비교됩니까?

핵심 용어

용어흔한 설명실제 의미
추측 디코딩(Speculative decoding)"초안 생성 후 검증(draft plus verify)"저렴한 모델이 K개의 토큰을 제안하고, 한 번의 대상 순방향 패스로 모두 검증하는 방식
수용률 alpha(Acceptance rate alpha)"스펙 수용률(spec accept rate)"대상 모델이 받아들인 초안 토큰의 비율. 추측 디코딩에서 가장 중요한 단일 지표
초안 길이 K(Draft length K)"스펙 K(spec k)"대상 순방향 패스마다 초안이 제안하는 토큰 수. 보통 4-8
검증 오버헤드 epsilon(Verify overhead epsilon)"스펙 오버헤드(spec overhead)"일반 대상 순방향 대비 검증과 재시도에 드는 추가 비용. 배치가 커질수록 함께 커짐
EAGLE-3"최신 EAGLE"여러 대상 층 위에서 초안 헤드를 학습시키는 2025-2026 변형. 일반 채팅에서 alpha 0.6-0.8
speculative_config"vLLM 스펙 설정(vLLM spec config)"vLLM V1의 명시적 활성화 지점. 기본값이 없으므로 켜지 않으면 가속도 없음
N-gram 추측 디코딩(N-gram spec decode)"N-gram 초안(N-gram draft)"프롬프트 안의 N-gram 조회를 사용하는 GPU 측 초안 방식. 청크 프리필과 호환
손익분기 alpha(Break-even alpha)"무효 alpha(no-op alpha)"추측 디코딩의 가속이 0이 되는 alpha. 프로덕션 동시성에서 반드시 확인해야 함
거절 초안 두 단계 패스(Rejected-draft two-pass)"재시도 비용(reroll cost)"초안이 거절될 때 대상 순방향 패스가 두 번 필요해지는 상황. P99 꼬리를 키움

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

eagle3-rollout

Produce a staged EAGLE-3 speculative-decoding rollout plan that measures acceptance rate alpha on real traffic before shipping.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.팀이 EAGLE-3를 켠 후 평균 ITL은 25% 줄었지만 P99 ITL은 15% 올라갔습니다. 가능성 높은 원인은 무엇인가요?

2.초안 길이 K=5, 검증 오버헤드 epsilon=0.1일 때, 2배 가속을 얻으려면 수용률 alpha가 얼마여야 하나요?

3.프로덕션에서 추측 디코딩을 사용하지 말아야 할 때는 언제인가요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다