性能调优#
本指南涵盖了关键的 LMCache 配置选项,这些选项可以帮助您优化生产环境中的性能。
最小检索令牌#
当 LMCache 找到部分 KV Cache 命中时,它会将缓存的令牌加载到显存中,以避免重计算。然而,如果命中的令牌数量很少,从缓存中加载它们的开销可能会超过跳过重计算的好处。
min_retrieve_tokens 设置允许您设置一个阈值:如果需要加载的令牌数量低于此值,LMCache 将跳过检索,并让推理引擎重新计算它们。
备注
即使跳过了查找,LMCache 仍然在内部记录命中的令牌,以便它**不**会重新存储已经存在于缓存中的块。
何时使用#
考虑在以下情况下设置 min_retrieve_tokens:
对于您使用的后端,小负载的传输延迟是显著的。
您的工作负载有许多请求,缓存命中率低,在这种情况下,重计算比缓存加载更快。
您希望减少边际缓存命中的不必要 I/O。
您可以根据您的延迟观察来增加或减少。
配置#
YAML 配置文件:
chunk_size: 256
local_cpu: true
min_retrieve_tokens: 1024
环境变量:
export LMCACHE_MIN_RETRIEVE_TOKENS=1024
工作示例#
创建一个 LMCache 配置文件
lmcache_config.yaml:
chunk_size: 256
local_cpu: true
max_local_cpu_size: 5.0
min_retrieve_tokens: 1024
使用 LMCache 启动 vLLM:
LMCACHE_CONFIG_FILE=lmcache_config.yaml \
vllm serve Qwen/Qwen3-0.6B \
--kv-transfer-config \
'{"kv_connector":"LMCacheConnectorV1", "kv_role":"kv_both"}' \
--disable-log-requests \
--no-enable-prefix-caching
发送请求以填充缓存:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-0.6B",
"prompt": "Explain the theory of relativity.",
"max_tokens": 50,
"temperature": 0.7
}'
发送一个类似的请求,部分重用缓存的前缀:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-0.6B",
"prompt": "Explain the theory of relativity in simple terms....",
"max_tokens": 50,
"temperature": 0.7
}'
检查服务器日志。如果可加载的命中令牌数量低于 1024,您将看到类似于以下的日志消息:
LMCache hit tokens: 762, but need to load: 762 < min_retrieve 1024,
skip retrieve but record for save skip
这确认了小缓存命中被跳过,以便进行重计算,从而避免不必要的传输开销。