GitHub user Ray7788 edited a comment on the discussion: LLM 推理 KV Cache 分布式缓存方案

前期调研

# KV Cache 背景介绍
目标是KV Cache缓存层可以作为独立的代理层运行,也可以作为嵌入到同一推理栈中的库运行。

(GPU → CPU → Disk)
在推理过程中,每个新生成的token都依赖于之前生成的所有token。

模型会为每一层保存注意力键和值,以避免每次都重新计算整个上下文。这些键和值统称为 KV 缓存。

如果没有缓存,每次请求都会重新计算之前所有token的嵌入向量——这对于较长的上下文和重复的提示来说很快就会成为瓶颈。

大多数推理引擎(例如 vLLM、Text Generation Inference或 Hugging Face 
Transformer)已经在单个会话中使用了缓存。

然而,这些缓存会在请求完成后被丢弃——这意味着后续查询中相同的前缀会触发完整的重新计算。

## LM Cache
LMCache充当客户端和 LLM 引擎之间的加速层。LMCache不会让每个请求都从头开始,而是识别重复的前缀,检索先前计算的 KV 
缓存,并将它们直接提供给模型。与 vLLM 不同,LMCache 可以将 KV 缓存存储在单个请求的生命周期之外——跨会话、用户甚至服务器。

它在模型执行之前增加了一个缓存查找阶段,在推理之后增加了一个缓存存储阶段,有效地包围了 LLM 引擎。

层级位置延迟使用场景GPU 内存最快 < 1 毫秒 
活跃会话和热门前缀CPU 内存中等 ~10 毫秒 热缓存,
不常用上下文磁盘/固态硬盘最慢 ~100 毫秒 用于不常用或大型上下文的长期存储

缓存会根据访问时间和访问频率在各层之间动态迁移——这是一种类似于现代内存层次结构的热/温/冷数据策略。

键值缓存可以高效地从推理引擎中提取并加载回推理引擎,存储在分层存储设备(CPU内存、本地磁盘、远程磁盘和Redis)中,并通过不同的网络(以太网、RDMA、NVLink)传输。


当 GPU 或 CPU 内存已满时,LMCache 会使用LRU(最近最少使用)和TTL(生存时间)策略来清除过期的缓存条目。
它还会维护轻量级元数据(例如哈希值、偏移量和张量形状),以确保即使在重启后缓存的一致性。



GitHub link: 
https://github.com/apache/dubbo-go-pixiu/discussions/860#discussioncomment-15581293

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: 
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to