6G显存跑Qwen 35B
6G显存跑Qwen 35B · September 17, 2026 views: 0
本文介绍了如何用6G显存的显卡跑Qwen 3.6 35B A3B模型
第一个优化:先跑起来
最初配置的是 ` llama server –ngl 20`,Qwen 3.6 35B A3B 总共有 40 层,而 -ngl 20 表示其中20层放到GPU上,其它放到CPU,此时推理速度只有 3 tokens/s。为什么这么慢?对于 MoE Qwen 3.6 35B A3B 模型来说,在生成每个token的时候,256 专家只有8个激活,也就是说大部分专家虽然在GPU中,但没有用到,GTX 1060 GPU 没有好好利用,这就是速度慢的原因。
优化方法就是将注意力层尽量放到GPU运算,而FFN 中的专家放到CPU中运算,在 llama.cpp 中输入 ` llama server –ngl 999 --n-cpu-moe 41 `,表示将专家的运算放到CPU中,这时候速度提升到 10 tokens/s。
继续优化
lama.cpp 默认会启用内存映射,也就是专家参数默认不会加载到内存,只有激活的时候才会映射到内存,这时候就要读取磁盘了,速度就慢了,所以 ` llama server --no-mmap ` 可以让专家参数全部加载到内存,不用来回读取磁盘,优化后速度提升到 13.5 tokens/s。
调整参数
--n-cpu-moe 参数值 41,发现 6GB的显存还有空余,所以调整为 35,让部分专家在 GPU 中运行,速度来到了 17 tokens/s,缺点就是如果你的上下文太长,比如超过 64K token,GPU 显存就不够了,那如何优化呢?
KV Cache 可以采用 Google 的 Turbo Quant 量化技术,在未优化之前,KV Cache 采用Q8 量化,而 Turbo Quant 量化,Key 是4bit,Value 是3bit,显存占用减少了,但品质和Q8量化差不多,在 llama.cpp 中输入 ` llama server --cache-type-k q4_0 --cache-type-v q3_0 ` 完成优化,虽然没有提升推理速度,但支持的最大上下文从 64K token 提高到 256K token。
最终优化:避免被放到虚拟内存
当 llama 运行一段时间后,虽然 MoE 专家都已经加载到内存中了,但内核把它们当作普通程序,在系统内存不足的时候,还是会交换到磁盘中,导致运行速度变慢,而解决方案就是锁住内存,直接在llama.cpp 中输入 `llama server --mlock` 就可以了。