[基准测试] RTX 5090上的DFlash推测解码与KV缓存压缩 — 3.26倍加速

Reddit r/LocalLLaMA 新闻

摘要

在 RTX 5090 上对 DFlash 推测解码结合 KV 缓存压缩进行的基准测试显示,针对 Qwen3.6-27B 模型最高可实现 3.26 倍加速,且困惑度下降极小,其中 q4_0/turbo4 提供了最佳平衡。

**硬件:** RTX 5090 | **模型:** Qwen3.6-27B | **框架:** BeeLlama.cpp 完整的基准测试脚本、原始数据、配置和生成产物均可按需提供——只需私信或评论即可。 --- 过去一周,我在 Qwen3.6-27B 上对 [DFlash 推测解码](https://arxiv.org/abs/2602.06036) 结合 KV 缓存压缩策略进行了基准测试。结果令人惊讶,值得与所有运行本地推理的朋友分享。 ## 环境配置 - **GPU:** NVIDIA RTX 5090(32GB 显存) - **模型:** Qwen3.6-27B 两种量化版本:UD-Q5_K_XL 和 NVFP4-Q8_0 - **草稿模型:** Qwen3.6-27B-DFlash-Q5_K_M - **框架:** [BeeLlama.cpp](https://github.com/Anbeeld/beellama.cpp/)(支持 DFlash + TurboQuant/TCQ) - **困惑度数据集:** WikiText-2 - **吞吐量:** 自定义编程提示(代码生成任务) ## TL;DR | 策略 | 加速比 | PPL 变化 | 代码质量 | |------|--------|----------|----------| | **q4_0/turbo4** ⭐ | **3.18x** | **+0.02%** | 3.0/3.0 HTML | | turbo4/turbo4 | 3.26x | +0.04% | 已测试 | | turbo2_tcq/turbo2_tcq | 3.26x | +0.76% | 轻微下降 | | 基线(无 KV 压缩) | 2.92x | 不适用 | 2.33/3.0 | **`q4_0/turbo4` 是最佳选择:** 3.18 倍加速,PPL 退化仅 +0.02%——与基线 K_Q8_V_Q5_1 在统计上无差异。 --- ## 1. Q5_K_XL vs NVFP4-Q8_0:哪种量化更胜一筹? 当启用 DFlash 时,Q5_K_XL 在所有指标上均优于 NVFP4-Q8_0: | 量化 | 基线 tok/s | 最佳 tok/s | 最大加速比 | |------|------------|------------|------------| | **Q5_K_XL** | **176.5** | **195.2** | **3.26x** | | NVFP4-Q8_0 | 157.2 | 152.6 | 2.83x | Q5_K_XL 基线速度更快,且随 KV 压缩策略扩展性更好。 ## 2. 困惑度:KV 压缩质量 在 WikiText-2 上测量(越小越好)。K_Q8_VQ5_1 基线:**PPL = 1.8046 ± 0.00295** | KV 策略 | PPL | 与 K_Q8_VQ5_1 的偏差 | |---------|-----|-----------------------| | **q4_0/turbo4** | **1.8050** | **+0.02%** | | turbo4/turbo4 | 1.8053 | +0.04% | | turbo4/turbo2_tcq | 1.8100 | +0.30% | | turbo4/tcq | 1.8132 | +0.48% | | turbo2_tcq/turbo2_tcq | 1.8184 | +0.76% | `q4_0/turbo4` 策略的 PPL 与 K_Q8_VQ5_1 基线相差不到一个标准差。 **复现命令:** ```bash python -m tests.benchmark_kv_cache --model Qwen3.6-27B-UD-Q5_K_XL-kv_q4_0_turbo4-dflash-256k ``` ## 3. 草稿模型:验证 Anbeeld 的断言 我的结果证实了 Anbeeld 所述:使用小型草稿模型可获得约 3 倍加速: - **草稿模型:** Qwen3.6-27B-DFlash-Q5_K_M(相同架构,更小量化) - **接受率:** 30-51%,取决于 KV 策略 - **加速比范围:** 2.58x 到 3.26x 草稿模型的高效源于 DFlash 使用交叉注意力机制(非逐 token 推测),因此即使较小的草稿模型也能提出有用的 token 序列。 ## 4. 压缩策略深度剖析 ### 策略推荐 | 目标 | 策略 | 权衡 | |------|------|------| | 最佳平衡 | `q4_0/turbo4` | 3.18x 加速,PPL 变化 +0.02% | | 最高速度 | `turbo4/turbo4` 或 `turbo2_tcq/turbo2_tcq` | 3.26x 加速,PPL 变化 +0.04%~0.76% | | 最高质量 | `q8_0/q5_1` | 基线方案,显存占用高 | ## 5. 代码质量:压缩会破坏生成吗? 通过生成俄罗斯方块游戏(CLI Python + 单文件 HTML)进行基准测试,每次迭代 3 次,按功能完整性评分 0-3: | 配置 | CLI | HTML | |------|-----|------| | **Q5_K_XL + q4_0/turbo4** | **2.33/3.0** | **3.0/3.0** | | Q5_K_XL 基线 | 2.0/3.0 | 2.33/3.0 | | Q5_K_XL + turbo2_tcq | 2.0/3.0 | 2.0/3.0 | | NVFP4-Q8_0 + turbo2_tcq | 2.25/3.0 | 1.67/3.0 | | NVFP4-Q8_0 基线 | 1.67/3.0 | 1.33/3.0 | 采用 `q4_0/turbo4` 策略的 KV 压缩实际上提升了代码质量(HTML 3.0/3.0 vs 基线 2.33/3.0)。所有迭代生成的代码均可按需提供。 ## 复现命令 ```bash # 困惑度(WikiText-2) python -m tests.benchmark_kv_cache --model <模型键> # 吞吐量(编程任务) python -m tests.benchmark_dflash --model <模型键> # 代码质量(俄罗斯方块生成) python -m tests.benchmark_tetris --model <模型键> ``` 模型键定义在 `config.yaml` 中。如果您对实际脚本、配置、图表或完整详细报告感兴趣,请通过私信或评论联系我,我会将全部内容发送给您。 ## 可复现性 我正在整理一个公开的 GitHub 仓库,包含完全可复现所需的所有资源(基准测试脚本、配置、原始数据、生成的代码和图表)。目前正在清理并匿名化路径。在此之前,本文提到的任何内容均可按需提供——只需提出请求。 ## 链接 - **BeeLlama.cpp:** [https://github.com/Anbeeld/beellama.cpp/](https://github.com/Anbeeld/beellama.cpp/) - **DFlash 论文:** [https://arxiv.org/abs/2602.06036](https://arxiv.org/abs/2602.06036) @编辑:修正了引用;FP16 改为 K_Q8_VQ5_1——我用作基线的 KV 缓存压缩方案;beellama github;DFlash 论文引用。
查看原文

相似文章

@witcheer:大家都说NVFP4让黑伟德显卡“更快”。我在我的5090上对Qwen3.6-27B进行了三种方式的基准测试:>NVFP4 >普通Q4_K…

X AI KOLs Timeline

在RTX 5090上对Qwen3.6-27B进行的NVFP4基准测试显示,与同等比特的Q4_K_M相比,预填速度提升32-42%,与Q6_K相比提升52-68%,但解码速度提升有限(相比Q4提升+9%),因为解码受内存带宽限制。与Q6相比,质量损失极小(平均-0.8),使得NVFP4成为本地推理的不错选择。