最终优化:在1块RTX 3090上,DeepSeek-V4-Flash-0731在128K上下文下从约10 tok/s提升至约15 tok/s

Reddit r/LocalLLaMA 新闻

摘要

详细测试和调优,以在RTX 3090上优化GGUF格式的DeepSeek-V4-Flash-0731,通过不同的量化和加载参数,在128K上下文下达到约15 tok/s。

我花了很多时间在单块RTX 3090上优化DeepSeek-V4-Flash-0731 GGUF。我对每种配置的绝对要求是:模型必须在128000个token的上下文窗口下保持可用。我测试了GPU卸载、CPU专家放置、KV缓存量化、批处理大小、内存映射以及CPU/GPU内存分配的各种组合。以下参数是在我的系统上,每种量化级别下能达到最佳性能的配置。 硬件与软件 GPU:NVIDIA GeForce RTX 3090 24 GB CPU:AMD Ryzen 9 9900X RAM:128 GB DDR5-5600,已启用AMD EXPO 主板:MSI X870E Gaming Plus WiFi BIOS:最新可用版本 后端:llama.cpp b10291 前端:文本生成Web界面 操作系统:Windows 常见参数 这些参数在四次测试中保持不变: 模型加载器:llama.cpp GPU层数:44 上下文大小:128000 KV缓存类型:q8_0 分割模式:按层 并行槽位:1 线程数:0 / 自动 批次线程数:0 / 自动 批次大小:512 微批次大小:512 目标大小:512 MiB StreamingLLM:已禁用 KV卸载:已启用 no-mmap:已启用 mlock:已禁用 NUMA:已禁用 投机解码:已禁用 我在Web界面中取消了“CPU MoE”复选框,并通过--n-cpu-moe显式控制专家在CPU上的放置。因此,每种量化所要调整的主要参数,就是其专家张量保留在CPU上的MoE层数。 测试 1/4 — UD-IQ4_XS — 128K上下文下约10 tok/s 量化:UD-IQ4_XS 完全卸载时的VRAM估算:135412 MiB 附加选项:--n-cpu-moe 38 加载时间:65.83秒 平均生成速度:约9.9 tok/s 生成期间的内存使用情况 系统RAM:约122 / 125 GB 专用VRAM:约23.7 / 24.0 GB GPU共享内存:约0.9 GB GPU使用率:约81% CPU使用率:约59% CPU频率:约5.36 GHz 这是所测试的最重量级量化,将系统RAM和专用VRAM推到了极限。 测试 2/4 — UD-IQ3_S — 128K上下文下约12.1 tok/s 量化:UD-IQ3_S 完全卸载时的VRAM估算:115330 MiB 附加选项:--n-cpu-moe 38 加载时间:52.76秒 平均生成速度:约12.1 tok/s 生成期间的内存使用情况 系统RAM:约105 / 125 GB 专用VRAM:约22.1 / 24.0 GB GPU使用率:约85% CPU使用率:约55% CPU频率:约5.35 GHz 与UD-IQ4_XS相比,UD-IQ3_S的生成速度提升了约22%,同时RAM占用减少了约17GB。 测试 3/4 — UD-IQ3_XXS — 128K上下文下约12.5 tok/s 量化:UD-IQ3_XXS 完全卸载时的VRAM估算:103763 MiB 附加选项:--n-cpu-moe 37 加载时间:47.76秒 平均生成速度:约12.5 tok/s 生成期间的内存使用情况 专用VRAM:运行期间约22–23 GB GPU活动:在生成停止前保持较高水平 任务管理器截图是在运行结束后立即截取的,因此GPU使用率和已分配VRAM的骤降可以说明这一点。显示的14GB系统RAM并不能代表生成期间的内存使用情况。 有趣的是,在此配置下,UD-IQ3_XXS仅比UD-IQ3_S快约0.4 tok/s。模型权重的减小并没有带来解码速度的同比提升。 测试 4/4 — UD-IQ2_M — 128K上下文下约14.9 tok/s 量化:UD-IQ2_M 完全卸载时的VRAM估算:90812 MiB 附加选项:--n-cpu-moe 36 加载时间:42.72秒 平均生成速度:约14.9 tok/s 生成期间的内存使用情况 系统RAM:约81 / 125 GB 专用VRAM:约22.6 / 24.0 GB GPU使用率:约91% CPU使用率:约61% CPU频率:约5.27 GHz 这是所测试配置中最快的,在保持相同的128K上下文配置和相同的Q8_0 KV缓存的情况下,接近15 tok/s。 最重要的优化是在以下方面找到合适的平衡:将密集层和非专家层保留在GPU上;将q8_0 KV缓存保留在GPU上;仅将所需数量的MoE专家张量移至系统RAM;几乎填满RTX 3090的VRAM,同时避免显存不足错误。 --n-cpu-moe的最佳值因每种量化的大小而异: UD-IQ4_XS:--n-cpu-moe 38 UD-IQ3_S:--n-cpu-moe 38 UD-IQ3_XXS:--n-cpu-moe 37 UD-IQ2_M:--n-cpu-moe 36 结果还表明,降低量化大小并不会带来完全线性的速度提升。UD-IQ3_S和UD-IQ3_XXS的性能相当接近,而UD-IQ2_M的提升最大,生成速度比UD-IQ4_XS高出约50%。 此对比仅涉及生成性能和内存使用。我尚未包含四种量化之间质量或精度的可控对比。
查看原文

相似文章

Deepseek V4 Flash 在 RTX 5090 MoE 上运行

Reddit r/LocalLLaMA

用户分享了在 RTX 5090 上使用 llama.cpp 的一个分支运行 DeepSeek-V4-Flash (Q2_K) 的优化基准测试结果,实现了 21.3 token/秒的生成速度和 100 万上下文大小。