(一)结论

先说结论:如果显卡没有24GB+的显存,确实没必要折腾。
显存容量决定体验上限,MTP不是“免费加速”,而是用更多显存换 decode 加速。

😄 PS:后来用官方的Llama.cpp成功啦!!!

(二)前言

最开始是偶然看到DFlash技术(Block Diffusion for Flash Speculative Decoding)。
感觉速度提升巨大,但是不太成熟,也不支持llama.cpp部署,Windows下还没有到能玩的阶段

然后就转向了它对比的对象MTP技术(Multi-token Prediction)。

在抱脸上看了一圈,发现有作者放出的支持最小模型是gemma-4-26B-A4B-it-UD-IQ4_XS
然后完全忘记了之前在本机测试过,这个模型不加Vision视觉部分,已经到了16GB显存的上限位置。
开始了一轮折腾。

(三)步骤

如果你有24GB或更多的VRAM,那么可以试一试。

(3.1)软件

原版的llama.cpp截至此刻还不支持Gemma4的MTP。
所以需要它的一个fork:🔗 ik_llama

该仓库是llama.cpp分支,拥有更优的CPU和混合GPU/CPU性能、新的SOTA量化类型、一流的Bitnet支持、通过MLA、FlashMLA、融合MoE操作和用于混合GPU/CPU推断的张量覆盖、行交错量化打包等。

代码:

> git clone https://github.com/ikawrakow/ik_llama.cpp.git

编译:

> cmake -B build -DGGML_NATIVE=ON -DGGML_CUDA=ON		#因为我是N卡,4060TI16GB
> cmake --build build --config Release --parallel		#并行编译,否则慢到怀疑人生

结果:
如果没报错,可执行文件就会出现在 XXX\ik_llama.cpp\build\bin\Release\ 目录里面。

💡:这里不讨论编译环境,简单说就是要编译器和CUDA环境,可参考llama.cpp的官方文档。

(3.2)模型

首先从抱脸或者魔搭下载原版的gemma-4-26B-A4B-it-UD-IQ4_XS.gguf模型。
然后从 🔗这里 找到gemma-4-26B-A4B-it-assistant-IQ4_XS.gguf模型。

(3.3)运行

我们运行这个ik_llama的服务:

llama-server ^
    --model gemma-4-26B-A4B-it-UD-IQ4_XS.gguf ^
    --model-draft gemma-4-26B-A4B-it-assistant-IQ4_XS.gguf ^
    --spec-type mtp ^
    --draft-max 3 ^
    --draft-p-min 0.0 ^
    -ngld 99 ^
    --n-gpu-layers 99 ^
    --ctx-size 32768 ^
    -ctk q8_0 -ctv q8_0 ^
    -b 1024 -ub 1024 ^
    --jinja ^
    --host 127.0.0.1 --port 8999

(四)测试

作者用Q8_0模型的测试结果是:

Run Throughput Acceptance
Baseline (no MTP) ~21 t/s
MTP --draft-max 1 ~35 t/s ~89%
MTP --draft-max 2 ~44 t/s ~83%
MTP --draft-max 3 ~49 t/s ~74%
MTP --draft-max 4 ~49 t/s ~64%

所以他推荐预测3个token的参数,因为速度最快,再高接受率就低了。
从这个结果看,生成token的速度是原版的2倍以上。

刚才的运行参数运行起来后。
当我看到共享显存都用掉8GB后,就知道这个测试没什么意义了。

(4.1)作者默认参数

总耗时:🐢3m44s,共享显存使用8GB,TTFT:<2m39s>。

(4.2)降低参数

--ctx-size 12800 ^ -ctk q4_0 -ctv q4_0 ^ -b 256 -ub 256 ^

总耗时:🐢3m25s,共享显存使用2.5GB,TTFT<2m37s>。

(4.3)继续降低参数

--ctx-size 5120 ^ -ctk q4_0 -ctv q4_0 ^ -b 128 -ub 128 ^

共享显存使用1.3GB……
随后报错了,server程序在好像要输出token的时候,退出了。

(4.4)原版

用原版llama.cpp跑gemma-4-26B-A4B-it-UD-IQ4_XS.gguf模型,显存占用15GB+

总耗时:🐢1m34s

用原版llama.cpp跑gemma-4-26B-A4B-it-UD-IQ2_M.gguf模型,显存占用13GB左右。

总耗时:🐢1m03s

(五)再次结论

从上面自己的测试可以看出,对我完全没有用。
慢的原因是显卡自己的显存用完了。用了所谓共享显存(就是系统内存走PCIE总线的速度)。
这种情况下,测试什么都没有意义了,俗称显存爆了。

  1. 如果显卡没有24GB+的显存,确实没必要折腾。
  2. 显存还需要计算其它开销,例子里没有开vision部分,无法图像识别描述。
  3. 推测MTP技术对于RAG场景提升很小,因为RAG是大输入(召回信息+提示词),小输出(回答)。
  4. 谁能赠我一张24GB+显存的显卡?
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐