创建与管理 KV Cache 服务

更新时间:
复制 MD 格式

FlashKV 是阿里云 PAI 推出的专为 LLM 推理设计的分布式 KV-Cache 缓存服务,它将 KV 张量分层持久化至内存、磁盘和远端,实现集群级跨实例共享,后续相同前缀的请求直接复用,跳过重复计算,从而大幅降低TTFT,提升服务吞吐量。

核心价值

vLLM、SGLang 等推理引擎的本地前缀缓存仅在单副本内生效,且受 GPU 显存容量制约。KV Cache 服务在此基础上提供集群级系统增强:

  • 集群级共享:已绑定该 KV Cache 服务的所有推理服务副本共享同一份缓存,无论请求被路由到哪个副本,均可命中其他副本已计算的缓存结果。单副本扩展到多副本时,缓存命中率不会因扩容而下降。

  • 大幅降低首 Token 延迟(TTFT):命中缓存的请求跳过公共前缀的整个 Prefill 阶段,TTFT 接近仅处理当轮新增输入的水平。前缀越长(如数千 Token 的对话历史或检索文档),跳过的计算量越大,TTFT 降低越显著。

  • 提升吞吐量,降低成本:跳过 Prefill 释放 GPU 算力,同等资源下可处理更多并发请求,单请求平均计算成本随命中率提升而下降。

  • 突破 GPU 显存容量限制:KV Cache 服务采用内存、磁盘和远端多级分层存储,热点前缀驻留内存保障低延迟,冷门数据自动下沉至磁盘或远端扩展容量,可缓存远超 GPU 显存容量的前缀数据,维持更高命中率;存储容量不受单机限制,增加节点即可线性扩展,扩缩容近乎零改造。

  • 高可用与故障自愈:节点故障后元数据自动清理,缓存状态自动恢复;进程重启后磁盘中的缓存数据可直接复用,推理服务不受影响。扩缩容场景下有效降低数据丢失比例,保障服务稳定运行。

工作原理

KV Cache 服务位于推理引擎与底层存储介质之间,核心流程分两步:

  • 算完即存:推理引擎完成前缀 Prefill 后,将生成的 KV 张量写入 KV Cache 服务,按分层存储策略(内存→磁盘→远端)持久化。

  • 用前先取:后续请求到来时,优先从 KV Cache 服务查找匹配前缀的缓存;命中则直接取回,跳过该前缀的 Prefill 计算。

适用场景

以下场景中不同请求包含大量相同的前缀内容,KV Cache 收益最为显著:

  • 多轮对话:对话历史随轮次持续累积,命中缓存后每轮只需计算新增消息的 KV,TTFT 持续降低。

  • RAG 检索增强生成:检索文档反复出现在不同请求中,命中缓存后每个请求只需计算用户 Query 对应的 KV。

  • 共享系统提示词:多用户共享同一套较长 System Prompt,命中缓存后每个请求只需计算用户输入部分的 KV。

  • 多模型/多实例集群:绑定同一 KV Cache 服务的多个推理服务共享缓存,热点前缀只需计算一次,整体资源利用率提升。

  • 弹性伸缩的推理服务:扩容后新副本直接命中已有缓存,无需等待预热;扩缩容不丢缓存,平稳应对流量峰谷。

KV Cache 不提供推理能力,需与推理服务配合使用;推理服务部署时需选择 KV Cache 服务,绑定后缓存自动生效,无需在推理引擎层额外配置。

创建 KV Cache 服务

  1. 在左侧导航栏,单击服务,切换到KV Cache页签。

  2. 单击+ 创建缓存服务,配置以下参数:

    • 服务名称:支持小写字母、数字、下划线,必须以小写字母开头。

    • 资源配置:KV Cache 服务仅使用 CPU 和内存资源,无需 GPU。

      • 资源类型:选择 EAS资源组资源配额

      • 资源配置:设置副本数、CPU 、内存(GB)和系统盘(GB)。

        缓存容量主要由内存大小决定,建议根据预期缓存数据量适当调大内存。
    • Redis 配置:实例规格建议至少16GB。请使用与工作站(存储用户和使用统计信息)不同的Redis 实例,以防数据相互影响。

      请根据是否已有可用 Redis 实例选择配置方式:

      • 创建新实例:需新建实例时推荐使用,系统将自动完成 Tair 实例创建和白名单配置。

        单击创建Redis实例后,将显示 Tair 实例的创建进度,此过程请勿刷新页面;如已刷新,请前往 Tair 控制台完成剩余操作。创建完成后,页面展示 Redis 地址、Redis 用户名(默认为 default)和 Redis 密码,请妥善保管上述信息。
      • 选择已有实例:账号下已有 Tair 或 Redis 实例时可直接复用,避免重复创建和额外费用。

      • 手动输入:请确保 Redis 实例所在 VPC 与工作站配置的专有网络一致,否则无法正常连接。

  3. 确认配置后,单击部署

管理 KV Cache 服务

  • 查看服务监控:单击KV Cache服务进入详情页面,切换到监控页签。参见FlashKV 监控指标说明 了解服务的整体性能表现,或进行故障诊断与排查。

  • 删除 KV Cache 服务:在 KV Cache 页面,找到目标缓存服务,单击操作列中的删除

    • 删除 KV Cache 服务后,工作站内推理服务将停止使用缓存,已缓存的数据不可恢复,但推理服务本身不受影响,仍可正常接收请求。

    • 删除缓存服务时不会自动删除 Redis 实例,请根据需要手动释放。

FlashKV 监控指标说明

FlashKV 服务提供服务级实例级两个监控面板,两个面板的图表布局和指标含义基本一致,区别在于统计维度不同:

  • 服务级面板展示所有实例聚合后的监控数据,用于观察整体趋势;

  • 实例级面板按实例展示监控数据,用于具体实例的性能分析和问题排查。

所有指标如下表所示:

分类

面板指标

指标说明

空间使用情况

Object Keys

已存储的 Key 总数量,包括内存和本地磁盘中存储的 Key 数量

Object Bytes

已存储的 Object 数据总大小,包括内存和本地磁盘中存储的数据大小

Instance Utilization

各实例的存储空间使用率,用于识别空间使用不均衡或热点实例(仅服务级面板)

请求状态

Request Count

三类不同数据访问请求的访问 QPS,包含:

  • Put: KV Cache 数据写入请求的访问 QPS

  • Get: KV Cache 数据读取请求的访问 QPS

  • Query: KV Cache 数据查询请求的访问 QPS

Request Fail Count

数据写入/读取/查询请求的失败状态数,按返回状态码分组展示

Key状态

Key Status

数据写入/读取/查询请求访问返回的 Key 状态分布

Query Hit Rate

数据查询请求的命中率

数据回收指标

Recycle Count

数据回收操作的主动触发和超时触发次数,包括内存 Eviction 和磁盘 Cleanup

Recycle Keys

回收的 Key 数量,包括 Eviction 淘汰和 Cleanup 清理的 Key 数量

Recycle Bytes

回收的数据大小,包括 Eviction 淘汰和 Cleanup 清理的数据大小

数据加载指标

Reload Keys

从本地磁盘加载的 Key 数量,包括 Restore 同步加载和 Preload 预加载的 Key 数量

Reload Bytes

从本地磁盘加载的数据大小,包括 Restore 同步加载和 Preload 预加载的数据大小

传输指标

Transfer Out

Transfer Engine 不同传输方式(包含 TCP 和 RDMA)的流出数据量大小

Transfer In

Transfer Engine 不同传输方式(包含 TCP 和 RDMA)的流入数据量大小

时延指标

Put Latency Avg

数据写入请求的平均时延,以及各个子步骤的平均时延,包含查询 Meta、分配内存、传输数据、Seal Data

Put Latency P99

数据写入请求的 P99 时延,以及各子步骤的 P99 时延,用于观察长尾延迟,包含查询 Meta、分配内存、传输数据、Seal Data

Get Latency Avg

数据读取请求的平均时延,以及各个子步骤的平均时延,包含查询 Key 内存、传输数据

Get Latency P99

数据读取请求的 P99 时延,以及各子步骤的 P99 时延,用于观察长尾延迟,包含查询 Key 内存、传输数据

Query Latency Avg

数据查询请求的平均时延,以及各个子步骤的平均时延,包含查询 Meta、设置响应 Meta

Query Latency P99

数据查询请求的 P99 时延,以及各子步骤的 P99 时延,用于观察长尾延迟,包含查询 Meta、设置响应 Meta