记一次失败的本地部署 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+显存的显卡?
相关推荐
熊猫钓鱼>_>11 小时前
强化学习与决策优化:从理论到工程落地的完整指南
人工智能·llm·强化学习·rl·马尔可夫·mdp·决策过程
冬奇Lab11 小时前
RAG 系列(十七):Agentic RAG——让 Agent 主导检索过程
人工智能·llm·源码
Zeeland1 天前
Rudder:让人类与 AI Agent 像真正的团队一样协作
llm·openai·agent
冬奇Lab1 天前
RAG 系列(十六):Graph RAG——用知识图谱解决多跳关系问题
人工智能·llm
王_teacher2 天前
GRU (Gated Recurrent Unit,门控循环单元) 原理详解 并且手写GRU模型
人工智能·gru·llm·nlp
吴佳浩2 天前
OpenClaw最严厉的父亲- 使用优化建议
人工智能·llm·agent
带刺的坐椅2 天前
Spring AI 2.0 GA 倒计时:先别急,来看看 Java AI 框架的另一条路
java·spring·ai·llm·agent·solon
大模型真好玩2 天前
从RAG到LLM Wiki:一文看懂大模型+知识的演进路线
人工智能·llm·deepseek
Fleshy数模2 天前
玩转 LangChain:从 Prompt 模板到多场景 AI 交互实战
人工智能·langchain·llm