Vllm服务后台的前缀缓存率和单个请求的前缀缓存率

vLLM后台服务显示的Prefix cache hit rate: 45.7%,而通过流式响应获取的"usage":{"prompt_tokens":18995,"total_tokens":26108,"completion_tokens":7113,"prompt_tokens_details":{"cached_tokens":16464}}计算出来为86.7%(16464/18995),为啥差别这么大

vLLM日志中的 Prefix cache hit rate(如45.7%)是统计最近1k次prefix cache查询的命中率,反映的是一段时间内所有请求的平均命中情况;而你通过流式响应 usage 字段计算的 cached_tokens/prompt_tokens(如86.7%)仅代表当前单个请求的命中率,两者统计口径不同,因此数值可能有较大差异。详细解释见官方文档相关实现说明

需要更详细的原理和统计方式说明吗?

Sources:

Hint: Mention @RunLLM in the post for followups.