桃子桃子快讯
返回首页
工具

Tesla P40 KV 缓存实测:F16 反而比 Q8 更快

社区用户在 Tesla P40 上对比 F16 与 Q8 两种 KV 缓存方案,发现 F16 在多数场景下反而更快,瓶颈…

2026.08.23 · 周日3 分钟阅读

在本地大模型推理中,KV 缓存的量化类型(Q8、F16)通常被视为「显存吃紧就降精度」的简单权衡。但一位 r/LocalLLaMA 用户在 Tesla P40 上的实测表明,事情远比直觉复杂:在不少场景下,F16 KV 缓存反而比 Q8 更快,且差距可达 30% 以上。

测试硬件与场景

  • 显卡:Tesla P40(24GB VRAM,单卡)
  • 对比项:Q8_0 与 F16 两种 KV 缓存精度
  • 覆盖上下文长度:低至中等(45k–100k)与高上下文(150k+)两档
  • 量化档位:Q4、Q5 两种模型量化

关键性能数据

  • Prompt 处理速度几乎一致:Q4@45k 场景下 Q8 与 F16 分别录得 237.7 与 237.6 tps,说明 KV 精度对 prefill 阶段影响极小。
  • 生成阶段差异显著:Q5@45k 时 F16 达到 24.11 tps,而 Q8 只有 18.02 tps,F16 领先约 34%。
  • 高上下文阶段:当上下文超过 150k,F16 仍保持领先,直到触发 OOM(显存溢出)而崩溃。

为何 F16 反胜?

帖子作者将原因归结为注意力计算是「算力受限(compute-bound)」,而非「带宽受限(bandwidth-bound)」:

  • Q8 的隐性成本
    • 每个生成 token 都需在注意力读取时把 q8_0 在线反量化为 f16,再做矩阵乘法。在 152k 上下文、40 层以上模型中,单 token 约触发 1900 万次元素转换。
    • 新写入的 KV 条目在存储前还需重新量化。
    • 反量化后的数据流无法像原生 f16 那样高效利用 Tensor Core 融合路径。
  • F16 的代价与收益
    • 152k 上下文下缓存占用约 43GB(Q8 约 22GB),显存带宽压力翻倍。
    • 但数据可直接送入 Tensor Core,零转换开销。
    • 当缓存能装入 VRAM/L2 缓存时,F16 取得决定性优势。

适用边界

  • 适合:上下文长度在 100k 以内、模型可装入单卡 VRAM 的本地推理场景。
  • 不适合:上下文超过 150k 时 F16 会因显存不足而崩溃,此时仍需 Q8 或更低精度保命。
  • 不普适:结论基于 Tesla P40 的算力/带宽比例(FP16 算力充足、带宽受限),在显存更大、算力更紧的高端 GPU 上可能呈现不同趋势。

小结

对于仍在使用 Tesla P40 这类「老卡」跑本地大模型的用户,这组数据传递了一个反直觉但有用的信号:不要为了省显存盲目切到 Q8 KV 缓存——只要上下文没逼近 OOM 阈值,原生 F16 的吞吐量可能更优。实际部署前建议在自己的工作上下文长度下做一次短测,避免凭直觉做出次优选择。

信源