性能调优#

本指南涵盖了关键的 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

工作示例#

  1. 创建一个 LMCache 配置文件 lmcache_config.yaml

chunk_size: 256
local_cpu: true
max_local_cpu_size: 5.0
min_retrieve_tokens: 1024
  1. 使用 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
  1. 发送请求以填充缓存:

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
  }'
  1. 发送一个类似的请求,部分重用缓存的前缀:

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
  }'
  1. 检查服务器日志。如果可加载的命中令牌数量低于 1024,您将看到类似于以下的日志消息:

LMCache hit tokens: 762, but need to load: 762 < min_retrieve 1024,
skip retrieve but record for save skip

这确认了小缓存命中被跳过,以便进行重计算,从而避免不必要的传输开销。