모든 MTP 어시스턴트가 동등하게 만들어진 것은 아니다
요약
llama.cpp 환경에서 Gemma 4 모델을 대상으로 MTP(Speculative Decoding) 성능을 실험한 결과, 어시스턴트 모델의 품질과 양자화 방식이 추론 속도에 결정적인 영향을 미침을 확인했습니다.
핵심 포인트
- MTP 어시스턴트 모델의 품질에 따라 추론 속도 향상 폭이 크게 다름
- 비양자화 어시스턴트가 양자화된 버전보다 일관되게 높은 성능을 보임
- 낮은 초안 수용률은 오히려 성능 저하를 유발할 수 있음
- MTP 활성화 여부를 로그를 통해 반드시 확인해야 함
MTP(Speculative Decoding) 출시 이후 작동하지 않는다는 이유로 많은 거부 반응이 있었습니다. 하지만 실제로 작동은 합니다. 다만 제대로 구현하기가 까다울 뿐입니다. 저는 llama.cpp에서 MTP speculative decoding을 사용하여 실험해 왔는데, 한 가지 사실이 매우 빠르게 명확해졌습니다.
모든 MTP 어시스턴트가 동등하게 만들어진 것은 아닙니다.
저는 Gemma 4 Heretic 모델을 로컬에서 실행해 보았고, 잘못된 어시스턴트와 올바른 어시스턴트 간의 차이는 엄청났습니다. 단순히 gemma 4 26b q4를 실행한다고 해서 어떤 gemma 4 26b q4 어시스턴트 드래프트 모델이든 연결할 수 있다는 의미는 아닙니다.
제가 얻은 결과는 다음과 같습니다:
Gemma 4 26B Heretic Q8: ~30 t/s → ~55-62 t/s
Gemma 4 12B Heretic Q4: ~12 t/s → ~35-54 t/s
Gemma 4 26B QAT/Q4 Heretic Vision: ~65 t/s → ~70-75 t/s
Gemma 4 31B Q4 Heretic Vision: ~14 t/s → ~25-30t/s
가장 큰 교훈은 단순히 어시스턴트 모델을 로드한다고 해서 잘 작동한다는 의미는 아니라는 것입니다. 그리고 같은 이름이라도 성능이 같다는 것을 의미하지 않습니다. huggingface에 있는 gemma 4 31b 4q assistant.gguf라는 두 개의 모델이 병렬로 실행되거나 항상 서로 복사본인 것은 아닙니다.
26B Q4 모델만으로도, 저는 여러 어시스턴트(최소 6개)를 테스트했습니다. 일부는 이미 GGUF 형태로 제공되었고, 다른 일부는 Hugging Face에서 다운로드하여 제가 직접 양자화했습니다. 기술적으로 작동했지만 수용률이 낮은 것도 있었고, 측정 가능한 속도 향상을 거의 제공하지 못한 것도 있었습니다.
결국 저는 네 가지 모델 모두에 대해 작동하는 조합을 찾았습니다.
또 다른 흥미로운 발견은 Google의 공식 Gemma 4 어시스턴트 모델에서 나왔습니다.
저는 Hugging Face에서 공식 어시스턴트/MTP 모델을 다운로드하여 GGUF로 변환했고, Q4, Q8 및 비양자화(unquantized) 버전을 포함한 여러 변형을 생성했습니다.
그 결과는 저를 놀라게 했습니다.
12B와 31B 모델 모두에서, 비양자화 어시스턴트가 양자화된 어시스턴트보다 일관되게 성능이 뛰어났습니다. Q4 어시스턴트는 여전히 MTP 없이 실행하는 것보다 성능을 향상시켰지만, 비양자화 어시스턴트는 종종 약 10 t/s 더 빨랐습니다.
다시 말해, 어시스턴트 양자화도 중요합니다.
몇 가지 추가 관찰 사항:
- 일부 어시스턴트는 성공적으로 로드되었지만 성능 향상이 미미했습니다.
- 일부 어시스턴트는 초안 수용률(draft acceptance rates)이 낮아 오히려 이득을 감소시켰습니다.
- 일부 일치하지 않는 어시스턴트는 텐서 형태/단언 오류(tensor shape/assertion errors)로 인해 충돌했습니다.
- 더 높은 초안 카운트가 결코 좋지 않았습니다 (Heretic의 특성일 수 있습니다). 제가 얻은 최고의 결과는 모두 "spec-draft-n-max = 1"에서 나왔습니다.
- 기본 모델이 느릴수록, 이득 폭이 커지는 경향을 보였습니다.
제가 빠르게 배운 한 가지는 MTP가 실제로 활성화되었는지 확인해야 한다는 것입니다.
저는 다음 로그를 확인하기 시작했습니다:
common_speculative_impl_draft_mtp: adding speculative implementation 'draft-mtp'
그리고 초안 수용률과 실제 생성 속도를 점검했습니다.
이러한 확인 과정 없이는, 실제로 기본 모델만 벤치마킹하고 있을 때 MTP를 벤치마킹한다고 생각하기 매우 쉽습니다. 왜냐하면 (MTP가) 조용히 사라질(drop) 수 있기 때문입니다.
가장 흥미로웠던 결과 중 하나는 26B QAT/Q4 모델에서 비전과 함께 MTP를 작동시키는 것이었습니다.
저는 별도의 비전 및 텍스트 구성을 필요로 할 것으로 예상했지만, 다음 구성으로 모델이 성공적으로 로드되었고:
- 비전 (mmproj)
- Draft-MTP
- 96k 컨텍스트
- Flash Attention
여전히 이미지 지원을 유지하면서 텍스트 작업 부하에서 약 70+ t/s를 생성했습니다.
저의 전반적인 결론은 다음과 같습니다:
만약 MTP를 시도해 보고 약한 결과를 얻었다고 해서, MTP가 쓸모없다고 가정하지 마세요.
다양한 어시스턴트를 시도해보세요.
다양한 양자화(quantizations)를 시도해보세요.
수용률을 확인하세요.
MTP가 실제로 초기화되었는지 검증하세요.
저에게는 "어시스턴트 모델"과 "올바른 어시스턴트 모델" 사이의 차이가 종종 작은 성능 향상과 2배 속도 향상의 차이였습니다.
따라서, "로드된다"와 "올바른 어시스턴트이다"는 같지 않습니다.
제출자: /u/devildip [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기