在搭载RTX 4060(8GB)的笔记本电脑上运行Qwen3.6-35B-A3B——哪些有效、哪些无效以及一个令人意外的推测解码结果

Reddit r/LocalLLaMA 新闻

摘要

详细记录了在8GB笔记本GPU上运行Qwen3.6-35B-A3B MoE模型的经历,涵盖有效优化(如--no-mmap和VRAM余量)、意料之外的发现(推测解码相比基准测试提升26%的速度)以及Windows和CPU瓶颈的陷阱。

TL;DR:我花了很长时间在一个只有8GB的小型笔记本GPU上调优一个35B的MoE模型。有三件事至关重要(--no-mmap、VRAM余量、关闭CPU密集的应用程序)。由于该模型的混合架构(Gated Delta Net),几个“显而易见”的优化毫无效果(TurboQuant、Flash Attention,甚至i-quants反而让性能更差)。而推测解码为我带来了+26%的提升,这与社区基准测试中发现的负面结果相矛盾。期待讨论和想法。 **配置信息**\ - GPU: RTX 4060 笔记本版, 8GB VRAM\ - CPU/RAM: i7-13620H, 32GB DDR5-5600 双通道\ - OS: Windows 11 (llama.cpp b9484, CUDA 构建)\ - 模型: Qwen3.6-35B-A3B (MoE, 总共35B / 活跃~3B), Q4_K_M (~20GB)\ - 关键细节: 该模型是混合架构——只有10个注意力层 + 40个Gated Delta Net(循环)层。这一事实解释了我的大部分结果。 **最终配置(“默认”配置)**\ -ngl 999 --n-cpu-moe 34 -c 65536 --parallel 1 --no-mmap \ --cache-type-k q4_0 --cache-type-v q4_0 \ --temp 0.6 --top-k 20 --top-p 0.95 --min-p 0 --presence-penalty 1.5 \ -md Qwen3.5-0.8B-Q4_K_M.gguf -ngld 99 --reasoning off 所有密集层(注意力/路由/归一化)在GPU上,专家在CPU上。正常时约39 tok/s生成速度,VRAM使用约5.4GB,剩余约2.5GB余量。 **实际有效的措施** 1. --no-mmap在将专家卸载到CPU时非常重要。使用mmap时,每个token都会导致专家张量的页面错误。提前将它们加载到RAM中显著提升了生成速度(我在空闲系统上测量到从~11 tok/s提高到~43 tok/s)。当使用CPU张量覆盖时,llama.cpp甚至会打印提示建议使用此选项。 2. 在Windows上,VRAM余量至关重要。当VRAM接近满时,NVIDIA驱动的“系统内存回退”会溢出到系统RAM而不是OOM。当空闲空间仅剩约740MB时,速度下降到约7 tok/s。保持至少1.5GB空闲即可修复。反直觉的是,将更少的专家放在GPU上(更高的--n-cpu-moe)有时反而更快,因为它避免了回退。 3. 真正的瓶颈是CPU,而不是GPU。专家在CPU上运行。关闭Discord和繁重的浏览器标签页使我的速度从~6 tok/s提升到~18 tok/s。GPU温度为59°C,从未出现过热降频。 **我测试并拒绝的优化** 1. TurboQuant KV量化(turbo3/turbo4,通过一个分支):有效,加载正常,但几乎无收益。原因:该模型在64K上下文下的KV缓存仅为~295 MiB(只有10个注意力层!)。压缩295MB毫无意义,因为7GB的专家占满了VRAM。 2. Flash Attention:无帮助(同样的原因——几乎没有注意力层需要加速)。实际上还略慢了一些。 3. IQ4_XS替代Q4_K_M:在相同条件下慢约35%(4.1 vs 6.3 tok/s)。i-quants有昂贵的查找表解码,在CPU上很慢;K-quants有优化的CPU内核(REPACK=1)。对于CPU卸载的专家,K-quant优于i-quant,即使文件更小。 4. --mlock:当与--no-mmap一起使用时会导致CUDA错(out of memory),并且在Windows上需要特殊权限。 **令人惊讶的发现:推测解码** 社区基准测试(包括一个专门的RTX 3090仓库)发现推测解码在Qwen3.6-35B-A3B上是净负面的。在我的设置中,它带来了+26%的提升(31→39 tok/s),使用词汇匹配的Qwen3.5-0.8B草案模型。我的理论:由于专家在CPU上,生成是CPU受限的,在一个批量的前向传递中验证N个草案token比N次单token传递能更好地分摊专家计算。在完全使用GPU的3090上,基础模型每个token已经很快,因此草案的开销占主导地位。有人在CPU卸载专家的场景中看到推测解码特别有帮助吗? **Windows的额外陷阱** 1. 智能应用控制静默阻止了Open WebUI桌面应用的未签名DLL(win32job.pyd)。改为将Open WebUI移至WSL2。 2. 从WSL访问Windows主机的服务器IP在重启后会变化——通过WSL镜像网络修复,使localhost:8081保持稳定。 **向社区提出的开放问题** 1. 是否有人看到推测解码在CPU卸载的MoE上获胜(而在全GPU上为净负面)? 2. 对于混合注意力/循环模型(Gated Delta Net),KV缓存优化似乎无关紧要——什么才能真正带来改善? 3. 如何同时禁用思维过程并使用草案?--chat-template-kwargs enable_thinking:false 和 --reasoning-budget 0 在加载草案时都会报错“invalid argument”(也应用于草案的模板)。只有--reasoning off有效。 4. 对于这个目标模型,有没有比Qwen3.5-0.8B更好的草案模型选择? 乐于分享更多数字/配置。欢迎批评我的设置。
查看原文

相似文章