在 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
```
如果你有任何问题,欢迎提问 :)
祝好。
相似文章
Qwen 3.6-35B-A3B 在 Intel Arc B70 Pro 上实现 977 tok/s 提示处理与 26.2万上下文窗口
本文介绍如何使用 llama.cpp 的 SYCL 后端,在 Intel Arc Pro B70 GPU 上使整个模型和 KV 缓存位于显存中,从而实现 Qwen 3.6-35B-A3B 模型每秒超过 60 个 token 的处理速度。
在 8GB 显存和 32GB 内存上运行 Qwen3.6 35b a3b,~190k 上下文
作者分享了一种高性能的本地推理配置,使用支持 TurboQuant 的修改版 llama.cpp,在硬件受限(8GB 显存、32GB 内存)的情况下运行 Qwen3.6 35B A3B,实现了 ~37-51 tok/sec 的生成速度,并支持 ~190k 上下文。
在12GB显存上使用Gemma 4 12B QAT MTP实现120 tok/s
Google的Gemma 4 12B QAT模型通过llama.cpp的多令牌预测(MTP)在12GB GPU上达到120 tok/s。本文提供分步指南以及无MTP的基准对比,显示速度提升2倍。
Qwen3.6:35b UD Q4_K_M 在 Nvidia P40 上实现 80 tok/s
一位用户分享在单个 Nvidia P40 上使用 TheTom 的 TurboQuant 版 llama.cpp,以 Q4_K_M 量化方式和 100k 上下文运行 Qwen3.6 35B 模型,实现了 80 tok/s,并强调了多种优化。
在廉价 Radeon 7600 上运行 Qwen 3.6 35B A3B-Q8_0 gguf,速度 18 token/s * 更新后提升至 21 t/s
用户报告在 Radeon 7600 上使用 llama.cpp 和 ROCm 运行 Qwen 3.6 35B A3B-Q8_0 gguf,在显存超频后达到每秒 21 tokens,并提到一个与显示相关的性能 bug。