Skip to content

把显存/并发/KV 缓存的关系讲清楚,给压测与调参清单。

🎯 文章目标

  • 明确显存与并发/吞吐/上下文的关系
  • KV/Prefix Cache 的收益与使用方式

📚 背景/前置

  • 显存:模型参数 + KV 缓存 + 激活 + 额外开销
  • 并发:批处理带来吞吐提升,但会引入头阻塞
  • 缓存:相同前缀/相同请求收益显著

🔧 核心内容

1) 容量估算

  • 粗略估:显存 ≈ 模型大小 × 系数(量化后更小)+ KV × 并发
  • 观测 tokens/s、TTFB、P95/P99,定位瓶颈

2) KV/前缀缓存

  • 同一前缀复用,大幅降低 prefill 时间
  • 场景:模板固定、系统提示较长

3) 并发与批处理

  • 按“token 数”限流,避免大输入拖慢整体
  • 动态调 batch,目标是提升吞吐但不牺牲长尾

💡 实战示例:vLLM 参数

bash
--max-num-batched-tokens 8192 --gpu-memory-utilization 0.9

📊 对比/取舍(速查)

  • 吞吐 vs 延迟:批处理/缓存/量化与模板瘦身组合调优

🧪 踩坑与经验

  • 盲目放大 batch 导致头阻塞
  • 未开启前缀缓存,白白浪费 prefill

📎 参考与延伸

  • KV/Prefix Cache、 vLLM/TGI/LMDeploy 文档

💭 总结

  • 用“容量估算 + 缓存 + 动态 batch + 观测”稳住性能