Skip to content

LMCache:推理缓存系统 ​

在当前 AI 生态中,LLM 推理已成为核心基础设施。然而,随着上下文长度和请求复杂度的持续增长,推理成本与延迟压力急剧上升。LMCache 通过精准的 KV Cache 调度与跨请求共享机制,显著降低推理成本并优化响应延迟。

1. 核心思想:每段文本只需读取一次 ​

LMCache 的核心理念是:每一段文本,模型只需读取一次。在真实应用中,大量数据被重复访问——热门文档、历史对话、检索片段等。根据帕累托法则,20% 的内容可能贡献 80% 的访问。LMCache 将所有可复用文本的 KV Cache 统一存储,当后续请求再次引用时直接复用,无需重新计算,无论这些内容出现在请求前缀还是中间位置。

该方案由芝加哥大学开发,已与 vLLM 等引擎集成。实测显示,在多轮问答、RAG 等场景中,TTFT 可提升 3–10 倍,同时有效节省 GPU 计算资源。

2. 三大关键特性 ​

2.1 海量规模(Massive Scale) ​

LMCache 支持存储远超 GPU 显存容量的大规模 KV Cache 数据,通过解耦模型推理与上下文存储,使大模型可以应对更长上下文、更多用户并发。

2.2 极速加载(Blazing Speed) ​

LMCache 基于 CUDA 加速算子与流水线数据传输,可将命中的 KV Cache 以极低延迟加载到 GPU 显存,显著降低 TTFT。

2.3 插件式存储后端(Pluggable Storage) ​

LMCache 提供开放接口,可集成 MooncakeStore、Infinistore、Redis、分布式文件系统(DFS)等多种后端,适配不同企业部署需求。

借助上述能力,LMCache 扩展了 vLLM 分页内存机制的有效边界,使推理引擎可以跨请求复用历史上下文缓存,不再受限于单次会话的显存分配策略。

3. 工作原理 ​

TTFT 受限于 Prefill 阶段,需要将输入上下文编码为 KV Cache 后才能开始生成。LMCache 将 Prefill 阶段计算得到的 KV Cache 缓存起来,下次遇到相同上下文时直接复用,从而大幅降低 TTFT。

LMCache 支持将 KV Cache 存储到内存、磁盘、Redis、GDS、NIXL 等多种后端,详情参阅 存储后端文档。

此外,LMCache 提供了 KV Cache 大小计算工具。以 4K 中文文本估算,2K Token 约需 106 MB 的 KV Cache,存储开销非常大。因此生产环境通常需要配合大容量存储后端(如 Redis、3FS、大容量磁盘)。

4. 快速上手:缓存到内存 ​

4.1 环境变量配置 ​

bash
# 启用 LMCache V1 实验性功能
export LMCACHE_USE_EXPERIMENTAL=True
# 每个 KV Chunk 包含 256 个 Token
export LMCACHE_CHUNK_SIZE=256
# 启用 CPU 内存后端
export LMCACHE_LOCAL_CPU=True
# 分配 50 GB 固定 CPU 内存
export LMCACHE_MAX_LOCAL_CPU_SIZE=50

4.2 启动 vLLM 服务 ​

bash
export CUDA_VISIBLE_DEVICES=7
vllm serve /data/models/Qwen2.5-7B-Instruct \
    --no-enable-prefix-caching \
    --max-model-len 16384 \
    --kv-transfer-config \
    '{"kv_connector":"LMCacheConnectorV1", "kv_role":"kv_both"}'

5. 超越推理引擎:LLM 原生编排层 ​

除缓存技术外,LMCache 团队还提出了面向 LLM 推理的原生编排层(LLM-Native Orchestration) 愿景。当前业界几乎将全部注意力集中在推理引擎内部优化(如 vLLM、SGLang、TensorRT-LLM),却忽视了引擎之上、跨引擎的系统级优化空间。

5.1 现状:以引擎为中心的扩展 ​

当前大模型推理系统主要由两部分构成:

  • 推理引擎:针对单个模型实例优化推理性能。
  • 编排层:借助 Kubernetes 等工具水平复制引擎实例。

这种思维假定性能增益主要来自引擎内部,编排层只是无状态的“薄壳”。驱动该模型的开源系统包括:

这些方案在横向扩展上表现良好,但难以实现更深层次的系统级优化。

5.2 新前沿:跨引擎的全局优化 ​

真正的性能提升来自“跨引擎”的智能编排,例如:

  • 动态 Prefill / Decode 分离
  • 跨会话的 KV Cache 共享、传输与压缩
  • 在线 KV Cache 更新(融合、编辑、翻译)
  • 请求路径外的后台计算
  • 查询迁移与跨 Agent 流水线

这些优化需要“有状态的协同”与“智能调度”,而原生 Kubernetes 方案很难直接提供。

5.3 Kubernetes 的局限性 ​

Kubernetes 仍是现代基础设施的核心,但仅靠它做 LLM 推理编排会限制上限:

  • 仅支持无状态副本:LLM 工作负载依赖共享的 KV Cache 与中间工具调用状态,而 Kubernetes 原生不支持请求与副本间的状态共享。
  • 仅支持请求驱动执行:缓存压缩、后台预取、后台融合等优化需要在关键路径外运行,Kubernetes 的基于请求-响应的调度模型难以支撑。
  • 不适合 LLM 特有逻辑:推理专用调度(如延迟敏感型任务优先)用 Go/Rust 实现的原型效率较低。
  • 运维复杂度高:相比 OpenAI、Fireworks 等托管服务,基于 Kubernetes 的推理栈部署和运维难度更高。

5.4 LLM 原生编排器的需求 ​

下一代推理编排器应具备:

  • 面向张量的通信与状态共享能力(用于 KV Cache 复用、迁移与流水线)
  • 可中断的后台任务(用于压缩、融合及非请求类计算)
  • 感知延迟、资源占用与依赖关系的实时 / 后台任务调度
  • 易于部署与运维,即使团队缺乏深厚基础设施经验

这不是取代 Kubernetes,而是对其补充:Kubernetes 负责容器生命周期、节点扩缩与集群管理,而 LLM 原生编排器负责理解 LLM 特有模式。

总结 ​

LMCache 不仅在缓存算法上突破了前缀匹配限制、支持多级存储与跨引擎共享,还从系统架构层面提出了 LLM 原生编排的演进方向。对于希望降低长上下文推理成本、提升 TTFT 的团队,LMCache 是一个低成本高潜力的切入点。

参考 ​

Maintained by Robin