추측 디코딩 (speculative decoding)

컴퓨터과학·AI
한 줄 정의: 작은 모델이 여러 토큰을 미리 지어내고 큰 모델이 한 번에 검증해 생성 속도를 높이는 기법입니다.

쉽게 풀면

큰 모델은 한 번에 토큰 하나씩만 만들어 내기 때문에 느립니다. 그래서 값싼 작은 모델에게 앞으로 나올 몇 개 토큰을 미리 찍어 보게 하고, 큰 모델은 그 후보들을 한 번의 연산으로 한꺼번에 검사합니다. 맞은 부분까지는 그대로 받아들이고 처음 틀린 지점부터 다시 시작하면, 큰 모델을 부르는 횟수가 줄어듭니다.

왜 중요한가

거대 언어 모델의 추론 지연은 서비스 비용과 사용자 경험을 직접 좌우하는 병목입니다. 이 기법은 출력 분포를 바꾸지 않으면서 속도만 높인다는 점이 증명되어 있어, 품질 저하 없는 가속 수단으로 채택되었습니다. 오늘날 주요 추론 프레임워크에 기본 기능으로 들어가 있습니다.

논문에서는 이렇게 쓰입니다

"추측 디코딩을 적용해 출력 분포를 보존하면서 토큰 생성 처리량을 약 2배 향상시켰다."

결과물의 통계적 성질을 바꾸지 않고 생성 속도만 두 배로 올렸다는 뜻입니다.

조금 더 깊게 보면

검증 단계에서는 거부 표집 원리를 이용해, 초안 모델의 제안을 목표 모델의 확률과 비교해 확률적으로 받아들이고 거부된 위치에서는 보정된 분포로 다시 뽑습니다. 이 절차 덕분에 최종 출력의 분포가 목표 모델 단독 생성과 정확히 같다는 성질이 보장됩니다. 초안 모델 대신 목표 모델에 여러 개의 예측 머리를 달거나 n-그램 사전을 쓰는 변형도 있으며, 성능은 초안의 수용률과 초안 생성 비용의 곱으로 결정됩니다.

주의할 점

모델 양자화모델 프루닝은 모델 자체를 바꿔 근사 오차를 감수하는 반면, 추측 디코딩은 모델을 그대로 두고 계산 순서만 바꾸므로 출력 품질이 이론상 동일합니다. 초안 모델이 목표 모델과 성향이 다르면 수용률이 낮아져 오히려 느려질 수 있습니다.

관련 용어