@akshay_pachaar:每个推理引擎都犯了同样的错误。像 vLLM 或 SGLang 这样的推理引擎,是位于你的请求与模型权重之间的软件……
摘要
LMCache 是一个开源的 KV 缓存管理层,它将缓存 I/O 与计算分离,可插入 vLLM、SGLang 和 TensorRT-LLM,通过并行化缓存查找和共享 GPU 内存,实现高达 14 倍的首 token 延迟降低和 4 倍的解码加速。
每个推理引擎都犯了同样的错误。
像 vLLM 或 SGLang 这样的推理引擎,是位于你的请求与模型权重之间的软件。它的工作是将模型加载到 GPU 上,将你的提示词输入模型,然后尽可能快地流式返回 token,只要硬件允许。
它擅长的一切,归根结底就是让 GPU 忙于做数学计算。
随着上下文窗口的增长,引擎也开始承担缓存管理任务,这部分也融入了同一个流程。KV 缓存是模型对已读取 token 的已保存理解,而存储它、加载它、以及在 GPU 和 CPU 之间来回传输,都与注意力计算争夺相同的资源。
于是两者轮流占用资源。
Google 的 TurboQuant 展示了这种限制有多严格。它将 KV 缓存压缩到每个值 3 比特,且精度无损,这样缓存块占用更少的 GPU 内存,并更快地传送到 CPU 内存或磁盘。
但压缩并非免费。在传出时需要压缩每个块,在返回时需要解压缩,而这些工作运行在同一个正在生成 token 的 GPU 上。
开启 TurboQuant 后,推理吞吐量相比关闭时下降 20% 以上。问题不在于压缩本身,而在于它运行的流程。
LMCache 是一个开源解决方案,它将缓存管理移入一个与引擎并行的独立进程中。这种拆分带来了三个好处。
→ 交接非常轻量。引擎只需要发送它需要的块 ID,这些是几个标识符而不是数 GB 的数据,而所有缓存的向量实际移动发生在另一端,同时引擎继续计算注意力。
→ 两个进程直接共享 GPU 内存。在两个 GPU 之间传递缓存状态通常需要多次复制数据,而在这里它们读写同一区域,因此一个缓存文档不再在每个 worker 上重复存储。
→ 查找可并行进行。缓存块存在于四个位置:首先是 GPU 内存,然后是 CPU 内存,接着是本地 SSD,最后是云存储。逐一检查意味着最慢的那个决定了你的基准,因此 LMCache 同时查询所有四个位置,并从最先响应的位置流式读取。
这才是真正的转变。缓存工作是 I/O 密集型的,而推理是计算密集型的,将它们放在同一个进程中意味着你对缓存的任何改进都会牺牲推理时间。
在 H200 上使用 Qwen3-235B 模型和 50 个并发用户时,将它们分离实现了 14 倍的首 token 延迟降低和 4 倍的解码加速。启动时间从超过三分钟降至大约 30 秒。
@lmcache 可以直接插入 vLLM、SGLang 和 TensorRT-LLM,支持 NVIDIA 和 AMD,并且任一侧崩溃都能存活,引擎会回退到无缓存推理,直到缓存进程重新连接。
在 GitHub 上查看:https://github.com/LMCache/LMCache
(别忘了点星标 🌟)
下图追踪了一个提示词经过整个路径的过程。我写了 LMCache 工作原理的完整解析,文章引用如下。
查看缓存全文
缓存时间: 2026/07/27 13:55
面向可扩展大语言模型推理的 KV 缓存管理层
博客 | 文档 | 加入 Slack | 社区会议 | 路线图
相似文章
LMCache/LMCache
LMCache 是一个开源的KV缓存管理层,用于LLM推理,通过支持跨推理引擎持久化存储和复用KV缓存,减少首Token延迟并提升吞吐量。
@0xSero:关于 LLM 推理与部署,看这一篇就够了。你听说过:- vLLM - SGLang - llama.cpp - …
vLLM、SGLang、llama.cpp 与 ExLlamaV3 等主流开源推理引擎概览,助你轻松托管并运行大模型。
@_avichawla: LLM推理中的预填充与解码。你是否注意到,LLM的第一个令牌总是需要片刻才出现…
解释LLM推理的两个阶段——预填充和解码,详细说明GPU瓶颈如何从预填充时的计算受限转变为解码时的内存受限,以及KV缓存的重要性。
@Alacritic_Super: 如果你在构建生产级 LLM 应用,学习 LLM 缓存。缓存可降低延迟、GPU 利用率和 AP…
本文强调了在生产系统中使用 LLM 缓存的重要性,以减少延迟、GPU 利用率和成本,并介绍了 LMCache,这是一个用于可扩展 LLM 推理的开源 KV 缓存管理层。
为什么我们要编写自己的C和C++推理引擎
LocalAI 解释了为什么它要编写自己的 C/C++ 推理后端,并展示了其 vllm.cpp 移植版本在多个模型和硬件上的基准测试中,能够实现与 vLLM 相当或更高的吞吐量,同时占用空间远小于 vLLM。