记一次失败的本地部署 LLM MTP 模型的过程

文章目录

(一)结论

先说结论:如果显卡没有24GB+的显存,确实没必要折腾。

显存容量决定体验上限,MTP不是"免费加速",而是用更多显存换 decode 加速。

(二)前言

最开始是偶然看到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推断的张量覆盖、行交错量化打包等。

代码:

bash 复制代码
> git clone https://github.com/ikawrakow/ik_llama.cpp.git

编译:

bash 复制代码
> 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的服务:

bash 复制代码
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)降低参数

bash 复制代码
--ctx-size 12800 ^ -ctk q4_0 -ctv q4_0 ^ -b 256 -ub 256 ^

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

(4.3)继续降低参数

bash 复制代码
--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+显存的显卡?
相关推荐
猫头_17 分钟前
AI 流式传输工程指南:有了 EventSource 为何还要 Fetch?
javascript·http·llm
SyMind1 小时前
如何做好 AI 的挂件
llm·ai编程
GPUStack3 小时前
Day 0 实测|在 GPUStack 上部署 Inkling-BF16:8 卡 H20-141G 推理性能测试
ai·大模型·llm·gpu·vllm·gpu集群·sglang·gpustack
带刺的坐椅4 小时前
Solon TeamAgent 协作协议:从 SEQUENTIAL 流水线到 HIERARCHICAL 主管团队
java·ai·llm·agent·solon
Token炼金师4 小时前
自主的引擎:ReAct、MCP、多 Agent、Workflow 与沙箱护栏 —— Agent 与工具六器
人工智能·深度学习·llm
咪库咪库咪4 小时前
qdrant
llm
染指11105 小时前
61.RAG-RAG存在的问题
人工智能·llama·rag·llama_index·llamaindex
xing-xing6 小时前
魔搭社区(ModelScope)下载模型文件
python·jupyter·llm
AINative软件工程6 小时前
LLM 应用的回滚工程实践:Prompt、模型与配置变更出问题时如何快速恢复
后端·llm·ai编程