speculative decoding에대해서

2024. 2. 26. 07:31인공지능

speculative decoding(Assisted Generation, 보조 생성)


자연어 생성 모델의 레이턴시 문제를 해결하기 위한 새로운 디코딩 방법인 "보조 생성(assisted generation)"에 대해서 알아보겠습니다. 자연어 생성은 기본적으로 모델의 순방향 전파(forward pass) 과정을 반복하여 이루어지는데, 이 과정에서 가장 시간이 많이 소요됩니다. 이러한 레이턴시(지연) 문제를 해결하기 위해 보조 생성 방법을 도입하여, 기존의 모델을 보조하여 더 빠르고 효율적인 텍스트 생성을 가능케 합니다.

기존의 자연어 생성 과정에서는 모델이 다음 토큰의 확률 분포를 예측하는 과정에서 레이턴시 문제가 발생합니다. 이 과정은 주로 모델의 순방향 전파 연산에 의해 지배되며, 특히 메모리 대역폭이 한계가 되어 발생합니다. 이를 해결하기 위해 하드웨어별 모델 최적화, 입력 배치 처리, 텐서 병렬화 등의 방법이 제안되고 있습니다.

그 중에서도 보조 생성은 이러한 레이턴시 문제를 해결하기 위한 새로운 접근 방법으로, 기존 모델을 보조하여 텍스트 생성 속도를 향상시킵니다. 보조 생성은 주어진 입력에 대해 보조 모델이 후보 토큰을 생성하고, 이를 기반으로 기존 모델이 빠르게 다음 토큰을 선택하여 생성하는 방식입니다. 이를 통해 기존의 자연어 생성 속도를 크게 향상시킬 수 있습니다.

마지막으로, 보조 생성은 레이턴시 문제뿐만 아니라 텍스트 생성의 모델 크기와 관련된 다양한 고려 사항을 다루고 있습니다. 작은 모델을 활용하여 보조 생성을 수행함으로써 레이턴시를 줄일 수 있으며, 이를 통해 효율적이고 빠른 텍스트 생성이 가능해집니다.


참고) Speculative decoding을 위한 소규모 모델은 10억과 70억 사이에서 '유사한' 모델이어야 합니다. 두 모델이 모두 적절하게 답변할 수 있는 질문의 경우, 소규모 모델이 더 많은 기회를 얻어 속도가 향상될 수 있습니다. 더불어, 큰 모델과 드래프트 모델 간의 exl2 양자화가 동일한 보정을 받으면 더욱 효과적입니다.


요약 : 레이턴시를 줄이기 위해서 보조생성을 사용하는데 Temperature가 낮을 수록, 보조LLM이 작을 수록 속도는 올라감.


참고1 : https://huggingface.co/blog/assisted-generation

참고2 : https://arca.live/b/alpaca/76414830

참고3: https://huggingface.co/docs/trl/main/en/sft_trainer

툴 : exui로 사용하면 간단히 적용됨.

-------------------

exui로 돌려본 결과

메인모델 : maywell/kiqu-70b-3.0bpw-exl2
보조모델 : maywell/TinyWand-SFT

메인모델 단독으로 돌렸을 때 초당생성토큰과 메인+보조 조합으로 했을 때의 속도를 비교해보았습니다. 이론과는 다르게 오히려 속도가 떨어지는 결과를 낳았습니다. 이론과는 달라서 조금 당황스럽네요.