在 12GB 显存下,使用 Qwen3.6 35B A3B 与 llama.cpp MTP 实现 80 tok/sec 的速度和 128K 上下文
摘要
一名用户分享了一份配置方案,该方案在使用 llama.cpp 和多令牌预测(MTP)的情况下,能在 12GB 显存的 GPU 上让 Qwen3.6 35B A3B 模型实现超过每秒 80 个令牌的生成速度。帖子中包含了基准测试结果以及用于优化性能的具体命令行参数。
只是想分享一下我的配置,希望能帮助其他 12GB 显存的显卡用户在有限的显存下实现非常可观的 Token 生成速度。使用最新的 llama.cpp 构建版本加上 MTP(多令牌预测)PR,我在下面这个基准测试中获得了超过 80 tok/sec 的速度,且草稿接受率超过 80%:[https://gist.githubusercontent.com/am17an/228edfb84ed082aa88e3865d6fa27090/raw/7a2cee40ee1e2ca5365f4cef93632193d7ad852a/mtp-bench.py](https://gist.githubusercontent.com/am17an/228edfb84ed082aa88e3865d6fa27090/raw/7a2cee40ee1e2ca5365f4cef93632193d7ad852a/mtp-bench.py) 这是在 RTX 4070 Super 上测试的结果,因此其他显卡的结果可能会有所不同。要运行支持 MTP 的 llama.cpp,你需要从源码编译,并添加一个尚未合并到主分支的草稿 PR。你可以在这里找到一个非常详细的指南,并下载 Qwen3.6 MTP GGUF 模型:[https://huggingface.co/havenoammo/Qwen3.6-35B-A3B-MTP-GGUF](https://huggingface.co/havenoammo/Qwen3.6-35B-A3B-MTP-GGUF) - 感谢 u/havenoammo!
llama.cpp 命令:
```bash
llama-server \
-m Qwen3.6-35B-A3B-MTP-UD-Q4_K_XL.gguf \
-fitt 1536 \
-c 131072 \
-n 32768 \
-fa on \
-np 1 \
-ctk q8_0 \
-ctv q8_0 \
-ctkd q8_0 \
-ctvd q8_0 \
-ctxcp 64 \
--no-mmap \
--mlock \
--no-warmup \
--spec-type mtp \
--spec-draft-n-max 2 \
--chat-template-kwargs '{"preserve_thinking": true}' \
--temp 0.6 \
--top-p 0.95 \
--top-k 20 \
--min-p 0.0 \
--presence-penalty 0.0 \
--repeat-penalty 1.0
```
这里最重要的参数是 `-fitt 1536`。由于模型部分卸载到 CPU 上(因为其体积较大),该参数告知 llama.cpp 正确平衡 GPU/CPU 的负载以获得最佳性能,并为 MTP 草稿模型和 KV 缓存留出 1536 MB 的可用内存。由于我将独立显卡(dGPU)作为次要显卡使用(显示器连接在核显 iGPU 上),我可以将所有可用的 12GB VRAM 用于推理。如果你将 dGPU 作为主显卡使用,1536 MB 可能太小了,建议先进行测试。你也可以尝试不同的 `--spec-draft-n-max` 值。使用 3 时 tok/sec 略高,但使用 2 时接受率明显更好,因此权衡之下并不值得。对于 MTP,你需要同时最大化速度和接受率,因此需要在两者之间找到最佳平衡点。
基准测试结果:
```python
code_python pred= 192 draft= 132 acc= 125 rate=0.947 tok/s=80.8
code_cpp pred= 58 draft= 40 acc= 37 rate=0.925 tok/s=81.8
explain_concept pred= 192 draft= 152 acc= 114 rate=0.750 tok/s=70.0
summarize pred= 53 draft= 40 acc= 32 rate=0.800 tok/s=75.4
qa_factual pred= 192 draft= 144 acc= 119 rate=0.826 tok/s=77.8
translation pred= 22 draft= 16 acc= 13 rate=0.812 tok/s=81.9
creative_short pred= 192 draft= 160 acc= 111 rate=0.694 tok/s=69.2
stepwise_math pred= 192 draft= 144 acc= 119 rate=0.826 tok/s=76.5
long_code_review pred= 192 draft= 148 acc= 117 rate=0.790 tok/s=73.2
```
如果你有任何问题,欢迎提问 :)
祝好。
相似文章
大家在 Qwen3.6 27b 上跑出来的速度是多少?
用户基准测试 Qwen3.6-27B-Q8_0,在 3 块混合 GPU 上通过 llama.cpp 以约 13 tokens/sec 运行 128k 上下文,询问该性能是否典型。
@iotcoi:Qwen3.6-27B-FP8 + Dflash + DDTree,256k 上下文,10 个智能体,单颗 49W GB10 上峰值 200 tokens/s,平均解码 136 tokens/s
量化版 27B Qwen3.6 在单颗 49W GB10 GPU 上借助 Dflash+DDTree 优化,256k 上下文、10 智能体并发,峰值达 200 tok/s,平均 136 tok/s。
QWEN3.6 + ik_llama 快得离谱
用户报告成功部署 Qwen 3.6 与 ik_llama 量化,在消费级硬件(16GB VRAM、32GB RAM)上实现 200k 上下文窗口下 50+ token/秒。
8GB 显存跑 Qwen3.6 35B MoE 的 llama-server 配置 + 我踩的 max_tokens / thinking 陷阱
作者分享了一套在 8GB RTX 4060 上跑 35B-MoE Qwen3.6 的可用 llama-server 配置,重点提示因内部推理无限制而耗尽 max_tokens 的陷阱,并给出用 per-request thinking_budget_tokens 的解决方案。
Qwen-3.6-27B + llamacpp 投机解码效果惊艳
Reddit 用户展示了 llamacpp 的投机解码功能将 Qwen-3.6-27B 的生成速度从 13.6 提升至 136.75 t/s,并分享了完整的命令参数和硬件配置。