MTP 모델을 실행하기 위한 llama.cpp Docker 이미지
요약
본 글은 MTP(Multi-Token Prediction) 모델을 실행하기 위한 llama.cpp Docker 이미지를 제공하며, 사용자가 자신의 하드웨어에 맞는 버전을 선택하여 쉽게 사용할 수 있도록 안내합니다. 또한, Unsloth에서 Qwen 3.6용 MTP 모델을 출시함에 따라 기존의 Grafted 모델들이 구식이 되었음을 알리며, 성능 비교 벤치마크 결과 Unsloth 모델 사용을 강력히 권장하고 있습니다. 최신 버전에서는 draft engine 이름이 `mtp`에서 `draft-mtp`로 변경되었으므로 `--spec-type draft-mtp`를 사용해야 합니다. 전반적인 벤치마크 결과와 사용자 편의성을 고려할 때, Unsloth 모델을 사용하는 것이 더 효율적입니다.
핵심 포인트
- MTP 모델 실행을 위해 다양한 GPU 환경(cuda13, cuda12, vulkan 등)을 지원하는 llama.cpp Docker 이미지를 제공합니다.
- Unsloth에서 Qwen 3.6용 MTP 모델이 출시되어 기존의 Grafted 모델들이 성능 면에서 구식이 되었습니다.
- 최신 버전에서는 draft engine 이름 변경에 따라 `--spec-type draft-mtp`를 사용해야 합니다.
- 벤치마크 결과, Unsloth 모델이 평균 처리 속도(t/s)와 MTP% 측면에서 더 우수한 성능을 보여 권장됩니다.
이것은 이전 게시물의 후속 글입니다: https://www.reddit.com/r/LocalLLaMA/comments/1t5ageq/
이미지 지원 및 다양한 버그 수정을 포함하여 MTP Pull Request (PR)와 llama.cpp 메인 브랜치에 많은 개선 사항이 있었습니다. 최근 제 로컬 머신을 위해 새로운 빌드를 만들었지만, 가이드를 최신 상태로 유지하는 것이 문제여서 실행을 더 쉽게 만들기 위해 Docker 이미지를 빌드했습니다. 이미 llama.cpp Docker 이미지를 사용 중이라면, 공식 빌드가 MTP를 지원할 때까지 전환하는 과정이 간단할 것입니다.
여기서 원하는 버전을 선택하세요:
havenoammo/llama:cuda13-server
havenoammo/llama:cuda12-server
havenoammo/llama:vulkan-server
...
저는 현재 cuda13만 실행하고 있기 때문에 모든 이미지를 테스트해 볼 수는 없었습니다. 자유롭게 테스트해 보시고 귀하의 하드웨어에서 작동하는지 확인해 보세요.
또한, Unsloth에서 Qwen 3.6용 MTP 모델을 출시하여 제가 이전에 만든 접합(grafted) 모델들이 쓸모없게 되었습니다. 혹시 놓치셨다면 여기서 찾을 수 있습니다:
- Unsloth
2026년 5월 15일 수정: Docker 이미지를 업데이트했습니다. 새 버전에서는 draft engine의 이름을 mtp에서 draft-mtp로 변경했습니다. 따라서 --spec-type draft-mtp를 사용하세요.
2026년 5월 14일 수정: 벤치마크를 실행한 결과 제가 만든 접합 모델들은 완전히 구식이 되었습니다. Q8 MTP 레이어에서 발생하는 추가 VRAM은 미미한 정확도 향상만을 제공하는 반면, Unsloth의 양자화(quants) 모델들이 평균적으로 약간 더 빠르다는 것이 밝혀졌습니다. 그럴 가치가 없습니다! 그러니 그냥 Unsloth 모델을 사용하세요.
양자화(Quant) 비교:
| Quant | Haveno t/s | Unsloth t/s | Haveno MTP% | Unsloth MTP% |
|---|---|---|---|---|
| q4 | 94.47 | 94.40 | 97.49 | 97.39 |
| ... |
전체 평균:
| Source | Avg t/s | Avg MTP% |
|---|---|---|
| havenoammo | 88.85 | 97.48 |
| unsloth | 89.14 | 97.38 |
따라서 아래의 모든 내용은 무시해 주세요.
그들은 MTP 레이어(layers)를 더 낮은 양자화 레벨(quantization levels)로 양자화합니다. 저는 더 나은 예측을 위해 제 모델을 Q8 양자화로 유지했습니다. MTP 레이어에 더 높은 양자화를 적용하면 더 정밀해질 수 있으며, 이는 VRAM 사용량을 대가로 더 빠른 속도를 제공할 가능성이 있습니다. 저는 벤치마크(benchmarks)를 완료하고 제 버전들이 완전히 구식이 되었다고 확신할 때까지 당분간은 제 버전들을 유지할 것입니다. 다음은 비교 내용입니다:
| Tensor | havenoammo (UD XL + Q8_0 MTP) | Unsloth (UD XL) |
|---|---|---|
blk.64.attn_k.weight | Q8_0 | Q3_K |
| ... |
양자화가 다중 토큰 예측(multi-token prediction)의 정밀도나 속도 저하를 유발하는지 확인하기 위해 벤치마크를 진행할 예정입니다. 그때까지 VRAM 여유가 있다면 제 릴리스(releases)를 자유롭게 테스트해 보세요.
- Unsloth UD + Q8 Grafted MTP
마지막으로, 제가 사용하는 방법은 다음과 같습니다:
docker run --gpus all --rm \
-p 8080:8080 \
-v ./models:/models \
...
필요에 따라 조정하십시오. MTP에서 가장 중요한 것은 --spec-type mtp와 --spec-draft-n-max 3입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기