← 返回信息流
GitHub 热榜GitHub Trending · 日·2 小时前

LMCache: 为LLM提供极速KV缓存层

原标题:LMCache/LMCache
Python8,522 stars+17 今日

速览

LMCache是一个专为大语言模型设计的KV缓存层,通过高效缓存和复用键值对,显著降低推理延迟并提升系统吞吐量。它支持跨会话和跨请求的缓存共享,适用于需要高并发和低响应时间的LLM应用场景。

AI 深度解读

这是什么

LMCache 是一个专为大型语言模型(LLM)推理设计的 KV Cache 管理层。它不仅仅是一个缓存工具,更是一个将 KV Cache 从临时的运行时状态转化为可持久化、可复用、可观测的“AI 原生知识”的基础设施层。

作为独立于推理引擎的守护进程(Daemon),LMCache 实现了存储与计算的解耦。它支持将 KV Cache 从 GPU 内存卸载至 CPU 内存、本地存储(SSD)或远程后端(如 Redis、S3),从而在多个推理引擎实例、会话甚至请求之间实现 KV Cache 的持久化和复用。该项目由 Tensormesh 支持,并已成为 PyTorch Foundation 的一部分,旨在成为 LLM 推理生态系统中 KV Cache 管理的事实标准。

解决的问题

LLM 推理,尤其是长上下文、多轮对话和 RAG(检索增强生成)场景,面临着巨大的计算和内存瓶颈:

  1. Prefill 阶段的高延迟:每次新请求到来时,模型都需要对输入提示词(Prompt)进行完整的预填充(Prefill)计算,导致首字延迟(TTFT)较高。
  2. KV Cache 的脆弱性:传统的 KV Cache 存储在 GPU 显存中,与推理引擎进程强绑定(Fate-sharing)。一旦引擎崩溃或重启,所有缓存的 KV 状态即刻丢失,无法复用。
  3. 资源利用率低:不同请求或会话之间可能存在大量重复的上下文信息,但传统架构无法跨请求共享这些已计算好的 KV 状态,导致重复计算。
  4. 硬件与厂商锁定:现有的缓存方案往往与特定的推理引擎或硬件厂商深度耦合,用户难以在不同引擎或存储后端之间灵活切换。

LMCache 通过引入独立的 KV Cache 管理层,解决了上述痛点,显著降低了 TTFT 并提升了吞吐量。

核心功能

  • 引擎无关的独立部署: LMCache 作为独立的守护进程运行,与推理引擎进程分离。即使推理引擎崩溃,KV Cache 也不会丢失,实现了“无命运共享”(No Fate-Sharing)。

  • 持久化与分层 KV Cache 卸载: 支持将 KV Cache 从 GPU 内存卸载到分层存储体系(CPU 内存 -> 本地 SSD -> 远程后端)。这使得 KV Cache 可以在不同的请求、会话和引擎实例之间复用,大幅减少重复的 Prefill 计算。

  • 生产级可观测性: 提供丰富的监控指标,包括:

    • Kubernetes 标准指标(健康监控、性能诊断)。
    • KV Cache 专用指标(请求级/Token 级的前缀缓存命中率、生命周期、请求级 KV Cache 性能)。
    • 管理指标(用户级使用情况)。
  • 可插拔的存储与传输后端: 通过统一接口支持多种存储和传输后端,包括 CPU RAM、本地磁盘(SSD)、Redis/Valkey、Mooncake、InfiniStore、S3 兼容对象存储、NIXL 和 GDS。用户可根据需求自由切换存储供应商。

  • 非前缀 KV 复用(Non-prefix KV Reuse): 超越传统的前缀缓存(Prefix Caching),LMCache 支持在提示词的任何位置复用缓存的 KV 块。结合 CacheBlend 技术,可以 selective recomputation(选择性重新计算)部分 Token 以恢复生成质量,特别适用于 RAG 场景。

  • PD 分离与 KV 传输: 支持预填充(Prefill)工作节点与解码(Decode)工作节点之间的 KV Cache 传输。通过 NIXL 等传输层,利用 NVLink、RDMA 或 TCP 进行高效传输,实现计算与内存资源的解耦。

  • 可插拔的 KV 变换: 提供灵活的 SERDE 接口,允许研究人员和开发者编写自定义的压缩、Token 丢弃和序列化逻辑,以优化存储和传输效率。

亮点 / 与同类相比

  • 真正的 Vendor-Neutral(厂商中立): 与许多绑定特定推理引擎(如仅支持 vLLM 或仅支持 TGI)的解决方案不同,LMCache 是一个通用的 KV Cache 层。它可以与主流开源推理引擎、框架、硬件供应商(NVIDIA, AMD, Arm, Ascend)和存储系统配合使用。这意味着用户可以自由切换推理引擎或存储供应商,而无需重新构建缓存层。

  • 先进的 KV 复用技术: 除了标准的前缀缓存,LMCache 的 Non-prefix KV ReuseCacheBlend 技术是其核心差异化优势。它允许在提示词中间位置复用 KV 块,并通过选择性重算保证质量,这在处理复杂的 RAG 和多轮对话时比传统方案更高效。

  • 生产级就绪与生态整合

    • 硬件支持广泛:已验证支持 AMD MI300X、NVIDIA GPU、Arm 和 Ascend 芯片。
    • 深度集成:已与 NVIDIA Dynamo、Redis、CoreWeave、Cohere 等建立合作或集成。
    • 社区活跃:作为 PyTorch Foundation 的一部分,拥有活跃的开发者社区和明确的贡献指南。
  • 性能优化显著: 在长上下文、多轮对话和知识增强型工作负载中,LMCache 能显著降低 TTFT 并提升吞吐量。例如,与 Redis 结合使用时,可实现更快的 LLM 推理和更低的响应成本。

适合谁用 / 上手

适合谁用:

  • LLM 推理服务提供者:需要降低 TTFT、提高吞吐量,特别是处理长上下文、多轮对话和 RAG 应用的团队。
  • 基础设施工程师:希望实现推理引擎与存储解耦,提高系统容错性(引擎崩溃不丢缓存)和硬件资源利用率。
  • 研究者与开发者:需要灵活实验 KV Cache 压缩、传输和复用策略,并希望获得生产级可观测性的用户。
  • 多引擎环境用户:需要在不同推理引擎(如 vLLM, TGI, SGLang 等)之间切换或混合部署,同时保持 KV Cache 复用的用户。

如何上手:

  1. 安装: LMCache 可以通过 pip 轻松安装:

    pip install lmcache
    
  2. 配置与集成

    • 作为独立守护进程部署,配置其连接的存储后端(如 Redis、S3 或本地磁盘)。
    • 在推理引擎(如 vLLM)中启用 LMCache 客户端,指定连接地址和配置参数。
    • 参考官方文档中的设置选项和示例,根据具体硬件(GPU/CPU/远程存储)和网络环境(NVLink/RDMA/TCP)进行优化。
  3. 监控与优化: 利用 LMCache 提供的丰富指标监控 KV Cache 的命中率、生命周期和性能瓶颈,结合 CacheBlend 等高级功能调整缓存策略。

LMCache 正在成为 LLM 推理生态系统中不可或缺的基础设施层,其持续的社区发展和 Tensormesh 的支持确保了其在企业级应用中的稳定性和前瞻性。

查看原文 →github.com