LLM 推理 KV Cache 分布式缓存方案 #860
Replies: 1 comment
-
|
前期调研 KV Cache 背景介绍目标是KV Cache缓存层可以作为独立的代理层运行,也可以作为嵌入到同一推理栈中的库运行。 (GPU → CPU → Disk) 模型会为每一层保存注意力键和值,以避免每次都重新计算整个上下文。这些键和值统称为 KV 缓存。 如果没有缓存,每次请求都会重新计算之前所有token的嵌入向量——这对于较长的上下文和重复的提示来说很快就会成为瓶颈。 大多数推理引擎(例如 vLLM、Text Generation Inference或 Hugging Face Transformer)已经在单个会话中使用了缓存。 然而,这些缓存会在请求完成后被丢弃——这意味着后续查询中相同的前缀会触发完整的重新计算。 LM CacheLMCache充当客户端和 LLM 引擎之间的加速层。LMCache不会让每个请求都从头开始,而是识别重复的前缀,检索先前计算的 KV 缓存,并将它们直接提供给模型。与 vLLM 不同,LMCache 可以将 KV 缓存存储在单个请求的生命周期之外——跨会话、用户甚至服务器。 它在模型执行之前增加了一个缓存查找阶段,在推理之后增加了一个缓存存储阶段,有效地包围了 LLM 引擎。 层级位置延迟使用场景GPU 内存最快 < 1 毫秒 缓存会根据访问时间和访问频率在各层之间动态迁移——这是一种类似于现代内存层次结构的热/温/冷数据策略。 键值缓存可以高效地从推理引擎中提取并加载回推理引擎,存储在分层存储设备(CPU内存、本地磁盘、远程磁盘和Redis)中,并通过不同的网络(以太网、RDMA、NVLink)传输。 当 GPU 或 CPU 内存已满时,LMCache 会使用LRU(最近最少使用)和TTL(生存时间)策略来清除过期的缓存条目。 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
概述
本文档描述如何在 Dubbo-Go-Pixiu AI 网关中实现 LLM 推理的 KV Cache 分布式缓存功能,通过将 KV Cache 卸载到 Redis 集群,实现无状态 LLM 推理架构,大幅降低推理成本。
背景与痛点
当前 LLM 推理架构的局限性
状态耦合问题
弹性扩展受限
资源利用率低
解决方案:无状态 LLM 推理架构
借鉴互联网后端架构演进经验,将 KV Cache 从推理实例中剥离,卸载到分布式存储(Redis 集群),实现:
架构设计
整体架构图
核心组件
1. AI KV Cache Filter
位于 Pixiu 网关的请求处理链路中,负责:
2. Redis 集群
3. LLM 推理实例(SGLang/vLLM)
技术实现
3.1 目录结构
3.2 核心接口设计
KVCacheManager Interface
Redis Backend Implementation
Cache Key Generator
Filter Implementation
配置示例
完整配置
性能优化策略
1. 零拷贝传输
2. 批量操作
3. 压缩存储
4. 连接池优化
监控指标
Prometheus Metrics
Grafana Dashboard
{ "dashboard": { "title": "Pixiu AI KV Cache Monitoring", "panels": [ { "title": "Cache Hit Ratio", "targets": [ { "expr": "rate(pixiu_ai_kvcache_hit_total[5m]) / (rate(pixiu_ai_kvcache_hit_total[5m]) + rate(pixiu_ai_kvcache_miss_total[5m]))" } ] }, { "title": "Cache Get/Set Latency (P95)", "targets": [ { "expr": "histogram_quantile(0.95, rate(pixiu_ai_kvcache_get_latency_seconds_bucket[5m]))", "legendFormat": "Get P95" }, { "expr": "histogram_quantile(0.95, rate(pixiu_ai_kvcache_set_latency_seconds_bucket[5m]))", "legendFormat": "Set P95" } ] }, { "title": "Cost Savings (USD/hour)", "targets": [ { "expr": "rate(pixiu_ai_kvcache_cost_savings_usd[1h])" } ] } ] } }部署架构
Kubernetes 部署
Redis Cluster 部署
性能测试与验证
测试场景
场景 1:无 KV Cache(Baseline)
场景 2:有 KV Cache(Redis 集群)
测试工具
成本收益分析
成本节省计算
假设:
无 KV Cache(每次都预填充)
有 KV Cache(缓存命中率 85%)
每日节省:$300,000 - $198,000 = $102,000(34% 降本)
每月节省:$3,060,000
故障处理与高可用
Redis 集群故障
自动故障转移
降级策略
数据一致性
TTL 过期策略
版本控制
最佳实践
1. 缓存键设计
✅ 推荐:
❌ 不推荐:
2. TTL 设置
3. 内存管理
示例:
4. 监控告警
设置关键告警阈值:
Beta Was this translation helpful? Give feedback.
All reactions