跳转至

LMCache

LMCache 是专注于 KVCache 分层存储和跨实例共享的项目,定位是推理引擎的 KVCache 后端插件,而非独立推理引擎。

内容时效性

LMCache 更新极快。请以项目的最新文档和 Release Notes 为准。


定位与架构

与其他框架的区别

LMCache 不是推理引擎,而是 KVCache 存储层的专用实现:

推理引擎(vLLM / SGLang)
        ↕  LMCache 接口
LMCache 存储层(多后端可插拔)
    ├── Valkey(Redis 兼容,集群/TLS/GLIDE)
    ├── 本地 FS 连接器(零依赖持久化)
    └── S3 L2 Adapter(对象存储后端)

核心价值: 多个推理引擎实例共享同一套 KVCache 存储,实现跨实例的 Prefix Cache 命中。

多级存储

KV 分布到四层:

  1. GPU HBM:最快,由推理引擎本地管理
  2. CPU DRAM:LMCache 管理的一级 offload 目标
  3. 本地 SSD:通过本地 FS 连接器持久化
  4. 远端对象存储 / RDMA:S3 Adapter 或分布式 DRAM 池

主要特性

可插拔后端

LMCache 的多后端设计:

  • Valkey 连接器:支持集群模式 / TLS / GLIDE(AWS Valkey 托管)
  • 原生 FS 连接器:零外部依赖的本地文件持久化,适合单机部署
  • S3 L2 Adapter:对象命名规范 / 容量统计 / DeleteObject 驱逐 / circuit breaker

PD 后端优化

  • fire-and-forget batched_submit_put_task(PR #3038):worker 线程不阻塞等待 alloc + RDMA write,大幅降低 Prefill 节点的 PD 传输延迟
  • batched_contains()(PR #2966):批量查询替代逐 key 串行查询,减少 round-trip

Cache 隔离

  • cache_salt(PR #3042):写入 ObjectKey / IPC key,按租户/用户隔离 KV,防止跨租户命中
  • 与 vLLM 的 cache_salt 机制对齐,可以端到端保证隔离语义

可观测性

LMCache 在可观测性上投入较多:

  • L0 subscriber(PR #2974):追踪 GPU KV block 的生命周期、空闲时间、复用间隔
  • StorageManager 二进制 trace 能力(PR #3063):细粒度的 I/O 追踪
  • BlendEngineV2 per-request root OTel span(PR #3062):每个请求的完整 KV 操作链路

MP 模式与跨节点传输

  • block-id 级 KV 传输内核(PR #2838)
  • HND KV 格式(PR #2826):跨节点传输的序列化格式
  • AMD hipFile GPU-direct storage 支持(PR #2799)

持久化与恢复

  • persistence interface + nixl_store_dynamic 适配器(PR #2938)
  • 支持 KV cache 的持久化到磁盘,服务重启后可以恢复 prefix cache 状态

AMD MI300X Agent Trace 实测

LMCache 在 2 张 AMD MI300X 上重放 739 条匿名化 Claude Code agent trace,给出了分层 KV cache 的 regime 边界:

场景 HBM Prefix Cache LMCache DRAM tier 结论
8 并发 / 32K 上下文 完成 52 请求,平均 TTFT 16.66s 完成 25 请求,平均 TTFT 24.29s HBM 尚未受压时,LMCache connector 开销是净损失
32 并发 / 100K 上下文,GPU 利用率 0.78 平均 TTFT 102.17s,p95 240.87s 平均 TTFT 34.59s,p95 112.78s working set 超出 HBM 后,DRAM tier 明显胜出

交叉点约在 250K–300K token 持续 working set。低于 100K token 可优先使用 HBM prefix cache;250K–500K token 区间 LMCache DRAM tier 开始必要;超过 500K token 需要考虑 NVMe L3。

来源:主站 field-note LMCache 在 AMD MI300X 上的部署实录

部署陷阱

陷阱 后果 处理
ROCm 环境安装 CUDA-only wheel libcudart.so.12 / libcuda.so.1 import 错误 MI300X 需源码编译并清理 CUDA 依赖
缺失 PYTHONHASHSEED=0 TP worker hash 不一致,命中率为 0 多进程部署固定 hash seed
未开启 vLLM prefix caching LMCache 无法复用 vLLM builtin hash 同时启用 --enable-prefix-caching
保存 decode cache 每步 decode 同步写 CPU,可能 100–250s 卡顿 不设置 LMCACHE_SAVE_DECODE_CACHE=true

来源:主站 field-note LMCache 在 AMD MI300X 上的部署实录


使用场景

适合 LMCache 的场景

  • 多副本 Prefix Cache 共享:多个 vLLM 实例同时服务同一模型,公共 prefix(system prompt、文档库)跨实例共享
  • 长期持久化 KV:文档库、代码仓库的 KV 预计算后持久化到 SSD/S3,新实例启动即可命中
  • 混合存储策略:热 KV 在 GPU/DRAM,冷 KV 在 SSD/S3,按访问频率自动分层

不适合的场景

  • 单实例、低并发场景:vLLM/SGLang 内置的 prefix cache 已足够,引入 LMCache 有额外复杂度
  • 对延迟极度敏感的实时场景:额外的存储查询 round-trip 可能影响 TTFT

关联章节

来源:主站 briefs 2026-03-25 ~ 2026-05-14

版本历史

版本 日期 说明
v0.2 2026-06-02 新增 MI300X agent trace regime 交叉、LMCache 部署陷阱和 L2/L3 启用边界
v0.1 2026-05-14 从框架对比总览拆分,整理多后端架构、PD 优化、可观测性、持久化等核心特性