llama.cpp 적응형 MTP PR#27210
llama.cpp adaptive MTP PR#27210
핵심 요약
llama.cpp에 MTP 깊이를 동적으로 조절하여 성능을 최적화하는 적응형 MTP 모드가 제안되었습니다.
- 적응형 MTP — 상태 머신을 사용해 MTP 깊이를 상황에 맞춰 동적으로 조절함
- 성능 향상 — 코드 생성 및 재호출 시 기존 대비 50% 이상 빠른 속도 달성
- 설정 권장 — --spec-type draft-mtp-adaptive --spec-draft-n-max 12 사용 권장
- ngram-mod 호환 — 적응형 MTP와 ngram-mod를 병행할 때 시너지 효과 확인됨
github.com
원문 사이트로 이동
이번에 올린 PR 좀 봐달라고 글 쓴다. 관심 있는 사람들은 한번 써봐라.
이번에 llama.cpp에 적응형 MTP 모드를 추가했는데, 간단한 카운팅 방식의 상태 머신을 써서 MTP 깊이를 상황에 맞게 자동으로 조절하게 만들었다.
목표는 간단하다. MTP 깊이 설정하느라 머리 싸매지 말고, 그냥 서버가 알아서 하게 두자는 거다.
MTP 3이랑 비교했을 때, 예측하기 힘든 빽빽한 문장이나 일반적인 문장에서는 성능이 기존보다 3% 정도 떨어진다. 일반 문장에서는 평균적으로 더 잘 나올 때도 있지만, 미리 기대치를 확실히 잡아두는 게 좋을 것 같아서 말해둔다.
근데 코드를 짜거나 대화 내용을 다시 불러올 때는 성능 향상이 확실하다. 코딩은 보통 기존보다 10~15% 정도 빠르고, 생각하는 단계에서 코드를 다시 불러올 때는 일반 MTP=3보다 50% 이상 빨라지기도 한다.
만약 모델한테 파일에서 몇 줄만 수정하라고 시켰는데, 얘가 기억력에 의존해서 파일 전체를 다시 써버리는 상황이 오면, 일반 MTP=3보다 최대 100%까지 빨라질 수 있다.
글 내용을 다시 불러올 때는 향상 폭이 좀 더 적어서 20~30% 정도다.
온도가 높을수록 모델 출력이 예측 불가능해지는데, 그런 경우에는 적응형 MTP도 일반 MTP=3보다 크게 나을 건 없다. 그래도 코딩할 때는 대체로 조금 더 낫긴 할 거다.
관심 있는 고수들이 좀 써보고 이게 진짜 도움이 되는지 확인해 줬으면 좋겠다.
추천 설정값은 이거다: --spec-type draft-mtp-adaptive --spec-draft-n-max 12
이렇게 하면 깊이가 3에서 12까지 유동적으로 바뀐다.
기본 깊이 하한선인 3을 바꾸고 싶으면 --spec-draft-n-min-adaptive 옵션으로 더 낮게 설정할 수 있다.


