达拉斯 H100 跑 vLLM 推理:怎么看 PagedAttention 的 KV Cache 命中率
vLLM 是当前最流行的 LLM 推理框架,核心优化是 PagedAttention——像操作系统管理内存一样管理 KV Cache,大幅提升显存利用率和吞吐量。在 达拉斯 8×H100 上跑 vLLM,怎么确认 PagedAttention 的 KV Cache 命中率是否正常?云数方舟 教你查看。
第一步:启动 vLLM 并开启 metrics。启动命令:python -m vllm.entrypoints.api_server --model meta-llama/Llama-2-70b-hf --tensor-parallel-size 8 --port 8000
vLLM 默认在 http://localhost:8000/metrics 暴露 Prometheus 格式的指标。
第二步:查看 KV Cache 相关指标。用 curl 获取:curl http://localhost:8000/metrics | grep kv_cache
关键指标:
– vllm:kv_cache_usage_ratio:KV Cache 显存占用比例。应 < 0.9(超过会触发抢占或拒绝请求)。
– vllm:num_requests_waiting:等待 KV Cache 释放的请求数。应为 0 或很小。
– vllm:gpu_cache_usage_perc:GPU 显存中 KV Cache 的占比。
这里说的”PagedAttention 的命中率不是传统 CPU 缓存的命中率”,这个是指它衡量的是”能否成功为请求分配 KV Cache 块”,而不是”块是否已在缓存中”。
第三步:计算有效命中率。vLLM 的 PagedAttention 允许不同请求共享相同的 KV Cache 块(如相同 system prompt)。通过日志观察:
– 启动 vLLM 时加 --log-stats 参数,每秒输出统计信息。
– 关注 cache_hit_rate(如果有)或 num_shared_blocks / total_blocks。
– 理想情况下,对于多轮对话(相同历史),共享块比例应 > 50%。
| 指标 | 健康值 | 异常值 | 含义 |
|---|---|---|---|
| kv_cache_usage_ratio | < 0.8 | > 0.95 | KV Cache 快满了 |
| num_requests_waiting | 0-5 | > 20 | 请求排队严重 |
| gpu_cache_usage_perc | 0.5-0.8 | > 0.95 | 显存几乎耗尽 |
行动建议。在 达拉斯 8×H100 上部署 vLLM 时,建议:
1. 设置 --max-num-seqs 控制并发请求数(避免 KV Cache 耗尽)。
2. 设置 --max-model-len 限制上下文长度(减少 KV Cache 占用)。
3. 用 Prometheus + Grafana 监控 vLLM 指标(参考 Day18 晚篇监控部署)。
4. 如果 KV Cache 命中率低,考虑用 --enable-prefix-caching(vLLM 0.4+ 支持),让相同前缀的请求共享 KV Cache。
记住:vLLM 的 PagedAttention 是推理吞吐量的关键——KV Cache 管理得好,8×H100 可以比原生 HuggingFace 推理多跑 3-5 倍的并发。
📌 查看云数方舟达拉斯 H100 方案:
云数方舟官网 | 达拉斯显卡服务器(8×H100)
本文由 云数方舟 技术团队原创发布,转载请注明出处。