AI 용어집 · 심화 · 효율·인프라
추측 디코딩 Speculative decoding
추측 디코딩은 작은 모델이 다음에 올 토큰 여러 개를 미리 빠르게 추측하고, 큰 모델이 그 추측을 한꺼번에 검사해 맞는 부분만 받아들이는 방식으로 LLM의 답변 생성 속도를 높이는 기법이다.
어떻게 작동하나
LLM은 보통 토큰을 하나씩 차례로 만들어 내서, 큰 모델일수록 한 토큰마다 시간이 많이 든다. 추측 디코딩에서는 작고 빠른 '초안 모델(draft model)'이 다음 토큰 몇 개를 먼저 이어 쓴다. 그러면 큰 모델이 이 후보들을 한 번의 계산으로 동시에 검사해, 자기라도 그렇게 썼을 부분까지는 받아들이고 처음 어긋나는 지점은 자기 답으로 바꾼다. 이 과정을 반복하면서 문장을 이어 나간다.
왜 중요한가
큰 모델에서 시간이 오래 걸리는 이유 중 상당 부분은 계산 자체보다 토큰 하나를 만들 때마다 모델 파라미터를 메모리에서 불러오는 일에 있다. 여러 토큰을 한 번에 검사하면 이 부담을 나눠 낼 수 있어 응답이 빨라진다. 큰 모델이 최종 검사를 맡기 때문에, 제대로 구현하면 답변 품질은 큰 모델 혼자 만들 때와 같게 유지된다. 그래서 모델을 바꾸거나 다시 학습하지 않고도 서비스 속도를 높이는 방법으로 널리 쓰인다.
알아 둘 점
속도 이득은 초안 모델이 얼마나 자주 맞히느냐에 크게 달려 있다. 추측이 자주 틀리면 검사만 하고 버리는 일이 많아져 오히려 이득이 줄어든다. 초안 모델을 따로 띄우는 만큼 메모리와 연산이 조금 더 든다. 별도의 작은 모델 대신 큰 모델에 여러 토큰을 미리 예측하는 부분을 덧붙이는 변형 방식도 있다.
예시
챗봇이나 코딩 도우미처럼 사용자가 답을 기다리는 서비스에서 추측 디코딩은 응답 속도를 높이는 대표적인 추론(인퍼런스) 최적화 방법이다. 예를 들어 같은 계열의 큰 모델과 작은 모델을 짝지어, 작은 모델이 코드 몇 줄을 먼저 이어 쓰고 큰 모델이 확인하는 식으로 쓴다. 코드나 정해진 형식의 문서처럼 다음 내용이 예측하기 쉬운 경우 추측이 잘 맞아 효과가 더 크다. 여러 LLM 서빙 소프트웨어가 이 기능을 옵션으로 제공한다.