集成#

LMCache充当一个缓存中间件,位于LLM推理引擎和存储系统之间,支持:

  • 透明缓存重用:自动检测和重用先前计算的 KV 缓存

  • 性能优化:在多轮对话和 RAG 中,首次令牌的时间(TTFT)减少 3 倍至 10 倍。

  • 资源效率:通过缓存重用显著节省显存周期

  • 可扩展架构:支持单节点和多节点部署

支持的引擎#

LMCache 目前支持与以下内容集成:

  • vLLM

  • SGLang

  • **TRT-LLM**(即将推出)

与 vLLM 的集成#

当 LMCache 与 vLLM 集成时,推理管道会增强以查找并注入缓存的 KV 块,以便处理任何重复使用的输入内容。下面的序列图展示了提示请求如何通过 vLLM 和 LMCache 流动:

        sequenceDiagram
participant User as User Application
participant VLLM as vLLM Engine (LMCache Connector)
participant Cache as LMCache Storage (CPU/Disk)
User->>VLLM: Prompt request (LLM query)
VLLM->>Cache: **Lookup** KV cache for prompt tokens
alt Cache hit for some tokens
    Cache-->>VLLM: Return cached KV chunk(s)
    VLLM->>VLLM: Inject KV into model's cache (skip recomputation)
else Cache miss (no KV for tokens)
    Cache-->>VLLM: No cached data (proceed normally)
end
VLLM->>VLLM: **Generate** remaining tokens (compute new KV)
VLLM-->>User: Respond with completion
Note right of VLLM: *LLM output is returned without waiting for cache storage.*
VLLM->>Cache: **Store** new KV chunk(s) (async background put)
    

缓存查找:在接收到新的提示后,vLLM(通过 LMCache 连接器)计算标识符(例如,令牌序列的哈希值)并查询 LMCache 以获取匹配的 KV 缓存块。如果发生缓存命中,LMCache 将检索 KV 块(可能来自 CPU 或磁盘)并将其返回给 vLLM。然后,vLLM 将这些 KV 张量注入到模型的注意力缓存中,而不是从头开始重新计算它们。

使用缓存的推理:vLLM 继续进行推理。对于没有可用缓存的提示部分(缓存未命中),模型会像往常一样计算新的 KV 值。缓存的片段(例如,之前见过的文本)在计算中被跳过,显著减少了首次令牌时间(TTFT),并节省了显存周期。

异步缓存写入:在处理完提示后,任何新生成的 KV 缓存块(对应于该提示的内容)都被交给 LMCache 进行存储。此放置操作是异步进行的(在后台),因此不会延迟响应。响应会及时返回给用户,而 LMCache 的后台任务将把新的 KV 数据卸载到 CPU、磁盘或其他后端以供将来重用。