跳转至正文

Go Report Card Go Reference License Join Slack

KV-Cache

简介

高效缓存键值 (KV) 张量对于优化 LLM 推理至关重要。重用 KV-Cache 而不是重新计算,可以显著改善首字延迟 (TTFT) 和整体吞吐量,同时最大限度地提高系统资源利用率。作为分布式 LLM 推理平台,llm-d 提供了一套完整的 KV-Cache 管理功能来实现这些目标。

此仓库包含 llm-d-kv-cache,这是一个可插拔服务,旨在实现感知 KV-Cache 的路由 (KV-Cache Aware Routing),并为基于 vLLM 的推理平台中高级跨节点缓存协同奠定基础。

Project Northstar (北极星项目)

有关该项目目标和愿景的详细概述,请参阅 Project Northstar 文档。


KV-Cache 索引器概览

该项目的主要组件是 KV-Cache Indexer (索引器),它是一个高性能库,用于维护 vLLM Pod 集群中 KV-Cache 数据块位置的全局近实时视图。

它由从 vLLM 流式传输的 KVEvents 驱动,当 vLLM 实例创建或驱逐 KV 块时,这些事件会提供结构化的元数据。这使得索引器能够跟踪哪些数据块驻留在哪些节点以及哪一层(例如 GPU 或 CPU)。这些元数据是智能路由的基础,使调度程序能够做出最优的、感知 KV-Cache 的放置决策。

下图展示了主要的数据流:读取路径(打分)和写入路径(事件摄取)。

读取路径

  • 1: 打分请求:调度程序请求 KVCache Indexer 为给定提示词 (Prompt) 对一组 Pod 进行打分
  • 2: 索引查询:索引器根据提示词计算必要的 KV 块键,并查询 KV-Block 索引以查看哪些 Pod 拥有这些数据块
  • 3: 返回分数:索引器向调度程序返回 Pod 及其对应的 KV-Cache 命中分数的映射表

写入路径

  • A: 事件摄取:随着 vLLM Pod 创建或驱逐 KV 块,它们会发出包含这些更改元数据的 KVEvents
  • B: 索引更新事件订阅者消耗这些事件并近实时地更新 KV-Block 索引

如需更详细的分解,请参阅高级 架构配置 文档。


示例

  • KVCache Indexer:一个参考实现,展示如何运行和使用 kvcache.Indexer 模块
  • KVCache Aware Scorer:一个参考实现,展示如何将 kvcache.Indexer 集成到调度程序中(如 llm-d-inference-scheduler
  • KV-Events:演示 KV-Cache 库如何处理 KV-Events,包括使用虚拟 ZMQ 发布者的离线示例和使用 vLLM Helm chart 的在线示例。
内容来源

此内容自动同步自 llm-d/llm-d-kv-cache-manager 仓库 main 分支上的 README.md

📝 建议更改,请 编辑源文件创建 issue