주제 탐구 · 2026-10-19 · 심화
추측 디코딩: 큰 모델을 빠르게 돌리는 법
추측 디코딩은 작은 Draft 모델이 토큰 여러 개를 먼저 써 보고, 큰 Target 모델이 이를 한 번에 병렬로 검증해서 생성 속도를 높이는 기법이다. 수정된 거절 샘플링 덕분에 큰 모델만 썼을 때와 같은 출력 분포를 유지한다.
목차
- LLM은 토큰을 하나씩 순서대로 만든다. 이때 병목은 계산량보다 파라미터를 읽어 오는 메모리 대역폭인 경우가 많아서, 연산 자원이 남는다.
- 추측 디코딩은 남는 연산을 활용한다. 작은 모델이 쓴 초안을 큰 모델이 한 번의 호출로 병렬 채점하고, 맞는 데까지 한꺼번에 받아들인다.
- 수정된 거절 샘플링 덕분에 큰 모델 호출 한 번마다 토큰이 최소 하나는 나오고, 출력 분포는 큰 모델 단독일 때와 같다.
- 원 논문들은 T5-XXL에서 2~3배, Chinchilla 70B에서 2~2.5배 빨라졌다고 보고했다. EAGLE은 토큰 대신 Target의 Hidden Representation을 예측해 LLaMA2-Chat 70B에서 2.7~3.5배를 얻었다.
- 속도 이득은 초안이 큰 모델과 얼마나 맞는지에 달려 있다. 그래서 긴 문맥, 병렬 초안의 정합성, 수락률을 일부러 떨어뜨리는 공격이 최근의 쟁점이다.
왜 필요했나: 한 토큰씩 순서대로 만드는 병목
LLM은 자기회귀 모델이다. 지금까지 나온 토큰을 보고 다음 토큰 하나를 고르고, 그 토큰을 붙여 다시 다음 토큰을 고른다. 추측 디코딩 원 논문논문의 표현대로 토큰 K개를 만들려면 모델을 K번 순서대로 돌려야 한다. 앞 토큰이 정해져야 뒤 토큰을 계산할 수 있으니 이 과정은 병렬로 바꾸기 어렵다.
느린 원인은 계산량보다 메모리 쪽에 있는 경우가 많다. 같은 논문은 대형 모델 추론이 산술 연산보다 메모리 대역폭과 통신에 막히는 일이 많아 연산 자원이 남는다고 관찰했다. DeepMind의 추측 샘플링 연구논문도 토큰 하나를 만들 때마다 모든 파라미터가 가속기 칩을 적어도 한 번은 지나야 한다고 설명한다. 그래서 모델 크기를 전체 메모리 대역폭으로 나눈 값이 자기회귀 생성 속도의 상한이 된다. 모델이 커서 여러 가속기에 나눠 올리면 장치 사이의 통신 지연도 더해진다.
물론 기존 해법도 있었다. 추측 샘플링 연구논문는 int8·int4 양자화와 Distillation이 성능 손실을 거의 내지 않으면서 지연을 줄이는 효과적인 방법이라고 정리한다. 한편 원 논문논문은 쉬운 단계에 연산을 덜 쓰는 적응형 방법들이 대개 모델 구조나 학습 절차를 바꾸고 다시 학습해야 하며, 출력도 똑같이 유지하지 못한다고 지적했다. 추측 디코딩의 목표는 모델도 출력 분포도 그대로 두고 더 빠르게 만드는 것이었다.
일반 디코딩과 추측 디코딩
일반 자기회귀 디코딩한 번에 한 토큰
- 토큰마다 큰 모델을 한 번씩 순서대로 실행
- 메모리 대역폭이 속도 상한을 정함
- 연산 자원이 남는 경우가 많음
추측 디코딩초안 후 병렬 검증
- 작은 모델이 여러 토큰 초안을 씀
- 큰 모델은 한 번의 호출로 병렬 채점
- 수정된 거절 샘플링으로 분포 유지
공통 모델 구조 변경이나 재학습 없이 같은 Target 모델을 쓴다
핵심 아이디어: 빠른 초안, 한 번에 검토
편집장과 손이 빠른 신입 기자를 떠올려 보자. 편집장이 한 글자씩 직접 쓰면 느리다. 그래서 신입이 몇 문장을 먼저 써 오면 편집장은 한 번 훑어보고 맞는 데까지 통과시키고, 처음 어긋난 곳은 직접 고쳐 쓴다. 신입이 잘 맞힐수록 편집장이 한 번 볼 때 많은 문장이 확정된다. 그래도 최종 글은 언제나 편집장의 기준을 따른다.
원 논문논문은 이 발상을 두 가지 관찰에서 끌어냈다. 첫째, 어려운 언어 모델링 과제에도 작은 모델이 잘 근사할 수 있는 쉬운 하위 과제가 섞여 있다. 둘째, 프로세서가 쓰는 추측 실행(speculative execution)을 활용할 수 있다. 추측 실행은 필요할지 확인하는 것과 동시에 일을 먼저 해 두는 기법이고, 분기 예측이 대표적인 예다. 이 논문은 추측 실행을 '어떤 일이 확률적으로만 필요한' 상황으로 넓혀 언어 모델 디코딩에 적용했다.
이 방법이 통하는 이유는 추측 샘플링 연구논문가 짚은 관찰에 있다. 작은 모델이 만든 짧은 이어쓰기 여러 토큰을 큰 모델이 병렬로 채점하는 시간은 큰 모델에서 토큰 하나를 뽑는 시간과 비슷하다. 어차피 파라미터를 한 번 읽어 와야 한다면, 그 한 번에 여러 위치를 함께 계산하는 편이 남는 연산을 쓰는 길이다.
어떻게 작동하나: 초안 → 병렬 검증 → 수락·보정
한 라운드는 네 단계로 돌아간다. 첫째, 작고 빠른 Draft 모델이 평소처럼 자기회귀 방식으로 토큰 γ개를 이어 쓴다. 둘째, 큰 Target 모델이 이 초안을 한 번의 호출로 읽고, 초안의 각 위치에서 자신이라면 어떤 확률을 줬을지 한꺼번에 계산한다. 셋째, 초안 토큰을 왼쪽부터 하나씩 판정한다. Target이 그 토큰을 Draft와 같거나 더 높게 평가하면 그대로 받아들이고, 더 낮게 평가하면 두 확률의 비율만큼의 확률로만 받아들인다. 넷째, 처음 거절된 자리에서는 조정된 분포에서 토큰을 새로 뽑아 고치고 그 뒤의 초안은 버린다. 초안이 모두 수락되면 Target이 이미 계산해 둔 확률로 토큰 하나를 더 붙인다.
이 설계에서 두 가지가 보장된다. 먼저 Target을 한 번 호출할 때마다 새 토큰이 최소 하나, 최대 γ+1개 나온다. 그래서 최악의 경우에도 Target을 순서대로 돌리는 횟수가 일반 자기회귀 방식보다 많아지지 않는다논문. 다음으로, 수정된 거절 샘플링 덕분에 최종 출력 분포가 Target만 썼을 때와 같다. 추측 샘플링 연구논문는 이를 '하드웨어 수치 오차 범위 안에서' 보존된다고 표현한다. 원 논문은 argmax, top-k, nucleus, temperature 같은 여러 샘플링 방식도 조정된 확률분포에서 뽑는 표준 샘플링으로 바꿔 쓸 수 있으므로, 같은 틀에서 처리된다고 설명한다.
원 논문의 예시에서는 6M 파라미터 Draft 모델이 97M 파라미터 Target 모델을 도왔다. 그 결과 38개 토큰짜리 문장을 Target을 9번만 순서대로 돌려 만들었고, 그 문장이 나올 확률은 바뀌지 않았다. 속도 이득은 Draft가 Target을 얼마나 잘 근사하는지(수락률)와 초안 길이 γ를 어떻게 고르는지에 달려 있다.
발전 흐름: 별도 작은 모델에서 내부 특징 예측까지
Google Research의 추측 디코딩 원 논문논문은 추측 실행을 확률적 상황으로 넓힌 '추측 샘플링'과, 이를 쓴 디코딩 방식을 제안했다. 모델 구조, 학습 방식, 출력 분포를 모두 그대로 둔다는 점이 핵심이다. 11B 파라미터 T5-XXL로 번역과 요약을 실행했을 때 T5X 구현보다 실제 걸린 시간이 2~3배 줄었고 출력은 같았다. 137B 파라미터 LaMDA의 대화 과제도 분석에 포함했다.
DeepMind의 추측 샘플링 연구논문는 이 작업과 같은 시기에 독립적으로 나왔고, 스스로 핵심 아이디어가 같다고 밝혔다. 차이는 수백억 파라미터 모델을 여러 가속기에 나눠 서빙하는 분산 환경에 초점을 맞췄다는 점이다. 70B 파라미터 Chinchilla에서 디코딩이 2~2.5배 빨라졌고 샘플 품질은 그대로였다. 평균 초당 토큰 수가 메모리 대역폭이 정하는 자기회귀 생성 속도의 이론적 상한을 넘는 경우도 많았다고 보고했다.
EAGLE논문은 무엇을 예측하느냐를 바꿨다. 토큰 단위로 다음을 맞히기보다 Target 모델의 끝에서 두 번째 층 특징(Hidden Representation)을 자기회귀로 예측하는 편이 더 단순하다는 관찰에서 출발했다. 다만 특징 수준 예측에는 고유한 불확실성이 있어 성능이 묶인다고 보았다. 그래서 한 시점 앞선 토큰 시퀀스를 함께 넣어 이 불확실성을 풀었다. Vicuna와 LLaMA2-Chat 계열, MoE 모델인 Mixtral 8x7B Instruct에서 대화, 코드, 수학 추론, 지시 수행을 평가했다. LLaMA2-Chat 70B에서는 지연이 2.7~3.5배 개선되고 처리량은 두 배가 되었으며, 생성 분포는 유지됐다.
출발점 연구들이 보고한 속도 향상
요즘 어디로 가고 있나: 병렬 초안과 긴 문맥
최근에는 초안을 만드는 시간 자체를 줄이려는 흐름이 있다. 병렬 초안 보정 연구 DCOCO논문에 따르면 디퓨전 기반 Drafter는 미래 여러 위치를 동시에 예측해서 자기회귀 초안 생성의 순차 비용을 피한다. 대신 한 블록 안의 토큰들이 바로 앞 초안 토큰이 실제로 무엇인지 모른 채 예측되므로, 토큰 사이의 의존 관계가 사라진다. DCOCO는 위치마다 1순위 하나로 확정하지 않고 후보 여러 개를 남긴 다음, 이웃 위치끼리 문맥상 어울리는지를 병렬로 평가해서 고른다. 네 가지 검증 모델과 열 개 벤치마크에서 일반 디코딩보다 최대 6.6배 빨랐다. 동시 요청 4~32개를 처리하는 서빙 환경에서도 가장 강한 비교 방법보다 6~23% 앞섰다고 보고했다.
다른 흐름은 긴 문맥이다. FOLD논문는 입력이 길수록 추측 디코딩이 특히 유망하다고 본다. KV 캐시를 읽는 비용을 수락된 여러 토큰이 나눠 지기 때문이다. 문제는 대부분의 Drafter가 짧은 시퀀스로 학습되어 긴 입력에서 성능이 떨어지고, 긴 문맥으로 다시 학습하기는 비싸다는 점이다. FOLD는 추가 학습 없이 가까운 토큰의 위치는 정확히 유지하고, 먼 토큰들은 같은 위치를 공유하는 '먼 기억'으로 다룬다. 기억이 커질수록 어텐션이 흩어지는 문제는 기억 안의 어텐션을 날카롭게 만들고, 기억 전체에 주는 비중을 따로 조절해서 막는다. 최대 256K 토큰 벤치마크와 여섯 가지 Target·Drafter 조합에서 대체로 가장 높은 속도 향상을 냈다. 가장 좋은 경우 자기회귀 대비 속도 향상이 2.08배에서 4.22배로 커졌다.
두 연구는 같은 질문을 서로 다른 쪽에서 다룬다. 초안이 Target과 얼마나 잘 맞는지(수락률)를 지키면서 초안 비용을 줄일 수 있는가 하는 질문이다. DCOCO는 병렬화로 잃은 정합성을 되찾는 데, FOLD는 긴 입력에서 떨어지는 초안 품질을 학습 없이 지키는 데 초점을 둔다.
한계와 쟁점
첫째, 이득은 조건에 따라 달라진다. 원 논문논문은 메모리 대역폭이 병목이고 연산 자원이 남는 흔한 상황에서 추측 디코딩이 좋은 기본값이 될 수 있다고 썼다. 바꿔 말하면 연산 여유가 없는 환경에서는 병렬 검증에 쓸 자원이 부족해 이득이 줄 수 있다. 또 Target 호출 한 번에 몇 토큰을 얻느냐는 Draft가 Target을 얼마나 잘 근사하느냐에 좌우된다. FOLD논문가 지적했듯 짧은 시퀀스로 학습한 Drafter는 긴 입력에서 성능이 떨어진다.
둘째, '출력이 같다'는 말의 범위를 정확히 이해해야 한다. 원래 방식은 수정된 거절 샘플링으로 Target의 분포를 그대로 보존한다. 추측 샘플링 연구논문는 이를 하드웨어 수치 오차 범위 안에서의 보존이라고 밝혔다. 분포가 같다는 것은 결과를 확률적으로 구별할 수 없다는 뜻이다. 같은 시드로 바이트 단위까지 똑같은 문장이 나온다는 보장으로 받아들이면 안 된다.
셋째, 보안 쪽 쟁점이 새로 드러났다. Speedbumps논문는 '추측 거절 공격'을 제시했다. 공격자가 통제하는 콘텐츠에 적대적 접미사를 붙여 Draft와 Target이 더 자주 엇갈리게 만드는 공격이다. 그러면 라운드마다 수락되는 토큰이 줄고, 토큰 하나를 만드는 데 Target 호출이 더 많이 필요해져 피해자의 속도는 느려지고 비용은 늘어난다. 일부 경우에는 일반 자기회귀 디코딩보다 느려졌다. 출력 품질도 함께 떨어졌는데, 정규화로 품질을 되살리면 지연 효과의 대부분을 잃어 효과와 은밀성 사이에 맞교환이 생긴다고 보고했다. 접미사는 샘플링 환경에서도 통했고 다른 Drafter나 같은 Drafter를 쓰는 다른 Target으로도 옮겨 갔다. 속도를 운영 지표로 삼는 서비스라면 수락률 감시도 함께 고려할 만하다.
더 공부하려면
출발점은 원 논문 추측 디코딩논문이다. 2장의 개요와 '표준화된 샘플링' 설명을 읽으면 왜 출력 분포가 바뀌지 않는지, 왜 Target 호출 한 번에 최소 한 토큰이 보장되는지가 분명해진다. 같은 시기에 나온 추측 샘플링논문은 알고리즘을 의사 코드로 정리해 두었고, 메모리 대역폭이 속도 상한을 정한다는 설명이 자세해서 함께 읽으면 좋다.
그다음에는 EAGLE논문로 넘어가 토큰 대신 Target의 Hidden Representation을 예측하는 발상을 보면 된다. 이후 많은 변형이 'Drafter가 Target의 어떤 정보를 읽느냐'를 바꾸는 방향으로 나왔다는 점을 염두에 두고 읽으면 흐름이 잘 보인다.
최근 방향을 보려면 병렬 초안의 정합성을 다룬 DCOCO논문, 긴 문맥 초안을 다룬 FOLD논문, 보안 위협을 다룬 Speedbumps논문를 차례로 읽기를 권한다. 앞의 두 편은 수락률을 지키며 속도를 높이는 방법이고, 마지막 편은 그 수락률이 공격 대상이 될 수 있음을 보여 준다.
관련 용어
자기회귀 모델 KV 캐시 추론(인퍼런스) 처리량(토큰/초) 양자화 Distillation 모델 서빙 추론 엔진
참고 문헌
핵심 논문
- Fast Inference from Transformers via Speculative Decoding (2022)
- Accelerating Large Language Model Decoding with Speculative Sampling (2023)
- EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty (2024)
최근 연구
AI가 참고 문헌을 바탕으로 작성하고 검수를 거친 해설입니다. 정확한 내용은 원문을 확인해 주세요.