Views
No views yet
2026-08-13 — v2 files: MTP now works on STOCK llama.cpp. Upstream merged DeepSeek-MTP support (#25784). TheQ8-MTP-v2/andQ3_K_M-MTP-v2/folders carry the same weights re-baked to mainline's metadata conventions — they run on any stock llama.cpp at or after that merge with--spec-type draft-mtp, no fork needed. Both smoke-verified here on stock mainline (Q8-v2 48.6 tok/s, Q3-v2 57.1 tok/s, single stream on our box). The original root-level v1 files remain for users of the July fork; v1 and v2 differ only in GGUF metadata (mainline counts the MTP layer inblock_count= 44, per-layer arrays span 44, and the per-layerhc_headcopies are dropped in favor of the global tensors) — the model bits are identical.
mtp.* tensors and its C++ has no code to run
them. These are, as far as we know, the first and only V4-Flash GGUFs anywhere with
the head preserved and working — the model drafts a token ahead of itself and
verifies it in the same forward pass, for free decode speedup with zero quality
change (every draft is verified by the full model).| File | Size | Experts | MMLU¹ | Tool hardmode¹ | Decode² |
|---|---|---|---|---|---|
| Q8-MTP (the master — recommended) | 160 GB | native MXFP4 (original release bits, never requantized) | 88.3 | 43–73 (mean 55) | 26–27 tok/s |
| Q3_K_M-MTP (speed build) | 143 GB | Q3_K/Q4_K | 84.0 | 40–50 | 30.5 tok/s |
n_max=1, on 4× RTX PRO 4500 Blackwell (128 GB VRAM) +
Threadripper 9970X, experts partially spilled to DDR5. Fully GPU-resident setups
should see substantially more MTP gain (we measured 2.2× on a zero-spill control).--spec-type draft-mtp --spec-draft-n-max 1.1git clone --branch dsv4-mtp https://github.com/rogerai-fyi/llama.cpp
2cmake -B build -DGGML_CUDA=ON && cmake --build build -j --target llama-serverdeepseek4 architecture, and three unrelated bug fixes it flushed out (SIGFPE on
empty KV-cache filters, quantizer crash on integer routing tensors, a
metadata-ordering trap). A rebased-on-master variant lives on the same fork as
dsv4-mtp-upstream.1# Q8-MTP master, 4×32 GB VRAM + DDR5 spill, MTP drafting on:
2llama-server --model DeepSeek-V4-Flash-Q8-MTP-00001-of-00004.gguf \
3 --n-gpu-layers 999 --n-cpu-moe 14 \
4 --split-mode layer --tensor-split 20,8,8,8 \
5 --no-repack --ubatch-size 128 \
6 --flash-attn on --no-kv-unified --jinja --reasoning-format deepseek \
7 --temp 1.0 --top-p 1.0 --min-p 0.0 \
8 --spec-type draft-mtp --spec-draft-n-max 1--spec-draft-n-max 1 is the sweet spot when experts spill to system RAM.
Verifying N drafted tokens costs ~N× the DDR5 expert reads, so long drafts lose;
a 1-token draft is accepted ~100% of the time (it is literally the head's training
objective). The less you spill, the higher you can push it.mmap (default) — --no-mmap needs host RAM larger than the file.--no-repack is required at high --n-cpu-moe counts on current builds.--n-cpu-moe / --tensor-split to your VRAM; the Q3_K_M build needs
--n-cpu-moe 10 --tensor-split 17,9,9,9 on the same hardware.deepseek-ai/DeepSeek-V4-Flash (FP8/MXFP4 release) with our
patched converter: mtp.* tensors rekeyed as layer 43, glue projections folded via
the e_proj(e) + h_proj(x) = eh_proj(concat[e;x]) identity, all seven glue tensors
verified against DeepSeek's reference implementation. The MTP head is a full extra
transformer layer (MLA attention, 256-expert MoE, hyper-connection mixers — 1,575
source tensors). Metadata (block_count=44, nextn_predict_layers=1) is baked in.curl -fsSL https://rogerai.fyi/install.sh | sh