惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Schneier on Security
Schneier on Security
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
The GitHub Blog
The GitHub Blog
T
Tailwind CSS Blog
MongoDB | Blog
MongoDB | Blog
Blog — PlanetScale
Blog — PlanetScale
T
The Blog of Author Tim Ferriss
罗磊的独立博客
H
Help Net Security
博客园 - 聂微东
Apple Machine Learning Research
Apple Machine Learning Research
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
G
GRAHAM CLULEY
S
Schneier on Security
A
About on SuperTechFans
MyScale Blog
MyScale Blog
Stack Overflow Blog
Stack Overflow Blog
T
The Exploit Database - CXSecurity.com
Y
Y Combinator Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Register - Security
The Register - Security
P
Proofpoint News Feed
Jina AI
Jina AI
Latest news
Latest news
T
Threat Research - Cisco Blogs
V
Visual Studio Blog
P
Privacy International News Feed
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
T
Tor Project blog
SecWiki News
SecWiki News
Google Online Security Blog
Google Online Security Blog
O
OpenAI News
T
Tenable Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - marsggbo

LLM agent 为什么不稳?问题可能不在模型,在 harness Meta-Harness:让 LLM 自己搜索最优 harness,模型不动,性能白涨 从零理解 ASR:音频基础、Qwen3-ASR 架构,以及离线 vs 流式推理原理 arXiv'26 | LLM Agents 让群体信念变得可编程:当 AI 开始系统性操控舆论 巴西「主权大模型」翻车:当模型可以随便融合,怎么证明它偷了你的权重? 进阶篇 | 不靠人工设计,让遗传算法自己进化出 SOTA 的 LLM 剪枝指标 说人话:一文搞懂现在火热的 LLM agent 自进化原理 ICML'26 | Transformer 真的需要三个投影矩阵吗?Q-K=V 让 KV Cache 直接砍半 UPenn & Meta | NF-CoT:当 LLM 的思维链不再是文字,而是连续概率流 arXiv'26 | 为什么你的多智能体系统越加 agent 越慢?DeLM 用去中心化解了这个矛盾 arXiv'26 | Self-Harness:让 Agent 自己改自己的 harness,pass rate 最高翻倍 Anthropic | 当 AI 开始造自己:递归自我改进离我们有多远? arXiv'26 | Mirage:把世界模型的 3D 记忆搬进 Latent Space,快 10 倍还省 55 倍显存 arXiv'26 | FlashMemory-DeepSeek-V4:用 13.5% 的显存干 100% 的活,超长上下文推理的 less is more MoE 压缩新思路:别删专家、别合并专家,把它们"重映射"就够了 MoE 变 Dense:剪枝+蒸馏能救内存瓶颈吗? ReMoE:只动 Router 就让 MoE 推理快 2 倍?这才是端侧 MoE 部署该有的姿势 LLM 时代,还有人搞 AutoML 吗?有,而且变得更难了 arXiv'26 | Frontier:LLM 推理仿真器,端到端误差从 51.7% 降到 2.6% arXiv'26 | ELF:Flow Matching 生成文字,用 10 倍少的数据全面超越主流 Diffusion LM LLMRouterBench:当所有 routing 方法被拉到同一起跑线,结果有些尴尬 LLM Agent Memory 全景拆解:从 RAG 到 KV Cache 到参数写入,100+ 篇工作的方法演进与真实取舍 EuroSys'26 | TokenFlow:让 LLM 流式输出真正「流」起来 AAAI'23 | NAS-LID:用「局部内在维度」给超网做体检,省 86% 显存 ICLR'26 Workshop Spotlight | Lang-PINN:让 LLM 多智能体帮你从自然语言一键搭建物理信息神经网络 KDD'25 | BurstGPT:我们收集了 1031 万条 Azure OpenAI 真实 trace,LLM 推理系统没你想的那么稳 KBS'21 | 我写的 AutoML 综述被引 2700+ 次,今天来聊聊这篇文章的来龙去脉 EuroSys'26 | PARD 提前丢掉注定超时的请求,goodput 最高提升 176% EuroSys'26 | MFS 把整个 model family 融进一套嵌套模型,KVCache 跨 tier 直接共享 EuroSys'26 | LLMFolder 用常量折叠把 FFN 参数砍 80%,精度反超剪枝方法 65% EuroSys'26 | KUNSERVE 把冗余参数副本临时让给 KVCache,P99 TTFT 最快降 72× EuroSys'26 | IBP 用无损 bit 压缩缓解 PCIe 瓶颈,GNN/DLRM/LLM 推理都能用 FAST'26 | SolidAttention 把 SSD 搬进 LLM 推理,笔记本也能跑 128k 上下文 LLM 推理启动慢?华为用一个「可编程 Page Cache」把模型加载砍了 79% 延迟降47%!FineMoE如何用「细粒度」打破MoE推理的显存-延迟死局 训练一个「会管技能库」的 AI——SkillOS 让 agent 真正越用越强 MoE 训练通信瓶颈有救了?DySHARP 直接在交换机里做计算,干掉 50% 冗余流量 2026-05-12-2508_06526 把 Dense LLM 变成 MoE 还能推理提速?NeurIPS 2024 Read-ME 做到了 说人话理解 EPIC:KV Cache 复用的「编译-链接」范式(附可运行代码复现) 写完 Markdown 还要手动排版?我写了个 VS Code 插件一键搞定微信公众号、知乎、小红书 多 Agent 协作不需要说「人话」?LatentMAS 让 LLM 在隐空间里直接协作 让不同 LLM 之间共享 KV Cache?DroidSpeak 是怎么做到的 RouteMark: 基于路由行为指纹的模型合并知识产权归属 | A Fingerprint for IP Attribution in Routing-based Model Merging Lang-PINN: 从自然语言到物理信息神经网络的多智能体框架 | From Language to PINNs via a Multi-Agent Framework Ghost in the Cloud: 地理分布式大模型训练的安全隐患 | Your Geo-distributed LLM Training is Easily Manipulated GM-Skip: 基于度量引导的 Transformer 块跳过策略加速视觉语言模型 | Metric-Guided Transformer Block Skipping for Efficient VLMs ExpertFlow: 基于预测性专家缓存与令牌调度的高效MoE推理 | Efficient MoE Inference via Predictive Expert Caching and Token Scheduling AutoHete: 面向大语言模型的自动化高效异构训练系统 | An Automatic and Efficient Heterogeneous Training System for LLMs DAC'26 | ExpertFlow:让 MoE 大模型在单卡上跑起来,内存省 93%、速度快 10 倍 Eurosys26 | FineMoE如何用「细粒度」打破MoE推理的显存-延迟死局 LoRA fine-tune吞吐量提升1.96倍!LoRAFusion如何把内存带宽浪费和pipeline bubble一起干掉 Fast26 | LLM 推理启动慢?华为用一个「可编程 Page Cache」把模型加载砍了 79% KV Cache 的两层存储到底卡在哪?FAST'26 这篇论文给出了答案 NeurIPS24 | 把Dense LLM变身MoE还提速 ICML25 | EPIC:KV Cache 复用的「编译-链接」范式(附可运行代码复现) KV Cache 复用的第三条路:FAST 2026 CacheSlide 是怎么解决 Agent 推理的位置漂移问题的 MoE 推理的内存墙,被一块多芯粒芯片打穿了? KVCOMM:让多 Agent 系统的 KV Cache 真正“通起来”,TTFT 直接砍掉 7.8 倍 NSDI26 | DroidSpeak让不同 LLM 之间共享 KV Cache TokenDance 解决多 Agent LLM 推理的 KV Cache 冗余问题 当 AI 开始学会"记住":LLM Agent 记忆系统的统一视角 【转载】ACM MM 投稿论文模板修改成投稿模式 尝试从源头理解 SVD 原理和计算 LLM 场景下的强化学习技术扫盲 解决 Overleaf 中插入 PDF 图片失败的问题:排查与修复 Tmux ctrl+B快捷键失效处理办法 对抗训练综述学习笔记 【转知乎回答】一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding) 二进制中为什么负数是正数取反再加一 leetcode 常见题型代码总结 Prompt-Tuning、P-Tuning和Prefix-Tuning区别和代码实现【转】 Deepspeed ZeRO系列算法原理+通信开销详解 NSCC集群使用笔记 Huggingface Transformers实现张量并行的小坑 set/get_output_embeddings Pytorch 如何使用 storage 实现参数 offload? TACC 集群使用笔记 图解 vLLM 的推理调度策略 大模型推理框架 vLLM 源码解析(二):Block 模块分配和管理 OpenAI 的视频生成大模型Sora的核心技术详解(一):Diffusion模型原理和代码详解 大模型推理框架 vLLM 源码解析(一)
KV Cache 也能「语义共享」?SemShareKV 用 LSH 做到了
marsggbo · 2026-07-23 · via 博客园 - marsggbo

插播:之前写的《动手学 AutoML》终于出版了,从 NAS 到超参优化都有覆盖,适合想系统入门 AutoML 的同学。好了广告结束,现在进入正题。

动手学AutoML书籍封面

原文:SemShareKV: Efficient KVCache Sharing for Semantically Similar Prompts via Token-Level LSH Matching


1. 前言

你有没有想过,当两个用户几乎同时向 LLM 提问,一个问的是"请总结这篇关于气候变化的报道",另一个问的是"帮我概括一下这篇气候危机的新闻",服务器里会发生什么?

大概率:两份几乎一样的 KV cache 被从头算了两遍

这件事搁在单用户场景里不算大问题,但现实中的 LLM 推理服务是高并发的——多文档摘要、对话系统、RAG 检索……同质化 prompt 批量打进来。KV cache 的内存占用和重复计算已经成了推理吞吐量的核心瓶颈之一

现有的优化思路集中在两类:一是压缩单个 prompt 的 KV cache(比如 StreamingLLM、H2O 这些做 token 剪枝的),二是复用多个 prompt 之间共享的前缀(prefix caching)或频繁出现的文本片段。但这两类方案都有一个硬伤:只认"一模一样"的 token,认不出"意思相近"的 prompt

IJCNLP-AACL 2025 Findings 的这篇工作 SemShareKV 做了一件有意思的事:把 KV cache 的复用从"精确匹配"扩展到了"语义匹配"——用 LSH(Locality-Sensitive Hashing)在 token embedding 级别做模糊匹配,让语义相似但措辞不同的 prompt 也能共享彼此的 KV cache。

今天想和大家聊聊这篇工作解决了什么真问题,以及它背后有哪些值得细品的设计。


2. 现有方案的局限

先说说 prefix caching 为什么不够用。

prefix caching 的逻辑很直接:如果两个 prompt 的开头部分 token 完全一致(比如 system prompt 一模一样),那这段的 KV cache 可以复用,不用重新计算。vLLM 的 automatic prefix caching 就是这个思路,工程上做得很成熟。

但现实场景里,语义相似的 prompt 往往在措辞上差异很大:

  • "请总结这篇新闻" vs. "帮我概括一下这篇报道"
  • 用户把同一篇文章换了个说法重新问一遍
  • RAG 检索召回的文档块,内容重叠但 token 序列不同

这时候 prefix caching 完全失效,只能从头算。问题的本质是:现有的 cache 复用依赖于 token 级别的精确匹配,而"语义相似"和"字面相同"之间有一道鸿沟

SemShareKV 要做的,就是跨过这道鸿沟。


3. 三个关键洞察

SemShareKV 能行得通,背后有三个实验观察作为支撑,我觉得这部分是全文最有意思的地方。

3.1 高偏差 token 的排名在不同层之间高度一致

如下图,作者统计了不同模型(LLaMA3.1-8B、Mistral-7B、MPT-7B)相邻层之间"偏差 token"排名的 Spearman 相关系数:

相邻层高偏差 token 排名的 Spearman 相关系数

Spearman 相关系数普遍在 0.85 以上,中间层甚至接近 0.95

这意味着什么?你只需要在浅层识别出"哪些 token 比较重要",这个判断在深层依然成立。不用每一层都重新计算一遍重要性排序,省了大量 overhead。

3.2 越深的层关注的 token 越少

如下图,随着层深度增加,attention 实际上只集中在越来越少的 token 上:

越深的层关注的 token 越少

这个现象很多做 KV cache 压缩的工作都观察到过。深层的 attention 更"挑剔",只盯着少数关键 token。这意味着深层的 KV cache 有更大的压缩空间。

3.3 越深的层包含越多冗余信息

如下图,作者测量了不同层 KV cache 的"冗余度"(相邻层之间的相似度):

越深的层包含越多冗余信息

深层 KV cache 和上一层的差异越来越小,很多计算都是在做重复的事情

把这三个洞察合在一起:重要 token 的集合是稳定的,深层关注更少的 token,深层信息更冗余。这给了 SemShareKV 一个操作空间:可以只复用"重要 token"对应的 KV cache,略去冗余部分,损失可控


系统的整体流程如下图:

SemShareKV 系统总体架构

核心步骤分三块:LSH 模糊匹配、RoPE 的重新处理、KV cache 重排与复用。

4.1 LSH 做语义级别的 token 匹配

传统 prefix caching 用的是精确的 token ID 匹配。SemShareKV 换了个思路:在 token embedding 空间里做近似最近邻搜索,用 LSH 找到语义相近的 token 对

具体做法:对每个 token,用 LSH 把它的 embedding 映射成一个 hash,语义相近的 token 有很高概率被映射到同一个 hash bucket 里。新 prompt 进来之后,先对所有 token 做 LSH 编码,和 cache 里已有的 reference prompt 的 token hash 做匹配,找出配对。

这样,即便新 prompt 和已缓存的 prompt 一个字都不一样,只要语义足够接近,对应的 token 就能被匹配上,KV cache 就能复用

4.2 RoPE 的巧妙处理

这里有个工程上的坑——KV cache 复用时,位置信息怎么处理?

标准的 LLM 在生成 K 时会把 RoPE(Rotary Position Embedding)加进去,position encoding 是和 token 位置绑定的。如果直接把 reference prompt 的 K cache 搬过来用,位置信息就乱了——因为匹配上的 token 在两个 prompt 里位置不同。

SemShareKV 的解决方案如下图:

修改后的 KV cache 存储方式

左边是标准流程:RoPE 在存入 cache 之前就已经加到 K 上了。右边是修改后的流程:K cache 里存的是加 RoPE 之前的原始 K 值,position encoding 单独存

这样,复用 cache 时可以按照新 prompt 里的 token 位置重新应用 RoPE,而不是硬搬 reference prompt 的位置信息过来。位置准了,后续的 attention 计算才对。

4.3 KV cache 重排与复用

匹配完 token 之后,要做一次重排(Rearranged Cache):把 reference prompt 的 KV cache 按照匹配关系重新排列,让它对应到新 prompt 的 token 位置上。

匹配上的 token,直接复用重排后的 KV cache;没匹配上的 token,走正常的 attention 计算,重新算 KV。

核心收益就在这里:减少了需要重新计算的 token 数量,越相似的两个 prompt,复用率越高,省的算力越多。


5. 实验结果

5.1 质量:在多个摘要数据集上几乎无损

如下表,在 MultiNews、Wikihow、SAMSum、PubMed、BookSum、BigPatent、LCC 等 8 个摘要数据集上,分别用 Mistral-7B 和 LLaMA3.1-8B 做测试:

性能对比表格

SemShareKV 在大多数数据集上的 ROUGE-L 和 baseline 相差不大,部分数据集甚至略有提升(匹配到的 KV cache 相当于引入了额外的"上下文信息")。质量损失在可接受范围内。

5.2 效率:最高 6.25× 加速,42% 显存节省

这是最直接的收益。在 5k tokens 长输入场景下:

  • 推理速度最高提升 6.25×
  • GPU 显存使用减少 42%

数字不算夸张,但对于长文档摘要、高并发推理服务这类场景来说,这个量级的提升已经相当可观了。

5.3 Prompt 相似度的影响

如下图,不出意料,两个 prompt 越相似,匹配率越高,加速效果越好:

Prompt 相似度对效果的影响

实线(Replacement,用 reference 的 KV 替换)和虚线(Elimination,直接删掉未匹配 token)相比,Replacement 策略在高替换比例下降得更慢——说明直接复用 KV 比暴力删 token 更温和。

5.4 消融实验

如下表,消融实验验证了三个设计选择的必要性:LSH 匹配、RoPE 处理方式、层级选择策略:

消融实验结果

去掉任何一个组件,ROUGE-L 都有可见的下降。


6. 几点个人想法

这篇工作解决的场景非常实际——语义相似但 token 不同的 prompt 之间的 KV cache 复用,是 prefix caching 一直以来的盲区。用 LSH 做 token 级别的模糊匹配,这个方向本身很有意思,工程上也可以落地。

但也有几个地方值得继续打磨:

  1. LSH 匹配本身有开销。对每个 token 做 hash 并查找 reference prompt,在高并发场景下也是一笔算力支出,文章里对这块的分析不够细。

  2. Reference prompt 怎么选?当 cache 里积累了大量历史 prompt 后,如何快速找到最合适的 reference,是个工程上的检索问题,文章里没有深入讨论。

  3. 动态 prompt 场景的泛化能力。论文主要在摘要任务上测,摘要的 prompt 相似度天然偏高,泛化到其他场景(比如代码生成、多轮对话)效果如何,需要更多验证。

总体来说,这是一篇方向清晰、动机充分的工程论文,把"语义级别的 KV cache 共享"这个想法走通了。KV cache 优化这个方向还有很大空间,期待后续有更多工作在"跨请求复用"上继续挖。

欢迎评论区交流,有问题也可以指出来哈哈。