AI VIDEO BRIEFING
추측 디코딩(Speculative Decoding) 완전 정리: 3배 빠른 LLM 추론의 원리와 선택 기준
작은 초안 모델이 토큰을 미리 찍고 큰 타깃 모델이 한 번의 순전파로 검증하는 추측 디코딩. 출력 품질이 수학적으로 보존되는 이유와 세 가지 구현 방식, 그리고 오히려 쓰지 말아야 할 상황까지 정리했다.

핵심 메시지
쉽게 이해하기
일반적인 자기회귀 디코딩은 도미노와 같다. 세 번째 토큰은 첫째와 둘째가 끝나야 나올 수 있고, 토큰 하나를 뽑을 때마다 신경망 전체를 한 번 통과한다. 토큰당 50밀리초라면 100토큰짜리 답변에 5초를 기다려야 한다는 뜻이다. 그런데 그 토큰들 대부분은 사실 쉬워서, '프랑스의 수도는' 뒤에는 아주 작은 모델도 곧바로 '파리'를 내놓는다.
무거운 네트워크가 정말 필요한 지점은 양자 얽힘을 설명하는 것 같은 어려운 구간뿐이다. 그래서 절차를 셋으로 나눈다. 초안 모델이 앞서 달려 다섯 개 토큰을 제안하고, 타깃 모델이 한 번의 순전파로 그 다섯 개를 한꺼번에 검증하며, 맞은 토큰은 그대로 채택하고 틀린 지점만 다시 생성한다. 다섯 개가 모두 맞으면 큰 모델을 한 번 돌린 비용으로 다섯 칸을 전진하는 셈이다.
품질이 유지되는 이유는 수용·거절 절차에 있다. 초안 토큰마다 타깃 모델이 그 토큰에 부여한 확률을 기준으로 수용 여부를 정하고, 거절되면 타깃 모델의 분포에서 다시 샘플링한다. 이 과정이 결과적으로 타깃 모델에서 직접 샘플링한 것과 같은 분포를 보장하기 때문에 무손실이라고 부른다.
구현 방식은 세 가지로 갈린다. 고전적인 방식은 7B급 초안 모델과 70B급 타깃 모델을 짝지어 쓰는 것으로, 학습이 전혀 필요 없는 대신 메모리를 많이 쓴다. 자기 추측은 모델이 스스로 초안을 만드는 방식인데, LayerSkip은 앞쪽 열두 개 층만 반복해 돌려 초안을 뽑고 가끔 전체 깊이로 검증하며 EAGLE은 약 1억 파라미터짜리 예측 모듈을 학습시켜 고정된 본체의 은닉 상태를 읽고 토큰을 제안한다. 세 번째인 Medusa는 하나의 은닉 상태 위에 여러 예측 헤드를 얹어 t+1, t+2, t+3을 동시에 예측하고, 그렇게 만들어진 후보 트리를 트리 어텐션으로 한 번에 검증한다.
숫자로 보면 선택 기준이 분명해진다. 별도 초안 모델은 수용률 70~80%에 2~2.5배, 자기 추측은 수용률 75~85%에 최대 3배, Medusa는 수용률 60~70%에 2~2.5배다. 메모리는 자기 추측이 가장 가볍고 Medusa는 헤드 추가로 약 2%만 더 쓰며, 학습 부담은 초안 모델 방식이 0, Medusa가 GPU 몇 시간 수준이다.
주요 인사이트
- 수용률은 작업 성격을 그대로 반영한다. 영상에 따르면 코드 생성은 패턴이 예측 가능해 약 80%, 대화는 약 70%, 창작 글쓰기는 약 60%로 떨어진다. 시가 파이썬보다 예측하기 어렵다는 것이다.
- Medusa 사례로 제시된 수치는 비쿠나(Vicuna) 33B에서 토큰당 100밀리초가 43밀리초로 줄어든 2.3배 개선이다. 헤드 서너 개로 후보 노드 열 개 남짓을 한 번에 평가하는 구조에서 나온 결과다.
- 도입 자체는 어렵지 않다. 허깅페이스에서는 타깃 모델과 초안 모델을 함께 올린 뒤 generate 호출에 assistant_model 인자 하나를 더하면 되고, vLLM에서는 샘플링 설정과 함께 초안 체크포인트를 지정하는 파라미터만 넘기면 나머지는 프레임워크가 처리한다.
- 쓰지 말아야 할 상황을 아는 것이 더 중요하다. 대형 배치로 GPU가 이미 꽉 찬 서빙 환경, 20토큰 미만의 짧은 응답, 창의적이고 예측 불가능한 출력, 추가 모델을 올릴 메모리 여유가 없는 경우에는 이득이 크지 않다.
- 다음 단계로는 예측 성공률에 따라 초안 길이를 실시간으로 조절하는 적응형 추측, 7B에서 곧장 70B로 가지 않고 중간 규모를 거치는 계단식 검증, 전문가 혼합 라우팅과의 결합이 거론된다.
자주 묻는 질문
추측 디코딩을 쓰면 답변 내용이 달라지나요?
달라지지 않습니다. 검증을 타깃 모델이 직접 수행하고, 거절된 토큰은 타깃 모델의 분포에서 다시 샘플링하기 때문에 결과가 일반 디코딩과 수학적으로 동일한 분포를 따릅니다.
초안 모델을 따로 띄울 메모리가 없으면 방법이 없나요?
자기 추측 방식이 대안입니다. LayerSkip처럼 본체의 앞쪽 층만 돌려 초안을 만들거나, EAGLE처럼 1억 파라미터 규모의 작은 예측 모듈만 추가하면 메모리 사용량을 두 배로 늘리지 않고도 2.5~3배 가속을 얻을 수 있습니다.
어떤 서비스에 가장 잘 맞나요?
배치가 작고 사용자가 화면 앞에서 응답을 기다리는 실시간 서비스, 코드나 문서처럼 출력이 길고 지연이 체감되는 작업, 그리고 프로그래밍이나 데이터 추출처럼 형식이 정해진 예측 가능한 도메인입니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗