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 推理可与训练、微调或视觉任务在同一硬件上共存。 |
如何开始
- 安装包(或 Docker 镜像)–
pip install kvcached --no-build-isolation或拉取适当的ghcr.io/ovg-project/kvcached‑sglang/…‑vllm镜像。 - 通过环境变量启用:
export ENABLE_KVCACHED=true export KVCACHED_AUTOPATCH=1 - 启动您常用的 SGLang 或 vLLM 服务器;kvcached 将自动修补引擎并管理 KV 缓存。
- 使用
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