ovg-project/kvcached

Virtualized Elastic KV Cache for Dynamic GPU Sharing and Beyond

kvcached – 共享 GPU 上 LLM 的弹性 KV-Cache

功能简介 – kvcached 是一个位于 LLM 服务引擎(例如 SGLang 或 vLLM)和 GPU 之间的库(及守护进程)。它为引擎提供 KV 缓存的类虚拟内存视图,因此缓存可以惰性预留,并且仅在请求实际需要时才由真实 GPU 内存支持。这使得 GPU 内存使用具有弹性:多个模型可以共享同一 GPU,空闲模型可以“休眠”,同一 GPU 还可以运行其他工作负载,如训练或视觉模型。

重要性 – 当前服务栈在启动时为每个模型的 KV 缓存分配固定大小的 GPU 内存。当流量激增时,您必须过度配置 GPU;当流量较低时,大部分内存处于空闲状态。kvcached 的按需分配在多模型场景中将首 token 时间(TTFT)缩短了 2-28 倍,并可减少所需的 GPU 数量,直接转化为成本节约。

主要特性

  • 弹性 KV 缓存 – 根据负载变化分配和回收缓存块。
  • GPU 虚拟内存抽象 – 逻辑 KV 地址在运行时映射到物理 GPU 页面。
  • 内存限制与控制 – CLI 和修订版 API 允许您实施每模型上限。
  • 前端路由与休眠模式 – 自动路由请求并将空闲模型置于休眠状态。
  • 前缀缓存 (APC / RadixCache) – 在保持弹性的同时跨请求复用公共提示前缀。
  • 支持主流引擎 – 支持 SGLang (≥ v0.5.11) 和 vLLM (≥ v0.17) 以及多种注意力类型(MHA、GQA、MLA、滑动窗口、混合)。
  • AMD / ROCm 感知 – 在 ROCm 上自动切换到非连续布局。

典型用例

场景 优势
多 LLM 服务 多个模型共享一个 GPU,消除静态分区。
无服务器 LLM 模型仅在请求到达时启动;缓存按需分配。
复合 AI 流水线 检索 → 推理 → 摘要阶段可共享内存,在单个 GPU 上实现复杂流水线。
GPU 共存 LLM 推理可与训练、微调或视觉任务在同一硬件上共存。

如何开始

  1. 安装包(或 Docker 镜像)– pip install kvcached --no-build-isolation 或拉取适当的 ghcr.io/ovg-project/kvcached‑sglang / …‑vllm 镜像。
  2. 通过环境变量启用:
    export ENABLE_KVCACHED=true
    export KVCACHED_AUTOPATCH=1
    
  3. 启动您常用的 SGLang 或 vLLM 服务器;kvcached 将自动修补引擎并管理 KV 缓存。
  4. 使用 kvctl 列出、监控或删除控制文件,并使用提供的 CLI 调整限制。

性能快照 – 在 A100-80GB 上使用三个 Llama-3.1-8B 模型的基准测试中,kvcached 将 TTFT 与基线静态分配引擎相比降低了最多 28 倍。

文档与社区 – 完整的架构、API 参考和部署指南位于项目的 DeepWiki 页面和官方网站 kvcached.org 上。Slack 频道、GitHub issues 以及不断增长的采用者列表(Google、Red Hat、AMD 等)提供支持。

许可证 – Apache 2.0。

相关

  • 项目
  • 项目
  • 项目
  • Dispatch