본문으로 건너뛰기

© 2026 Molayo

Reddit요약2026. 05. 09. 07:12

Running Qwen3.5 / Qwen3.6 with NextN MTP (Multi-Token Prediction) speculative

요약

본 가이드는 Qwen3.5 및 Qwen3.6 모델에 NextN MTP(Multi-Token Prediction) 기술을 적용하여 디코딩 속도를 획기적으로 향상시키는 방법을 안내합니다. 이 기술은 기존 대비 최대 2.9배의 디코드 성능을 제공하며, 품질 저하 없이 고성능 추론이 가능하게 합니다. 구현을 위해서는 `llama.cpp`의 특정 PR(#22400 및 #22673)를 적용하고, NextN 최적화가 적용된 GGUF 모델(예: Q8nextn 변형)을 사용해야 하며, `--spec-type mtp` 플래그와 같은 새로운 실행 인자들을 활용해야 합니다. 최종적으로는 시스템 전력 튜닝까지 고려하여 최대의 성능과 효율성을 확보할 수 있습니다.

핵심 포인트

  • NextN MTP를 통해 Qwen3.5/Qwen3.6 모델의 디코딩 속도를 품질 손실 없이 약 2.9배 향상시킬 수 있다.
  • 구현을 위해서는 `llama.cpp`의 특정 오픈 PRs(#22400, #22673)를 적용하여 MTP 지원 기능을 활성화해야 한다.
  • 최적화된 GGUF 모델(Q8nextn 변형 등)과 `--spec-type mtp` 플래그 사용이 필수적이다.
  • 성능 극대화를 위해 하드웨어 레벨에서 전력 튜닝(예: 350W + 1700MHz 잠금)을 수행하는 것이 권장된다.

이 가이드를 요청받았으니 여기 있습니다. 어제 누군가의 글과 일부 중복됩니다. YMMV! 업무로 인해 직접 작성하기 바쁘니 Opus에게 부탁했습니다 (내용을 검증했습니다!).

q4 blah blah 사용에 대해 논쟁이 있을 거라고 확신합니다. 내 모델과 잘 작동하니 만족스럽습니다. 요청하면 하드웨어가 허용하는 한 더 높은 q 모델을 만들 수 있습니다!

########

NextN MTP 는 Qwen3.5/3.6 가문과 vanilla 대비 ~2.9× decode 를 제공하며, quality loss 없음 (head 는 모델에 포함됨). 35B-A3B 같은 Heavy MoE 아키텍처는 3090 Ti 에서 ~150 tok/s 를 달성합니다. 단점: 현재 작성 시점에 upstream 으로 통합되지 않았습니다 — open PRs 를 가져와야 합니다.

Required PRs (cherry-pick 또는 해당 브랜치에서 빌드)

2026 년 5 월 현재 두 개 모두 오픈됨 — ship 시 track + rebuild 하세요:

  1. #22400 — llama: allow partial seq_rm for GDN models for speculative decoding
    https://github.com/ggml-org/llama.cpp/pull/22400
    필수 조건입니다. GDN/SSM 모델에 spec-decode 가 rollback 할 수 있도록 keep_intermediates 경로를 추가합니다. 이 없으면 hybrid-attn 모델 (27B) 에서 MTP 는 작동하지 않습니다.

  2. #22673 — llama + spec: MTP Support
    https://github.com/ggml-org/llama.cpp/pull/22673
    메인 코스입니다. qwen35_mtp + qwen35moe_mtp 아키텍처 로더, NextN graph forward, --spec-type mtp 플래그, speculative state machine 를 추가합니다.

두 개 모두 현재 upstream master 에 rebase 하거나 am17an 의 브랜치를 직접 가져오세요.

My fork (FYI — 두 PR 이 merged + extras 포함)

https://github.com/nickstx/llama.cpp 브랜치 crucible

#22400 + #22673 과 qwen3moe_mtp 아키텍처 (Qwen3-Coder 기반 — coder-30B MTP head training 의 work-in-progress, Qwen3.5/3.6 릴리스 모델에는 필요 없음) 포함. 빌드 가능한 것은 가장 간단한 pull 입니다. 또한 cross-PID slot resumes 를 추가하는 unmerged slot PRs 도 포함되어 있습니다.

Build (CUDA)

git clone https://github.com/nickstx/llama.cpp.git 
cd llama.cpp
git checkout crucible
...

Get a working GGUF

Q8nextn 변형 — NextN block override 가 적용된 것 (대부분의 public quants 은 nextn 을 strip 하거나 Q4 →s 로 quantize 하여 acceptance 를 줄입니다).

ModelTierRepo
Qwen3.5-4B-MTPQ5_K_M / IMAT-IQ4_XS / IMAT-Q4_K_Mlocalweights/Qwen3.5-4B-MTP-*
...
Collection: https://hf.co/collections/localweights/qwen36-mtp-crucible-release-69fbdeadca3472e779dff9d2

또는 bf16 소스에서 roll your own 하세요.

선택 사항: imatrix 보정 (5-8% PPL 개선)

./build/bin/llama-imatrix -m model-bf16.gguf -f calibration.txt -ngl 999 \
  --chunks 200 -o imatrix.dat
...

--tensor-type nextn=q8_0nextn과 일치하는 모든 텐서의 양자화를 덮어씁니다. 이를 사용하지 않으면: //////// 출력.

실행

./build/bin/llama-server \
  -m Qwen3.6-35B-A3B-MTP-IMAT-Q4_K_M-Q8nextn.gguf \
  --port 8080 -ngl 999 -fa on --parallel 1 \
...

주요 플래그:

  • --spec-type mtp — NextN 초안 경로를 활성화합니다 (이것은 #22673 에서 새로 추가된 플래그입니다).
  • --spec-draft-n-max 4 — 단계당 토큰 4 개를 제안합니다. 채팅을 위해 6 으로 높여주세요 (더 긴 컨텍스트, 예측 가능). 코드를 위한 경우 2 로 낮춰주세요. 기본값은 4 입니다.
  • -ctk q8_0 -ctv q8_0 — KV 를 q8 로 저장하면 약 절반의 VRAM 을 절약하며, 이 계열에서는 품질 비용이 없습니다.
  • --kv-unified — spec-decode 에 필수적입니다.

속도 (3090 Ti, 350W/1700MHz, q8 KV, ~50-tok 프롬프트 → 1600-tok 디코딩)

모델tps
4B-MTP IMAT-IQ4_XS181
...
35B-A3B 는 27B 를 3 배 능가합니다 (A3B = 3B 활성 파라미터, MoE 가 승리). 27B 는 dense+SSM 하이브리드 → 느린 링크.

전력 튜닝 (3090 Ti)

지속적인 MTP 워크로드를 위해 350W + 1700MHz 잠금이 토큰/W 최적점입니다:

sudo nvidia-smi -pl 350
sudo nvidia-smi -lgc 0,1700

기본값인 300W 는 MTP 초안 패스를 통해 클럭이 약 1080MHz 로 붕괴되게 합니다 — tps 에 약 17% 손실. 280W 보다 낮게 떨어뜨리지 마세요. 재부팅을 넘어 지속하려면 systemd 를 사용하세요.

주의사항

  1. //// 출력 = nextn 블록이 Q4-양자화되었습니다. --tensor-type nextn=q8_0 로 재양화하세요.
  2. 속도 개선 없음 = --spec-type mtp 가 켜져 있지 않거나, 모델에 nextn 텐서가 없습니다. 확인: llama-gguf model.gguf r | grep nextn.
  3. OOM 긴 컨텍스트 = KV f16→q8 로 낮추고, 컨텍스트 축소, 부분 오프로드.
  4. 27B bf16 덤프가 inf 를 가집니다 blk.18.ffn_up. IQ4 커널은 이를 처리합니다; Q4_K_M 검증이 중단됩니다. Q4 가 실패하면 27B 에는 IQ4_XS 를 사용하세요.
  5. Spec 초안 수용률: /metrics 엔드포인트 — spec_decode_*_total 을 확인하세요. 코드: 약 50-65%. 채팅: 70% 이상.

크레딧

  • am17an / Aman Gupta 에 대한 두 개의 업스트림 PR
  • Qwen 팀에 NextN 훈련된 헤드를 제공한 것
  • ggml-org 에 런타임

AI 자동 생성 콘텐츠

본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
2

댓글

0