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

推荐订阅源

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 | 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 复用的「编译-链接」范式(附可运行代码复现) KV Cache 也能「语义共享」?SemShareKV 用 LSH 做到了 写完 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 源码解析(一)
EuroSys'26 | KUNSERVE 把冗余参数副本临时让给 KVCache,P99 TTFT 最快降 72×
marsggbo · 2026-07-23 · via 博客园 - marsggbo

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

动手学AutoML书籍封面

EuroSys'26 | KUNSERVE 把冗余参数副本临时让给 KVCache,P99 TTFT 最快降 72×

原文:KUNSERVE: Parameter-centric Memory Management for Efficient Memory Overloading Handling in LLM Serving


1. 前言

你有没有想过,当一个在线 LLM 服务突然遇到一波流量 spike 时,GPU 上最先爆掉的到底是什么?

很多人第一反应是:当然是 KVCache。这个答案没错,但只说对了一半。因为在真实 serving 系统里,GPU HBM 里除了 KVCache,还有一坨非常扎实的 model parameters。更关键的是,这些参数在多副本 serving 集群里经常是重复存的

KUNSERVE 这篇 EuroSys 2026 的工作就抓住了这个点:以前大家处理 memory overloading 基本都围绕 KVCache 打转,drop、swap、migrate,都是在 KVCache 上做文章。但 KUNSERVE 反过来问了一个很系统的问题:

既然参数是 replicated 的,为什么不能临时丢掉一部分参数,把 HBM 让给 KVCache?

这个思路乍一听有点离谱,因为 LLM 没参数还怎么推理?但这篇 paper 有意思的地方就在这里:它不是“丢了就不管”,而是把多个 GPU 重新组织成一个 cooperative group,用 pipeline parallelism 拼出一份完整模型继续 serving。

如下图,作者先展示了常见 LLM serving 形态:多个 serving instance,每个 instance 里有模型参数、prefill/decode batch,以及不断膨胀的 KVCache。

LLM serving 场景

2. 背景:KVCache-centric 方法为什么不够?

LLM inference 有两个核心阶段:prefill 和 decode。prefill 通常 compute-bound,decode 通常 memory-bound。为了避免每生成一个 token 都重复算历史上下文,系统会把每层 attention 的 key/value 存下来,也就是 KVCache。

问题是 KVCache 会随着 batch size、context length、output length 线性增长。平时看起来还能扛,一旦请求扎堆或者生成特别长,HBM 很快就顶住了。

已有方法大体有三类:

  1. Drop KVCache:把部分请求的 KVCache 丢掉,后面重新排队重算。
  2. Swap KVCache:把 KVCache 换到 CPU DRAM,再需要时换回来。
  3. Migrate KVCache:把 KVCache 迁移到别的 GPU。

它们的问题都挺现实:要么浪费已经做过的计算,要么引入 PCIe/RDMA 数据搬运,要么仍然释放不出足够空间。论文里用 BurstGPT trace 做了一个很直观的实验:即使平均 memory usage 只有 58.43%,一旦 burst 导致 KVCache demand 触顶,TTFT 还是会突然飙升。

如下图可以看到,drop、swap、migrate 这些 KVCache-centric 策略,在 overloading 时都会出现明显 TTFT spike。

TTFT 暴涨分析

所以 KUNSERVE 的判断是:只围绕 KVCache 做局部调整,本质上是在排队请求和正在执行的请求之间互相伤害,并没有真正创造更多可用 HBM。

3. 核心观察:参数其实也是一块可调度内存

这篇文章最关键的观察有两个:

第一,model parameters 占 HBM 的比例并不小。论文给出的例子里,Qwen-2.5-14B 参数占单卡 80GB 的 34.4%,Qwen-2.5-72B 占 4 卡 320GB 的 42.3%,DeepSeek-V3-671B 占 32 卡 2560GB 的 61.4%。也就是说,参数不是“背景噪声”,而是一块相当大的 memory resource。

第二,在线 LLM serving 通常会部署多个 replica。参数在不同 instance 上有完整副本。既然参数跨 instance 有冗余,那在 memory pressure 来的时候,就可以选择性丢掉某些 layer 的 replicated copy。

KUNSERVE 的基本动作如下图:当 GPU0/GPU1 都因为 KVCache 不够而要排队时,系统可以让 GPU0 丢掉后半层参数,让 GPU1 丢掉前半层参数;两张卡合起来仍然有一份完整模型,然后用 pipeline parallelism 服务请求。

参数丢弃思路

这里的关键不只是“丢参数”,而是三件事一起做:

  1. 生成一个 drop plan,决定哪些 instance 合并成 group、哪些 duplicated layers 可以丢。
  2. 用 CUDA virtual memory management 把释放出来的物理 HBM remap 到 KVCache buffer 后面,让现有 PagedAttention kernel 不用改。
  3. 在参数不完整的情况下,通过 cooperative execution、KVCache exchange 和 lookahead microbatch formulation,把 pipeline bubbles 尽量压低。

系统结构如下图。全局 scheduler 负责监控 memory pressure,global memory manager 生成 drop plan,local manager 真正调整 GPU memory,distributed execution scheduler 负责重新调度请求。

系统总体架构

4. 方法细节:难点不在丢,而在丢完还能跑得快

如果只是把参数丢掉,然后让几个 GPU pipeline 起来,其实很容易把 latency 搞炸。KUNSERVE 主要解决了三个工程问题。

4.1 Drop plan:尽量少拉人组队

参数 drop 后,一个请求可能需要跨多个 instance cooperative execution。参与的 GPU 越多,pipeline overhead 越大。所以 drop plan 的目标不是“丢越多越好”,而是在满足 queued requests 的 memory requirement 前提下,尽量少合并 instance。

论文用了一个 greedy plan generation:每次从 priority queue 里取出 size 最小的两个 group 合并,丢掉它们之间重复的 layers,直到释放出足够 memory。

drop plan 算法

这个设计挺朴素,但适合 serving 场景:overloading 发生时不能慢慢求最优解,系统需要很快给出可执行 plan。

4.2 Unified GPU virtual memory:不改 kernel 也能用新内存

如果丢掉参数后只是得到一段空闲物理 HBM,还不够。现有 attention kernel 通常假设 KVCache buffer 有固定虚拟地址布局。KUNSERVE 用 CUDA virtual memory API 把释放出来的 physical memory 映射到 KVCache buffer 的虚拟地址空间尾部。

说人话就是:底层换了一块物理内存,但上层 kernel 看到的还是同一块连续 KVCache。

这点很工程,因为它避免了重写 PagedAttention kernel。

CUDA 内存映射

4.3 Lookahead batch formulation:减少 pipeline bubbles

参数 drop 后,系统进入 pipeline execution。pipeline 最大的问题就是 bubbles:前后 stage 执行时间不均衡,GPU 会空等。

KUNSERVE 观察到 LLM batch 的执行时间不是简单由 token 数决定,attention 里的 prefix-attn 和 self-attn 也会影响 cost。于是它提出一个 cost model,再配合 lookahead batch formulation,把请求组织成更均衡的 microbatches。

如下图,普通 chunking 会让不同 microbatch 执行时间差很大,而 KUNSERVE 尝试提前看后续请求,生成更平衡的 batch 配置。

microbatch 均衡

5. 实验设置

KUNSERVE 的实验主要回答一个问题:遇到真实 burst 时,它能不能减少 tail latency,同时不要把 TPOT 搞得太差。

实验平台有两组:

  • Cluster A:8 台服务器,每台 1 张 A800 80GB,scale-out 网络 200Gbps RDMA。
  • Cluster B:2 台服务器,每台 8 张 H800 80GB,单机 NVLink 300GB/s,scale-out 400Gbps RDMA。

模型选择 Qwen-2.5-14B 和 Qwen-2.5-72B。workload 使用 BurstGPT trace,并结合三个 dataset:

  • BurstGPT:平均 input/output length 分别是 642/262。
  • ShareGPT:平均 input/output length 1660/373,最长 input 到 4K。
  • LongBench:更偏 long-context 场景。

baseline 包括 vLLM default、vLLM with PP、InferCept 和 Llumnix。指标主要看 TTFT、TPOT、throughput 和 SLO violation。

6. 结果分析

主结果很直接:KUNSERVE 在 memory overloading 下显著降低 P99 TTFT。论文报告相对其他 baseline,KUNSERVE 的 P99 TTFT 最多快 72.2×

如下图,第一列是 KVCache memory timeline,第二列是 mean TTFT,第三列是 throughput。可以看到 baseline 的 TTFT spike 基本和 KVCache demand spike 对齐;KUNSERVE 在触发 drop 后把 capacity 撑上去,避免请求长时间排队。

端到端时间线

更细的 latency 分布如下图。KUNSERVE 的 trade-off 也很清楚:为了消除 queueing,它会用更大的 batch 和 pipeline execution,因此 P50/P99 TPOT 会有轻微上升。比如 LongBench-14B 上,P50 TPOT 比 baseline 高 15.8% 到 22.7%。但这个开销比排队导致的 TTFT 爆炸小太多,而且仍在应用 SLO 内。

端到端结果

ablation 也挺有说服力。dynamic parameter drop 是主要贡献,在 LongBench + Qwen-2.5-14B 上,P90/P99/P999 TTFT 分别相比 vLLM(DP) 降低 8.8×、11.7×、10.3×。coordinated exchange 又进一步降低 P99/P999 TTFT 1.5×/1.4×。lookahead batch formulation 则把 bubble time 从 21.9% 降到 8.3%,throughput 提升 20%。

消融实验

动态恢复参数也很重要。否则系统过了 burst 还一直按 pipeline mode 跑,正常负载下反而慢。论文在 640s BurstGPT long run 中显示,dynamic restoration 让 P50 TTFT/TPOT 分别降低 28%/23%,P99 TTFT 提升 6.4×。

动态恢复效果

7. 我的 take

我觉得这篇 paper 最有意思的点是,它把 LLM serving 的 memory management 从 KVCache-centric 往 parameter-centric 推了一步。

过去大家默认“参数必须常驻,KVCache 才是可动的”。KUNSERVE 说:这个假设在 replicated serving 集群里未必成立。参数虽然是模型正确性的基础,但某一张 GPU 上的某一份参数副本不是神圣不可动的。只要全局仍然有完整参数,并且 pipeline overhead 可控,丢掉 redundant copy 反而是一个很自然的系统动作。

当然,它也有边界。第一,drop 能释放的 memory 上限就是参数大小,遇到超长 burst 还是要 autoscaling。第二,pipeline cooperative execution 对调度和网络都提出了更高要求。第三,MoE 虽然理论上适配,但 expert parallelism 下不同 expert 的热度和路由分布,可能会让 drop plan 更复杂。

但总体来说,这篇工作抓住了一个 LLM serving 里的核心矛盾:KVCache 是状态,参数是冗余;当状态撑爆 HBM 时,不该只折腾状态,也应该动冗余。

作为研究 LLM inference 系统的牛马,我挺喜欢这个角度。它不是又造一个 attention kernel,而是从 serving cluster 的资源冗余里挖了一块新空间出来。这个方向后面应该还有不少东西可以做。