@_avichawla:DeepSeek 又做到了!他们刚刚开源了 DeepInfer,这是其缓存命中时能返回首个 to… 的推理技术栈
摘要
DeepSeek 开源了其推理技术栈 DeepInfer,通过 3FS 复用 SSD 上的 KV 缓存,借助 MLA 将 KV 缓存压缩 93% 的能力,实现首个 token 生成速度最高提升至 26 倍。
查看缓存全文
缓存时间: 2026/10/28 11:38
DeepSeek 又做到了!
他们刚刚开源了 DeepInfer,这套推理系统能在缓存命中时将首个 token 的返回速度提升至原来的 26 倍。
当请求重复使用一段很长的前缀时,比如系统提示词或之前的聊天轮次,服务器可以复用已经计算好的 KV 缓存,而无需再次执行预填充。
理想情况下,你可能会认为这些缓存应该放在 GPU 显存中,因为磁盘实在太慢,似乎根本不适合参与请求处理流程。
但实际上,DeepSeek 将它们存放在 SSD 上。
DeepSeek 推出这项功能时,一段包含 128K 个 token 的提示词在命中缓存后,只需 500 毫秒就能返回首个 token,而此前需要 13 秒。
而在去年的某一天,生产环境流量中 56% 的输入 token 都是直接从磁盘读取的。
所以,只要存储的数据足够小,存储系统的并行带宽足够大,磁盘就不会成为这里的瓶颈。
我们来看看它是如何工作的。
- 为什么要复用 KV 缓存:
在开始生成任何内容之前,LLM 会读取整个提示词,并为每一层中的每个 token 计算一个键和一个值。这个过程叫作预填充,对于长提示词而言,它是耗时最多的部分。
许多请求都有相同的开头。
例如,聊天应用会重新发送之前的每一轮对话,智能体则会在每次调用时重新发送相同的系统提示词和工具定义。
如果保存了这些 KV,下一次具有相同前缀的请求就可以直接加载它们,只计算新增的 token。
- 为什么通常使用 GPU 显存:
每个 token 都要在每一层存储 KV,因此在常规模型中,长提示词的 KV 缓存会达到数 GB 甚至更多。
从磁盘读取这么多数据,可能比在 GPU 上重新计算还要慢。
因此,推理引擎会将它们保存在 GPU 显存中。但 GPU 显存容量有限,旧前缀很快就会被淘汰,许多重复请求也就无法命中缓存。
- DeepSeek 缩小了 KV 缓存:
DeepSeek-V2 引入了多头潜在注意力机制(MLA)。
MLA 不会为每个注意力头分别存储 KV,而是在每一层为每个 token 存储一个小型压缩向量,并在注意力计算过程中从中重建键和值。
根据 V2 论文,与 DeepSeek 此前的 67B 模型相比,这使 KV 缓存缩小了 93.3%。
MLA 将 KV 缓存缩小到了足以存放在低成本磁盘上的程度。
每个缓存 token 占用的字节数更少,意味着每次命中时需要读取的数据也更少,从而使从 SSD 加载比重新计算更快。
- 3FS 同时从多块 SSD 读取:
单块 SSD 仍然太慢,因此缓存存放在 DeepSeek 自研的分布式文件系统 3FS 上。
3FS 将文件拆分为数据块,并将它们分散存储在多个存储节点上的数千块 SSD 中。读取时会并行从多块硬盘获取数据块,从而汇聚它们的带宽。
请求到达时,系统会将其前缀与缓存块进行匹配,将这些块从 3FS 取回主机内存,并在模型已经开始运行的同时,逐层将它们复制到 GPU。
而且,由于每台预填充机器都能访问所有缓存的前缀,请求无需再回到上次处理它的那台机器。
磁盘也很便宜,因此缓存可以保留数天。根据 DeepInfer 文档,智能体流量的前缀缓存保留 3 天,聊天流量的则保留 7 天。
当 KV 缓存足够小、存储系统的并行带宽足够大时,磁盘缓存就能发挥作用。DeepSeek 通过其注意力机制设计实现了前者,通过 3FS 实现了后者。
价格也体现了这一点。目前在 deepseek-flash 上,缓存命中的费用仅为未命中的五十分之一。
如果你使用 API,请将提示词中固定不变的部分(系统提示词、工具、文档)放在最前面,因为只有从第一个 token 开始完全匹配,才算缓存命中。
下图展示了我们讨论的内容。
不过,前缀缓存只是 LLM 推理服务中使用的缓存之一。我最近在一篇文章中介绍了全部四种缓存,并为每一种都提供了代码。
请阅读下方文章。
相似文章
DeepInfer:DeepSeek 模型高性能推理框架
DeepSeek 开源了 DeepInfer——支撑其大规模生产服务的高性能推理框架,具备优化内核、MoE 专家并行、投机解码、批不变推理等特性,并支持 NVIDIA SM100 GPU 和华为昇腾 950 NPU。
@Necokeine: 大家不是做MaaS的可能不清楚,DeepSeek开源的DeepInfer其实是一个非常为DeepSeek 4.1F非常深度定制的。 我举个例子,DeepInfer的任务摊派是完全不考虑显存容量的,为什么呢?因为DS 4.1F的KV极度优化…
讨论指出 DeepSeek 开源的 DeepInfer 是为 DeepSeek 4.1F 深度定制的推理框架,其 KV cache 极度优化(每 token 仅 890 字节),因此任务调度完全无需考虑显存容量;相比之下 Kimi 系列模型 KV cache 开销高出 15-30 倍,导致推理性能和用户体验不佳。
DeepSeek-v4.1 Flash: 突破KV缓存压缩的极限
本文分析了DeepSeek-V4.1 Flash模型,详细介绍了其关于KV缓存压缩的技术报告和架构优化,这些优化实现了高效的长上下文处理和高速推理。
@scaling01: DeepSeek 刚刚将其推理成本降低约5倍,吞吐量达50 TPS
DeepSeek 已将推理成本降低约5倍,同时保持每秒50个token的吞吐量。
DeepSeek开源DSpark,一个可将LLM推理速度提升高达85%的新框架(阅读时间18分钟)
DeepSeek开源了DSpark,这是一个采用MIT许可证的框架,利用推测解码技术将LLM推理速度提升高达85%,支持包括自家DeepSeek-V4、阿里巴巴Qwen和谷歌Gemma在内的多个模型系列。