MTP 모델 실행을 위한 llama.cpp 도커 이미지
llama.cpp docker images to run MTP models
핵심 요약
MTP 모델을 쉽게 실행할 수 있도록 llama.cpp 도커 이미지를 빌드하고 최적화된 양자화 버전을 공유함.
- 도커 이미지 제공 — 공식 빌드 전까지 MTP 모델을 쉽게 실행할 수 있는 도커 이미지 5종 배포함.
- 양자화 비교 — Unsloth 모델과 비교하여 MTP 레이어의 Q8 양자화 성능 및 정밀도 검증 진행함.
- 실행 명령어 — MTP 모델 구동에 필수적인 --spec-type mtp 및 --spec-draft-n-max 3 옵션 포함함.
이전 게시물에 대한 후속 조치입니다: https://www.reddit.com/r/LocalLLaMA/comments/1t5ageq/
MTP 풀 리퀘스트와 llama.cpp 메인 브랜치에 이미지 지원 및 다양한 버그 수정 등 많은 개선 사항이 있었습니다. 최근 제 로컬 머신을 위해 새로운 빌드를 만들었는데, 가이드를 최신 상태로 유지하는 것이 문제여서 실행을 더 쉽게 만들기 위해 도커 이미지를 빌드했습니다. 이미 llama.cpp 도커 이미지를 사용 중이라면 공식 빌드에서 MTP를 지원할 때까지 쉽게 전환할 수 있을 것입니다.
원하는 버전을 선택하세요:
havenoammo/llama:cuda13-server
havenoammo/llama:cuda12-server
havenoammo/llama:vulkan-server
havenoammo/llama:intel-server
havenoammo/llama:rocm-server
현재 cuda13만 사용 중이라 전부 테스트해보지는 못했습니다. 자유롭게 테스트해보고 본인의 하드웨어에서 작동하는지 확인해보세요.
또한, Unsloth에서 Qwen 3.6용 MTP 모델을 출시하여 제가 이전에 만든 접합 모델들은 구식이 되었습니다. 놓치셨다면 여기서 찾을 수 있습니다:
- https://huggingface.co/unsloth/Qwen3.6-27B-MTP-GGUF
- https://huggingface.co/unsloth/Qwen3.6-35B-A3B-MTP-GGUF
그들은 일부 MTP 레이어를 양자화하는 것으로 보입니다. 저는 예측 성능 향상을 위해 Q8 양자화를 유지했습니다. MTP 레이어에 더 높은 양자화를 적용하면 더 정밀해질 수 있으며, VRAM 사용량을 대가로 더 빠른 속도를 얻을 수 있을 것입니다. 벤치마크를 마치고 완전히 구식이 되었다고 확신할 때까지는 제 버전을 유지할 것입니다.
빠른 수정: 그들은 MTP 레이어를 더 낮은 양자화 수준으로 양자화합니다. 비교 결과는 다음과 같습니다:
| Tensor | havenoammo (UD XL + Q8_0 MTP) | Unsloth (UD XL) |
|---|---|---|
| blk.64.attn_k.weight | Q8_0 | Q3_K |
| blk.64.attn_k_norm.weight | F32 | F32 |
| blk.64.attn_norm.weight | F32 | F32 |
| blk.64.attn_output.weight | Q8_0 | Q4_K |
| blk.64.attn_q.weight | Q8_0 | Q3_K |
| blk.64.attn_q_norm.weight | F32 | F32 |
| blk.64.attn_v.weight | Q8_0 | Q5_K |
| blk.64.ffn_down.weight | Q8_0 | Q4_K |
| blk.64.ffn_gate.weight | Q8_0 | Q3_K |
| blk.64.ffn_up.weight | Q8_0 | Q3_K |
| blk.64.nextn.eh_proj.weight | Q8_0 | Q8_0 |
| blk.64.nextn.enorm.weight | F32 | F32 |
| blk.64.nextn.hnorm.weight | F32 | F32 |
| blk.64.nextn.shared_head_norm.weight | F32 | F32 |
| blk.64.post_attention_norm.weight | F32 | F32 |
| MTP layers size | 430.41 MB | 222.33 MB |
양자화가 다중 토큰 예측에 정밀도/속도 손실을 유발하는지 확인하기 위해 벤치마크를 수행할 예정입니다. 그때까지 VRAM 여유가 있다면 제 릴리스를 자유롭게 테스트해보세요.
- https://huggingface.co/havenoammo/Qwen3.6-35B-A3B-MTP-GGUF
- https://huggingface.co/havenoammo/Qwen3.6-27B-MTP-UD-GGUF
마지막으로, 제가 사용하는 방법은 다음과 같습니다:
docker run --gpus all --rm \
-p 8080:8080 \
-v ./models:/models \
havenoammo/llama:cuda13-server \
-m /models/Qwen3.6-27B-MTP-UD-Q8_K_XL.gguf \
--port 8080 \
--host 0.0.0.0 \
-n -1 \
--parallel 1 \
--ctx-size 262144 \
--fit-target 844 \
--mmap \
-ngl -1 \
--flash-attn on \
--metrics \
--temp 1.0 \
--min-p 0.0 \
--top-p 0.95 \
--top-k 20 \
--jinja \
--chat-template-kwargs '{"preserve_thinking":true}' \
--ubatch-size 512 \
--batch-size 2048 \
--cache-type-k q8_0 \
--cache-type-v q8_0 \
--spec-type mtp \
--spec-draft-n-max 3


