llama.cpp에서 추측 디코딩 방식을 동시에 사용할 수 없는 이유가 뭘까?
why llama.cpp can’t combine speculative decode methods?
핵심 요약
llama.cpp에서 MTP와 N-gram 추측 디코딩을 동시에 적용하려는 시도와 그 가능성에 대한 논의.
- 추측 디코딩 병행 — MTP와 N-gram을 동시에 사용하여 에이전트 코딩 효율을 높이려 함.
- 기술적 구현 한계 — 현재는 두 방식을 동시에 적용하면 하나만 활성화되는 제약이 있음.
- 관련 PR 존재 — 이미 해당 기능을 구현하기 위한 Pull Request가 진행 중임.
- 구현 가능성 — 근본적인 기술적 제약보다는 구현상의 문제일 가능성이 높음.
Qwen3.6 27b 모델로 새로운 MTP 추측 디코딩을 이것저것 만져보고 있는데 아주 훌륭함. 하지만 에이전트 코딩 작업에서는 N-gram 방식이 훨씬 큰 성능 향상을 보여줬음. 모델이 이전에 봤던 코드 섹션을 그대로 반복하는 경우가 꽤 많기 때문임(예: 편집 도구 호출 시). N-gram은 그런 상황에서 토큰을 훨씬 빠르게 추측할 수 있음.
이 둘을 동시에 사용해서 병행할 수 있으면 정말 좋을 텐데, 명령줄 인자에 둘 다 넣으면 N-gram만 활성화되는 것 같음.
혹시 둘을 동시에 사용할 수 없는 이유가 있을까? 근본적인 한계인지, 아니면 조만간 해결될 구현상의 문제인지 궁금함.
수정: PR을 다시 확인해보니 내가 글 올리기 2시간 전에 PmNz8이 똑같은 질문을 올렸었네. 가서 추천 좀 눌러줘! https://github.com/ggml-org/llama.cpp/pull/22673#issuecomment-4394544777


