今天在浏览hugging face时,发现了Unsloth团队推出全新MTP架构Qwen3.6模型,并且在5月16日,llama.cpp 官方正式合并 MTP 推测解码主干分支,原生支持 MTP 加速。
官方标注:生成速度提升 1.5~2 倍。作为本地部署发烧友,我第一时间拉取源码、手动编译并实测,给大家带来最真实的上手体验。
🔧 源码更新 + AMD 定制编译全过程
目前 MTP 已经合并进正式分支,不需要再切换branch,普通用户部署门槛大幅降低。我使用 AMD 显卡相关的配置,官方版本主要使用的是CUDA版本的命令:
1、进入工作目录,同步最新源码
git pull
2、AMD HIP 显卡编译指令
cmake -S . -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1100 -DCMAKE_BUILD_TYPE=Release
16核全速编译,
cmake --build build --config Release -j16
过程顺畅无报错,新版代码完美兼容 MTP 底层加速逻辑。
⚙️ MTP 模式启动命令
编译完成后,只需增加一行专属参数,即可开启推测解码加速,本次实测使用 Qwen3.6-27B-MTP 量化模型:
先去modelscope上下载模型:
https://www.modelscope.cn/models/unsloth/Qwen3.6-27B-GGUF-MTP
选择自己可用的模型,比如24G以下的显卡用Q4量版本,我是48G,选择了Q8_K_XL的版本。
下载完成之后,启动llama-cli:
HIP_VISIBLE_DEVICES=0 ./build/bin/llama-cli -m ~/models/Qwen3.6-27B-MTP-UD-Q8_K_XL.gguf --spec-type draft-mtp
核心关键点:--spec-type draft-mtp是开启 MTP 加速的唯一指令,不加默认走传统慢速生成。
💡 通俗详解:什么是 MTP 推测解码?
这里简单讲一下MTP的原理:
1、传统大模型解码(无MTP):
常规大模型,默认都是自回归逐字生成:
写1个字 → 停顿计算 → 再写下1个字 → 反复循环。
哪怕显卡算力充足,模型也必须串行排队计算,显卡大量算力闲置,这也是本地部署普遍生成速度慢、卡顿感明显的根本原因。
2、MTP 推测解码:提前预判
MTP(Multiple Token Prediction,多令牌预测),是目前最轻量、最好用的推测解码方案。工作逻辑非常简单:
预判生成:主模型在生成当前字词的同时,自动预判后面2~4个大概率出现的字词;
并行校验:把预判出来的一串文字,一次性送入主模型快速校验;
筛选输出:正确文字直接保留,错误部分丢弃重算。
3、最大优势:提速不降质
市面上很多加速手段,都是通过删减参数、降低精度换速度。MTP完全不同:纯算法层面优化,不修改模型权重、不压缩精度、不删减参数,属于零成本正向优化。
下面实测一下。
📊 同问题实测数据对比
为保证测试公平,我固定使用同一个提问,硬件、量化模型、参数全部不变,仅切换 MTP 开关。
测试提示词:请快速连续说出100个常见中文词语,不要停顿。
❌ 关闭 MTP:原生串行生成
测速数据:Prompt: 79.6 t/s | Generation:17.3 t/s
生成思维繁琐,模型逐字推敲,连续输出词汇时节奏拖沓,能明显感觉到卡顿等待感。
✅ 开启 MTP:推测并行生成
测速数据:Prompt: 71.9 t/s | Generation:25.3 t/s
本次实测生成速度提升1.46倍,完美贴合官方标注 1.5~2 倍提速区间,数据真实无水分。
注意生成的过程就能看出原因,没有mtp时词语一个个输出,如下图:
开启mtp,词语10个10个出,如下图:
速度对比,如下图:
✨ 主观实测体验:提速但质量不变
重点关注的问题:加速会不会影响质量?
实测结果:主观感觉是不会。MTP 开启前后,思维链基本一致;输出的时候并行。
📝 个人实测总结
兼容性好:llama.cpp 正式合并 MTP 分支,无需编译切换分支编译开发版;
模型适配:Unsloth Qwen3.6-27B MTP 量化模型,显存占用合理,AMD/N卡通用;
性能不错:真实场景稳定 1.5 倍提速,质量也不错;
📌 写在最后
对于本地部署爱好者,MTP版本是挺实用的更新。pull最近代码,加一条启动参数,就能提高一半的生成速度。
如果你也在玩本地大模型,强烈建议更新后体验,这是目前性价比挺高的加速方案。大家有什么问题欢迎在评论区讨论。