Each language version is independently generated for its own context, not a direct translation.
这篇论文介绍了一个名为 Zipage 的新系统,它的核心任务是让大型人工智能模型(LLM)在“思考”和“推理”时,能同时处理更多的请求,而且速度更快。
为了让你轻松理解,我们可以把整个系统想象成一家繁忙的“超级推理餐厅”。
1. 痛点:餐厅的“记忆墙”不够用了
想象一下,这家餐厅(大语言模型)非常聪明,能解决复杂的数学题或写代码。但是,每当它开始思考一个问题时,它需要在一面巨大的“记忆墙”(KV Cache)上写下所有的思考步骤。
- 问题所在:随着问题越来越长,这面墙需要贴的“便签”(记忆数据)就越来越多。
- 后果:餐厅的墙壁空间是有限的。一旦墙贴满了,餐厅就不得不拒绝新进来的客人,或者不得不把正在思考的客人赶出去,导致服务变慢,甚至无法同时接待很多人。这就是所谓的“内存瓶颈”。
2. 旧方法:要么“断章取义”,要么“效率低下”
以前的解决方案主要有两种,但都有大毛病:
- 方法 A(粗暴丢弃):为了腾出空间,直接撕掉墙上的一些旧便签。但这就像为了省纸,把厨师思考的关键步骤撕掉了,导致做出来的菜(回答)味道变差,甚至做不出来。
- 方法 B(按块丢弃):把墙分成大块,整块整块地撕。但这太粗糙了,可能把重要的信息整块扔了,把不重要的留着,效果也不好。
3. 新方案:Zipage 的“智能压缩与分页”魔法
Zipage 提出了一种叫 Compressed PagedAttention(压缩分页注意力) 的新魔法,它结合了两种聪明的策略:
策略一:像“整理行李箱”一样整理记忆(压缩)
Zipage 不会整块撕掉便签,而是像整理行李箱一样,只保留最重要的便签。
- 比喻:想象你在打包去旅行的行李。你不需要把家里所有的东西都带走,你只需要带走最关键的几件。Zipage 会计算哪些“思考步骤”(便签)最重要,把不重要的“废话”扔掉,把重要的“精华”紧紧挤在一起。
- 结果:原本需要 10 个格子的空间,现在只需要 4 个格子就能装下同样的核心信息。这样,餐厅就能同时接待更多客人了。
策略二:像“酒店前台”一样管理房间(分页 PagedAttention)
Zipage 把记忆墙分成了很多小房间(Block)。
- 比喻:以前的系统像是一个大平层,客人来了必须占满一大片。Zipage 像是一家管理精细的酒店,每个客人只占用几个房间。如果客人退房了(思考结束),房间立刻释放给下一位。
- 关键点:即使客人还在思考,Zipage 也会定期帮他们“整理房间”,把不用的杂物清理出去,确保他们永远只占用有限的空间。
4. 三大核心黑科技(让餐厅运转更流畅)
为了让这个系统真正好用,Zipage 还加了三个“加速器”:
异步压缩(一边做饭一边收拾):
- 比喻:以前是厨师做完一道菜,停下来花 10 分钟收拾厨房,然后再做下一道。Zipage 让“收拾厨房”(压缩数据)和“做饭”(生成答案)同时进行。厨师在切菜的时候,助手已经在旁边把刚才用过的盘子洗好了。
- 效果:大大减少了等待时间,厨房(GPU)利用率极高。
混合调度(灵活排号):
- 比喻:以前的排队系统很死板,如果前面有个大桌(长问题)占着位置,后面的小桌(短问题)就得干等。Zipage 的调度员很灵活:如果大桌正在整理桌子,小桌可以先插队进来做简单的菜;如果大桌需要更多空间,就先把那些还没开始整理的大桌请出去稍等,让空间给急需的小桌。
- 效果:无论客人是点快餐还是大餐,餐厅都能保持高吞吐,不会让桌子空着。
共享前缀缓存(拼单模式):
- 比喻:如果 100 个客人都问“今天天气怎么样?”,餐厅不需要为每个人重新写一遍“今天天气”这四个字。Zipage 允许大家共享开头的记忆部分。
- 难点:以前的压缩方法会破坏这种共享。Zipage 发明了一种新办法,在压缩时小心翼翼地保留这些共享部分,确保大家都能复用,节省了大量空间。
5. 最终效果:快如闪电,聪明如初
论文在数学推理(如 AMC 23 竞赛题)和代码生成任务上进行了测试:
- 速度:Zipage 的速度是传统系统的 2.1 倍以上。
- 质量:虽然它压缩了记忆,但回答的准确率依然保持在传统系统的 95% 左右。
- 并发:它能同时处理的请求数量大大增加,就像餐厅的翻台率提高了,但菜的味道没变差。
总结
Zipage 就像给大语言模型装上了一套智能的“记忆整理术”和“动态空间管理术”。它不再让模型因为“记性太好”而把内存撑爆,而是教会模型**“抓重点、省空间、多干活”**。这使得未来的 AI 服务不仅能处理更复杂的问题,还能同时服务更多的用户,而且响应速度更快。
Each language version is independently generated for its own context, not a direct translation.
Zipage 技术总结:通过压缩 PagedAttention 维持 LLM 推理的高并发
1. 研究背景与问题 (Problem)
随着大型语言模型(LLM)向**推理(Reasoning)**范式转变(如在数学、代码领域),模型在生成答案前需要进行大量的思维链(Chain-of-Thought)推理。这导致解码(Decoding)阶段的序列长度显著增加,进而引发以下核心瓶颈:
- 显存瓶颈(KV Cache Memory Bottleneck): 在长序列推理场景下,存储键值(KV)缓存所需的显存急剧增长。传统的 LLM 服务系统受限于显存容量,难以维持高并发(High Concurrency)服务。
- 现有方案的局限性:
- 全量 KV 缓存(Full KV): 显存占用随序列长度线性增长,无法支持长序列的高并发。
- 现有 KV 缓存驱逐(Eviction)方法:
- 部分方法(如 MorphKV, R-KV, G-KV)虽能在解码时保持显存恒定,但缺乏对**连续批处理(Continuous Batching)和前缀缓存(Prefix Caching)**的支持,导致实际吞吐量低于全量 KV 引擎。
- 部分集成到推理引擎的方法采用**粗粒度(Page-wise)**驱逐,容易丢失关键信息,导致性能下降。
- 部分方法(如 KV-Compress)仅支持输入压缩,破坏了前缀缓存结构,显著增加了预填充(Prefilling)成本。
核心挑战: 如何在保持推理性能(Accuracy)接近全量 KV 缓存的同时,通过压缩技术显著降低显存占用,从而支持工业级的高并发推理,并兼容现代推理引擎的关键特性(如连续批处理、前缀缓存)。
2. 方法论 (Methodology)
论文提出了Zipage,一个基于**压缩 PagedAttention(Compressed PagedAttention)**的高并发 LLM 推理引擎。其核心思想是将细粒度的 Token 级 KV 缓存驱逐与 PagedAttention 机制相结合。
2.1 核心机制:压缩 PagedAttention
- 块限制与触发: 每个请求占用的块数上限为 Nmax(预填充阶段可暂时超出)。当请求占用的块数达到 Nmax 且最后一个块被填满时,触发压缩操作。
- 细粒度驱逐: 不同于粗粒度的块级删除,该方法在Token 级别评估 KV 缓存的重要性。
- 观察窗口(Observation Window): 利用最后 w 个 Token 的 Query 状态作为观察窗口。
- 评分机制: 结合注意力分数、冗余度分数(Redundancy Score)和全局分数(Global Score,来自历史注意力)来评估每个 Token 的重要性。
- 保留策略: 保留得分最高的 k=(Nmax−1)×b 个 Token(b 为块大小),将其重新紧凑地排列在前 Nmax−1 个块中,释放剩余块供后续解码使用。
- 优化算法:
- 闪电冗余分数(Lightning Redundancy Score): 针对原始冗余分数计算复杂度 O(N2×b2) 的瓶颈,提出了一种复杂度为 O(N×b2) 的轻量级算法,仅计算块内相似性,大幅加速压缩过程。
- 异步压缩与解码: 将压缩操作与解码操作异步执行。不需要压缩的请求直接进行解码,需要压缩的请求在压缩完成后加入后续解码步骤,避免 GPU 资源闲置。
2.2 混合调度策略 (Hybrid Scheduling)
为了最大化利用显存并避免死锁,Zipage 设计了混合调度策略:
- 查询槽位(Query Slots)分配: 只有前 M 个运行中的请求被分配用于压缩的查询槽位。
- 无槽位解码: 占用块数少于 Nmax 或最后块剩余 Token 较少的请求,无需分配查询槽位即可解码。
- 抢占机制(Preemption): 当无法分配新块时,优先抢占未分配查询槽位的请求。若所有此类请求均被抢占,则回退到受限调度模式。
- 前缀缓存兼容: 针对共享前缀(Shared Prefix)场景,修改压缩策略。压缩时不移动共享块内的数据,而是将压缩后的数据写入新分配的目标块(Target Blocks),从而保留前缀缓存的共享结构,避免破坏前缀缓存带来的性能损失。
2.3 实现细节
- 基于 Triton 实现了高效的 GPU Kernel,优化了跨层并行压缩、注意力分数计算、全局分数更新及 KV 缓存重排等操作。
- 支持 RoPE 位置编码及 FlashAttention,无缝集成现有生态。
3. 主要贡献 (Key Contributions)
- 提出 Compressed PagedAttention: 一种结合 PagedAttention 与细粒度 Token 级 KV 缓存驱逐的新方法,解决了长序列推理中的显存瓶颈。
- 开发 Zipage 推理引擎: 实现了支持连续批处理、前缀缓存和异步压缩的高并发推理引擎。
- 创新算法优化:
- 设计了闪电冗余分数,将压缩过程的计算复杂度降低了一个数量级。
- 提出了混合调度策略和前缀感知压缩,解决了压缩过程中前缀缓存失效和死锁问题。
- 全面的实验验证: 在数学推理(AMC 23, AIME 24)和代码生成(LiveCodeBench)等复杂任务上进行了广泛评估。
4. 实验结果 (Results)
在 AMC 23 等大规模数学推理任务上的实验结果表明:
- 吞吐量提升: Zipage 相比 Full KV 引擎(如 vLLM, Nano-vLLM)实现了 2.1 倍以上 的加速(Speedup)。在特定配置下,吞吐量提升甚至超过 4 倍。
- 性能保持: 在保持高吞吐量的同时,Zipage 的推理性能(Pass@1)达到了 Full KV 引擎的 95% 左右(在 2048 的 KV 缓存预算下)。
- 对比其他方法:
- 相比仅支持 KV 驱逐但不支持连续批处理的方法(如 MorphKV, R-KV),Zipage 在吞吐量上具有显著优势。
- 相比 Nano-vLLM,Zipage 在长输出场景下吞吐量提升更明显,且能维持更稳定的高并发状态。
- 消融实验: 证明了异步压缩、混合调度和前缀缓存共享对提升吞吐量至关重要。例如,禁用异步压缩会显著降低 TPS。
5. 意义与影响 (Significance)
- 突破长序列推理瓶颈: Zipage 有效解决了 LLM 在复杂推理任务中因显存限制而无法支持高并发的痛点,使得在单卡或少量 GPU 上服务大量长序列推理请求成为可能。
- 工业级适用性: 通过兼容连续批处理和前缀缓存,Zipage 能够直接集成到现有的工业级推理基础设施中,无需牺牲现有的优化特性。
- 性能与效率的平衡: 证明了通过精细的 Token 级管理,可以在几乎不损失模型推理准确性的前提下,大幅降低显存占用并提升系统吞吐量,为未来 LLM 服务架构的设计提供了新的方向。
总结: Zipage 通过创新的压缩 PagedAttention 机制和系统级优化,成功在显存受限的硬件上实现了 LLM 推理的高并发与高性能,是解决长序列推理服务瓶颈的重要进展。