brief.ing.gg

WIKI

Speculative Decoding

Speculative Decoding

작은 모델이나 보조 토큰 예측을 이용해 추론을 가속하는 원리는 무엇인가.

Scope

핵심 질문

Speculative Decoding은 작은 초안 모델이나 보조 예측을 이용해 큰 모델의 출력 분포를 유지하면서 왜 생성속도를 높일 수 있는가?

포함 범위

  • draft model
  • verification
  • acceptance
  • 정확한 분포 유지
  • 이득이 생기는 조건

제외 범위

  • 특정 런타임의 설정법
  • 최신 모델별 속도 벤치마크

Research

핵심 근거

  • autoregressive decoding은 기본적으로 한 번의 forward pass에서 한 토큰만 확정하므로 GPU 병렬성을 충분히 활용하기 어렵다.
  • speculative decoding은 저비용 draft가 여러 토큰을 제안하고 target model이 한 번에 검증한다.
  • rejection sampling 기반 방식은 target model의 원래 분포를 보존할 수 있다.
  • draft와 target의 예측이 자주 일치할수록 이득이 커진다.

참고 자료

  • Leviathan et al., Fast Inference from Transformers via Speculative Decoding: https://arxiv.org/abs/2211.17192
  • Chen et al., Accelerating Large Language Model Decoding with Speculative Sampling: https://arxiv.org/abs/2302.01318

Draft

Speculative Decoding은 큰 언어 모델이 토큰을 하나씩 직접 생성하는 대신, 더 저렴한 방법으로 여러 토큰 후보를 미리 제안하고 큰 모델이 이를 한 번에 검증해 생성속도를 높이는 기법이다.

왜 기본 decoding이 느린가

Autoregressive LLM은 토큰 하나를 생성한 뒤 그 결과를 다시 입력에 붙여 다음 토큰을 생성한다.

따라서 100개의 토큰을 만들려면 기본적으로 100번의 순차적인 decoding step이 필요하다.

GPU는 대규모 병렬연산에 강하지만 한 토큰씩 순차적으로 확정하는 구조는 이 병렬성을 충분히 활용하기 어렵다.

Draft Model

Speculative Decoding에서는 작은 모델이나 별도의 predictor가 앞으로 나올 여러 토큰을 빠르게 제안한다.

예를 들어 작은 모델이 5개 토큰을 미리 만든 뒤 큰 target model이 이 5개를 한 번의 계산으로 검증할 수 있다.

큰 모델이 제안을 받아들이면 여러 토큰을 한꺼번에 확정한 효과를 얻는다.

틀리면 어떻게 되는가

Target model이 draft의 특정 토큰을 받아들이지 않으면 그 지점부터 target 분포에 맞는 토큰으로 교정한다.

정확한 rejection sampling 절차를 사용하면 최종적으로 생성되는 분포를 원래 target model의 autoregressive sampling과 동일하게 유지할 수 있다.

즉 단순히 작은 모델의 답을 믿고 품질을 희생하는 방식과는 다르다.

언제 빨라지는가

Draft model과 target model의 예측이 자주 일치할수록 좋다.

작은 모델이 제안한 토큰 대부분이 통과하면 target model 호출 한 번으로 여러 토큰을 확정할 수 있다.

반대로 두 모델의 예측이 자주 다르면 검증 후 버리는 토큰이 많아져 이득이 줄어든다.

Draft가 꼭 별도 모델이어야 하는가

아니다.

별도의 작은 모델을 사용할 수도 있고, 동일한 모델에 추가된 multi-token prediction head나 n-gram 기반 예측, 이전 문맥에서의 반복 패턴을 사용할 수도 있다.

핵심은 target model보다 싸게 미래 토큰 후보를 만들 수 있어야 한다는 것이다.

병목은 무엇인가

Speculative Decoding은 특히 batch가 작고 latency가 중요한 환경에서 효과가 클 수 있다.

서버가 이미 큰 batch로 가득 차 GPU 계산을 효율적으로 사용하고 있다면 추가 검증과 draft 실행의 이득이 상대적으로 작아질 수 있다.

핵심

Speculative Decoding은 작은 예측기가 미래 토큰을 먼저 추측하고 큰 모델이 여러 토큰을 병렬적으로 검증함으로써 autoregressive decoding의 순차성 병목을 줄이는 기법이다. 품질을 희생하지 않고 속도를 높일 수 있지만 draft의 정확도와 서빙 환경에 따라 실제 이득이 크게 달라진다.