24.44 GiB的35B MoE模型,塞进8GB显存跑,速度还能到35.8 tok/s。

  • 硬件与模型:RTX 2080 SUPER 8GB跑Qwen3.5-35B-A3B Q5_K_M,结合MoE专家CPU卸载与DFlash投机解码。
  • 核心收益:速度从26.8 tok/s提升至35.8 tok/s,提升约33%,草稿接受率高达99.302%。
  • 关键参数:草稿模型仅267.8 MiB,--draft-max 6与-ncmoe 34是当前甜点配置。
核心原理与配置

Qwen3.5-35B-A3B的Q5_K_M量化GGUF文件高达24.44 GiB,8GB显存根本装不下。核心解法是MoE专家CPU卸载配合DFlash投机解码。DFlash的草稿模型Qwen3.5-35B-A3B-DFlash Q4_K_M非常小,只有 267.8 MiB ,参数量约474M,9层全塞进GPU毫无压力。由于草稿模型也要吃显存,主模型的-ncmoe参数从基线的32调整到了 34 ,腾出空间给草稿模型。实测下来,KV缓存用q8_0/q8_0最稳,降级到q4_0/q4_0对速度几乎没帮助,还白丢精度。

实测数据与参数调优

基线跑分(纯MoE卸载)只有 26.8 tok/s 。开启DFlash后,速度拉到了 35.6-35.8 tok/s ,提升约33-34%。最亮眼的是接受率,--draft-max设为6时,430个草稿token接受了427个, 99.302% 的接受率非常恐怖。

草稿长度调优很讲究,不是越长越好:

draft-max 5: 34.6 tok/s, 接受率 97.9% draft-max 6: 35.6-36.9 tok/s, 接受率 99.3% draft-max 7: 35.7 tok/s, 接受率 95.8% draft-max 8: 34.1 tok/s, 接受率 94.7% draft-max 12: 31.5 tok/s, 接受率 83.4%

超过6之后,接受率暴跌,反而拖慢了整体推理速度。另外,这个PR的构建版本67cb0d507 (8942)在性能摘要里会输出负数时间和异常内存值,看结果直接盯解码速度和接受率就行。

打开网易新闻 查看精彩图片

完整启动命令,参数别抄错,特别是-ncmoe 34和--draft-max 6:

build\bin\Release\llama-speculative-simple.exe ^ -m "C:\models\Qwen3.5-35B-A3B-Q5_K_M.gguf" ^ -md "C:\models\Qwen3.5-35B-A3B-DFlash-Q4_K_M.gguf" ^ --dflash ^ -p "Write a complete Python implementation of quicksort, mergesort, heapsort, and binary search. Include concise comments. Write code only." ^ -n 512 ^ --draft-max 6 ^ -cd 512 -c 4096 ^ --temp 0 --top-k 1 --seed 42 ^ -ngl 999 -ngld 99 -ncmoe 34 ^ -fa on ^ -ctk q8_0 -ctv q8_0 ^ -ctkd q8_0 -ctvd q8_0 ^ --no-mmap ^ -t 5