(APIServer pid=35049) INFO: 116.228.58.210:2075 - "POST /v1/chat/completions HTTP/1.1" 200 OK
(APIServer pid=35049) INFO 09-19 15:38:32 [loggers.py:123] Engine 000: Avg prompt throughput: 1.1 tokens/s, Avg generation throughput: 6.1 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0%
(APIServer pid=35049) INFO 09-19 15:38:42 [loggers.py:123] Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 0.0 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0%
(APIServer pid=35049) INFO: 116.228.58.210:2076 - "POST /v1/chat/completions HTTP/1.1" 200 OK
(APIServer pid=35049) INFO 09-19 15:39:02 [loggers.py:123] Engine 000: Avg prompt throughput: 1.6 tokens/s, Avg generation throughput: 24.9 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0%
(APIServer pid=35049) INFO 09-19 15:39:12 [loggers.py:123] Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 0.0 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0%
(APIServer pid=35049) INFO: 116.228.58.210:2077 - "POST /v1/chat/completions HTTP/1.1" 200 OK
(APIServer pid=35049) INFO 09-19 15:39:42 [loggers.py:123] Engine 000: Avg prompt throughput: 1.4 tokens/s, Avg generation throughput: 24.6 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0%
(APIServer pid=35049) INFO 09-19 15:39:52 [loggers.py:123] Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 0.0 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0%
这些就是 vLLM 的访问日志 + 引擎状态周期日志。逐项解释👇
访问日志(APIServer … “POST /v1/chat/completions” 200 OK)
(APIServer pid=35049) INFO: 116.228.58.210:2075 - “POST /v1/chat/completions HTTP/1.1” 200 OK
• APIServer pid=35049:提供 OpenAI 接口的 Python 进程(Uvicorn/FastAPI)PID。
• 116.228.58.210:2075:客户端 IP:端口。
• POST /v1/chat/completions:OpenAI 兼容的聊天接口。
• 200 OK:HTTP 成功状态(如果是 429/500 就是限流/服务器错误)。
你启动时加了 --disable-log-requests,所以每个请求的详细耗时/令牌统计不会打印,只剩这条简要的访问日志。
⸻
引擎周期日志(Engine 000: …)
(APIServer pid=35049) INFO 09-19 15:39:02 [loggers.py:123]
Engine 000: Avg prompt throughput: 1.6 tokens/s,
Avg generation throughput: 24.9 tokens/s,
Running: 0 reqs, Waiting: 0 reqs,
GPU KV cache usage: 0.0%,
Prefix cache hit rate: 0.0%
这是 vLLM 每隔一段时间汇报一次的健康指标(滑动窗口平均值),字段含义:
• Engine 000:引擎实例编号(单模型通常是 000;多模型/多实例会有 001、002…)。
• Avg prompt throughput:前填充(prefill) 吞吐,单位 tokens/s。
• “前填充”= 把整段提示词(上下文)过一遍注意力;复杂度随上下文长度增大(更吃显存和带宽),所以这里的值常远低于生成阶段。
• Avg generation throughput:生成(decode) 吞吐,单位 tokens/s。
• 使用已缓存的 KV 做一步步生成,通常比 prefill 更快。这个数字是全引擎聚合的平均,不是“每请求”的。
• Running / Waiting:
• Running:当前正被调度在 GPU 上运行的请求数;
• Waiting:在调度队列里等待的请求数;
• 你看到经常是 0/0,表示采样那一刻系统空闲(请求刚结束或暂时没有新流量)。
• GPU KV cache usage:KV 缓存页(PagedAttention)使用率,相对于为缓存池准备的总容量。
• 你这会儿大多是 0.0%,说明采样时没有活跃上下文占着缓存(请求结束后页被归还)。空闲/短请求时看到 0% 很正常。
• Prefix cache hit rate:前缀缓存命中率(不同请求有相同的前缀时可复用 prefill 结果)。
• 0.0% 表示近期请求之间前缀重复很少或无;如果你把 system 提示词、指令的前缀统一(字符级一致、token 一致),这个数字会升高,prefill 更快。
⸻
结合你这几行日志怎么解读
• 有多次 200 OK,说明请求都成功落地。
• 紧接着的周期日志里:
• 15:38:32:prefill 1.1 t/s, generation 6.1 t/s —— 很可能是首次热身/JIT 编译或上下文较长导致 prefill 慢;生成也处在刚热起来阶段。
• 15:39:02:prefill 1.6 t/s, generation 24.9 t/s —— 生成吞吐显著提升,符合“热身后更快”的特点。
• 随后多次出现 Running: 0, Waiting: 0 + 吞吐回到 0.0,只是因为采样窗口内没有活跃请求。
• KV cache usage 0%:空闲瞬间无上下文占用缓存,属正常;真正压测时你会看到这个值上升,接近 100% 时说明容量成为瓶颈。
• Prefix hit 0%:近期请求的前缀不一致(比如系统/指令里有时间戳、随机提示或多空格换行差异),就很难命中。
⸻
想看到更“细”的每次请求耗时/令牌统计?
• 去掉 --disable-log-requests,vLLM 会为每个请求打印类似:
• prefill tokens / generation tokens
• 请求排队时间 / 在 GPU 上执行时间
• 调度分批信息(对于大并发很有用)
⸻
想把这些指标打到监控里(Prom/Grafana)?
• vLLM 支持导出 Prometheus 指标(随版本/参数略有差异)。如果你有监控需求,我可以按你现在的 vLLM 版本给出开启方法 + Grafana 面板模板。
⸻
提升“Prefix cache hit rate”的实用建议
• 固定 system/instruction 前缀:不要在开头拼日期、随机 emoji;空格/换行也要固定。
• 统一 chat 模板:同一模型、同一 tokenizer、同一模板;避免在最前面加用户个性化文字。
• 少改首段:把变化大的信息放在后面(例如把变量放在用户消息里而不是 system 里)。
⸻
1176

被折叠的 条评论
为什么被折叠?



