TIME WAIT.
#Inference 2026年6月17日 11 MIN READ

LMCache 实用指南:vLLM 推理服务如何复用 KV Cache

LMCache 将重复 prefill 的 KV Cache 抽成可复用缓存层,降低 vLLM 推理 TTFT,适合长 prompt 与高重复前缀场景。

LMCache 实用指南:vLLM 推理服务如何复用 KV Cache

LMCache 把重复 prefill 转成可复用的 KV Cache——适合长 prompt、RAG 固定模板和多实例 vLLM 共享前缀的场景。

LMCache 是什么?

LMCache 解决的是大模型推理中的重复 prefill 问题:当很多请求共享长 prompt 前缀时,把临时 KV Cache 抽到可复用、可观测、可扩展的缓存层里,减少重复计算,降低 TTFT,也就是首 token 延迟。

项目与文档:

先判断是否需要 LMCache

LMCache 更适合这些场景:

如果请求大多很短、互相没有相同前缀,或者瓶颈主要在生成阶段,收益可能不明显。LMCache 省的是重复 prefill,不是让所有 token 都「魔法加速」。

推荐先用 vLLM MP 模式

LMCache 和 vLLM 有两种常见接法:

实用上建议先试 MP 模式。缓存服务独立后,推理引擎重启时不一定丢掉全部缓存,也更方便接管理接口、指标和多实例共享。

安装

官方 Quickstart 推荐 Python 3.12 环境。

使用 uv

uv venv --python 3.12
source .venv/bin/activate
uv pip install lmcache vllm

使用普通虚拟环境:

python -m venv .venv
source .venv/bin/activate
pip install lmcache vllm

生产环境建议固定版本,尤其要确认 vLLM、LMCache 和 connector 版本兼容,不要直接裸用最新版。

启动 LMCache 服务

先启动 LMCache:

lmcache server \
  --l1-size-gb 20 \
  --eviction-policy LRU \
  --chunk-size 16

参数含义:

注意:chunk-size 16 更适合 demo。生产环境通常使用默认值,例如 256。块越小,命中粒度越细,但管理开销更高;块越大,开销较小,但短前缀不一定命中漂亮。

默认端口:

启动 vLLM 并接入 LMCache

另开一个终端启动 vLLM:

vllm serve Qwen/Qwen3-8B \
  --port 8000 \
  --kv-transfer-config \
  '{"kv_connector":"LMCacheMPConnector", "kv_role":"kv_both"}'

如果使用 vLLM 0.20.0 或更新版本,官方建议可显式指定 LMCache 自带 connector:

vllm serve Qwen/Qwen3-8B \
  --port 8000 \
  --kv-transfer-config \
  '{"kv_connector":"LMCacheMPConnector", "kv_connector_module_path":"lmcache.integration.vllm.lmcache_mp_connector", "kv_role":"kv_both"}'

这样可以使用 LMCache 项目中更新的 server protocol 和修复,而不是只依赖 vLLM 内置版本。

用两次请求测试是否命中

测试缓存命中最简单的方法,是发送两个共享前缀的请求。

第一次请求:

curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen3-8B",
    "prompt": "Qwen3 is the latest generation of large language models in Qwen series, offering a comprehensive suite of dense and mixture-of-experts",
    "max_tokens": 100,
    "temperature": 0.7
  }'

第二次保留前缀,只在后面增加内容:

curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen3-8B",
    "prompt": "Qwen3 is the latest generation of large language models in Qwen series, offering a comprehensive suite of dense and mixture-of-experts (MoE) models",
    "max_tokens": 100,
    "temperature": 0.7
  }'

如果 LMCache 正常工作,第一次请求会看到类似 Stored ... tokens 的日志;第二次请求会看到 Retrieved ... tokens,说明共享前缀已从缓存取回。

读懂命中日志

不要只看有没有 Retrieved,还要关注:

判断标准要结合 prompt 长度。比如 5000 tokens 的 prompt 命中 4000 tokens,TTFT 可能明显下降;如果 200 tokens 的 prompt 只命中 32 tokens,业务体感可能很弱。

最容易吃到收益的业务

长系统提示词

企业内部助手常有角色设定、规则、工具说明、输出格式要求。只要这段内容在多次请求中一致,就适合缓存。

RAG 固定模板

RAG 不只有文档片段,通常还有固定提示模板、引用规则和回答约束。如果检索结果重复度高,或用户围绕同一批资料连续提问,LMCache 更有价值。

Agent 工具说明

Agent 经常把工具列表、调用规则、错误处理策略放入上下文。这类内容长、重复度高,是典型可复用前缀。

多实例推理服务

单个 vLLM 进程已有自己的前缀缓存,但多实例扩容后缓存容易碎片化。LMCache 独立出来后,可让多个服务实例共享缓存层。

不建议一开始追求复杂后端

LMCache 支持多种后端,例如 CPU RAM、本地磁盘、Redis/Valkey、S3 兼容对象存储、Mooncake、InfiniStore、NIXL 等。

第一次接入不建议直接上分布式存储。更稳妥的路线是:

  1. 先用本地 CPU RAM 跑通链路。
  2. 观察命中率和 TTFT 是否改善。
  3. 确认真实业务收益后,再考虑跨机器共享、持久化和远端存储。

扩展前需要评估:

缓存层越复杂,排查成本越高。先证明业务 prompt 真的可复用,再扩大架构。

In-process 模式

如果只是本机快速试验,也可以用 In-process 模式:

LMCACHE_CHUNK_SIZE=8 \
vllm serve Qwen/Qwen3-8B \
  --port 8000 \
  --kv-transfer-config \
  '{"kv_connector":"LMCacheConnectorV1", "kv_role":"kv_both"}'

这种方式简单,但缓存跟着 vLLM 进程走。进程重启、崩溃或扩容时,独立性不如 MP 模式。它适合验证概念,不太适合作为长期生产默认结构。

上线前检查清单

接入 LMCache 前,建议做一轮小压测:

如果真实业务 prompt 重复度低,压测结果通常会很直接地告诉你:暂时不该上。

常见坑

把 LMCache 当成普通结果缓存

LMCache 缓的是 KV Cache,不是最终回答。它减少的是模型重新处理前缀的成本,不保证两次输出一样。

只看 tokens/s

LMCache 更直接影响 TTFT 和 prefill 成本。decode 阶段的 tokens/s 可能不会明显变化。

chunk-size 乱调

demo 中使用小 chunk 是为了方便观察命中。生产中要结合 prompt 长度、重复模式、内存和吞吐测试来调,不要照抄演示参数。

版本没对齐

vLLM、LMCache 和 connector 之间存在兼容关系。升级前要看文档和 release note,避免生产环境临时拉最新版。

没有观测指标

缓存系统没有指标就很难排查。至少应观察命中率、命中 tokens、读写耗时、缓存容量、淘汰次数和错误日志。

总结

LMCache 适合「长 prompt 重复出现」的 LLM 推理服务。它不是让模型生成更快的万能按钮,而是把重复 prefill 转成可复用的 KV Cache。

如果已经在用 vLLM,推荐入门路线是:先用 MP 模式本机跑通,再用两条共享前缀的请求确认命中,最后拿真实业务流量对比 TTFT。只有真实命中率足够高,LMCache 才值得进入生产架构。

/related_artifacts

向量嵌入:新的通用接口
#Databases 2024年6月28日

向量嵌入:新的通用接口

检索系统正在从关系查询转向语义相似度,工程接口也随之改变。

阅读全文 arrow_right_alt
Vibe-Trading 介绍:把自然语言研究、回测和交易工具接到 AI Agent
#FinTech 2026年7月03日

Vibe-Trading 介绍:把自然语言研究、回测和交易工具接到 AI Agent

开源 AI Agent 交易研究工作区:自然语言提问、多市场数据、回测报告与 MCP 工具一体化。

阅读全文 arrow_right_alt