1. Introduction: 왜 I/O 호출 횟수가 문제인가?
거대 언어 모델(LLM)의 자기회귀(Autoregressive) 디코딩은 매 스텝마다 단 하나의 토큰을 생성합니다. 문제는 이 하나의 토큰을 얻기 위해 수십 GB에 달하는 Target Model의 가중치(Weights) 전체를 느린 DRAM에서 연산기(SRAM/Core)로 매번 끌고 와야 한다는 점입니다.
디바이스의 메모리 대역폭(Memory Bandwidth)이 초당 100GB/s이고 모델 크기가 50GB라면, 토큰 하나를 생성하는 데 무조건 최소 0.5초의 물리적 시간이 소요됩니다. 연산기가 아무리 빠르더라도 메모리에서 데이터를 가져오는 속도에 갇혀버리는 전형적인 Memory-bound 상태입니다. Speculative Decoding은 이 거대한 가중치를 메모리에서 불러오는 횟수 자체를 획기적으로 줄이는 알고리즘적 우회로입니다.
2. 핵심 아키텍처: Draft-then-Verify (초안 작성 후 검증)
이 기술은 크기가 서로 다른 두 개의 모델을 병렬로 활용하여 I/O 비용을 최소화합니다.
2.1. Drafting (초안 생성)
- Draft Model (보조 모델): Target 모델보다 파라미터 수가 훨씬 적고(예: 1/10 크기) 속도가 빠른 모델입니다.
- 이 모델은 메모리에 올리기 가볍기 때문에, 빠르게 개의 토큰을 연속으로 추측(Speculation)하여 생성합니다.
2.2. Verification (병렬 검증)
- Target Model (메인 모델): 거대한 크기를 가진 원래의 고성능 모델입니다.
- Target 모델은 Draft 모델이 생성한 개의 토큰을 입력으로 받아, 시퀀스를 한 번에 처리하는 단 한 번의 Forward Pass(병렬 연산) 로 검증을 수행합니다.
- 즉, 가중치를 DRAM에서 한 번만 읽어와서 여러 토큰을 동시에 검사합니다.
3. 수학적 무손실 보장 (Lossless Guarantee)
Draft 모델은 크기가 작아 성능이 떨어집니다. 그렇다면 이 방법이 어떻게 Target 모델이 단독으로 생성한 것과 수학적으로 완벽히 동일한 결과 분포(Exact Same Distribution) 를 보장할 수 있을까요? 핵심은 기각 샘플링(Rejection Sampling) 을 응용한 수락 확률(Acceptance Probability)에 있습니다.
특정 위치의 토큰 에 대해, Target 모델의 확률 분포를 , Draft 모델의 확률 분포를 라고 합시다. Draft 모델이 예측한 토큰 를 Target 모델이 수락할 확률 는 다음과 같이 정의됩니다.
동작 원리 분석:
- 인 경우: Target 모델도 해당 토큰을 높게 평가한다는 뜻이므로, 이 되어 100% 수락(Accept) 합니다.
- 인 경우: Draft 모델이 과대평가한 토큰입니다. 이 경우 의 확률로 수락 여부를 결정(동전 던지기)합니다.
- 거절(Reject) 발생 시: 즉시 검증을 중단하고, Target 모델은 남은 확률 분포 에 비례하여 올바른 토큰을 **재샘플링(Resampling)**하여 정정합니다.
이 엄밀한 검증 로직 덕분에, 최종 출력 토큰의 분포는 항상 Target 모델의 분포 와 완벽하게 일치하게 됩니다.
4. 성능 최적화의 수학적 기댓값 (Expected Speedup)
Speculative Decoding의 효율성은 Draft 모델의 적중률(Hit Rate)에 달려 있습니다. 단 한 번의 Target Model 메모리 접근(1 Step)으로 얻을 수 있는 평균 생성 토큰 수, 즉 기댓값 는 다음과 같습니다. (수락 확률을 평균적으로 라고 가정)
- 해석: 개의 토큰이 모두 수락되면, 마지막 토큰 예측 결과 1개를 보너스로 얻어 총 개의 토큰을 단 한 번의 I/O만으로 생성합니다.
- Trade-off: 가 너무 낮으면(Draft 모델이 멍청하면) 토큰이 줄줄이 거절당해 오히려 Draft 모델을 돌린 연산 오버헤드만 커집니다. 반면 를 높이기 위해 Draft 모델 크기를 키우면 Drafting 시간 자체가 길어집니다. 따라서 최적의 Draft 모델 크기와 값을 찾는 것이 시스템 엔지니어링의 핵심입니다.
5. System Impact: Edge 환경에서의 시너지
Token-level Sparsity와 결합할 때, Speculative Decoding은 Edge 디바이스에서 한계를 뛰어넘는 성능을 냅니다.
- DRAM 병목 우회: 제한된 대역폭 환경에서 무거운 가중치를 부르는 횟수를 수준으로 감소시킵니다.
- 병렬 연산기 극대화: Edge NPU/GPU의 병렬 연산 유닛(ALU)은 보통 Batch 연산이 아닐 때 놀고 있는 경우가 많습니다. Target 모델이 개의 토큰을 한 번에 검증하는 과정은 이 유휴 연산 자원을 100% 활용하는 완벽한 하드웨어 친화적(Hardware-aware) 작업입니다.
한계:하지만 Target 모델이 개의 토큰을 한 번에 검증(병렬 처리)할 때, 내부의 Attention 연산에서 또 다른 병목이 발생할 수 있습니다.