概述
This reduces cache-allocation waste and supports sharing, while vLLM’s actual throughput depends on the workload and system.
深入探讨
当语言模型生成文本时,它会为它看到的每个标记保留一个“KV 缓存”(键和值向量),以便下一个标记可以处理完整的上下文。传统上,每个请求都会保留一大片连续的 GPU 内存,其大小与其最大可能长度相同,当序列较短或长度不同时,会浪费大量内存。 PagedAttention 是加州大学伯克利分校 2023 年 vLLM 论文中引入的,它借鉴了操作系统虚拟内存分页的思想:它将 KV 缓存分割成固定大小的块,这些块可以驻留在内存中的任何位置并按需分配。查找表将逻辑令牌位置映射到物理块。这几乎消除了内存碎片并允许共享块,例如在同一提示的多个输出之间共享块。
现实世界的实施
托管开源 LLM API,其中 vLLM 通过一个 GPU 以高吞吐量为许多并发聊天用户提供服务
通过前缀缓存在数千个请求之间共享较长的系统提示,以便处理一次,而不是重复处理
运行波束搜索或多个采样完成,通过写时复制共享 KV 块以实现公共提示
减少碎片造成的 GPU 内存浪费,以便提供商可以将更多并发会话打包到同一硬件上
PagedAttention 和 vLLM 的未来
vLLM 已成为默认的开源推理主干,PagedAttention 的想法现在出现在大多数服务堆栈中。期望更深入的前缀缓存(跨用户重用缓存的系统提示)、在单独的机器上进行分解的预填充和解码、更智能的逐出策略以及与量化和推测解码的紧密集成。随着上下文窗口增长到数百万个令牌,高效的分页 KV 管理对于保持服务负担得起变得更加重要。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
What is PagedAttention and vLLM?
PagedAttention manages transformer key/value caches using fixed-size blocks mapped from logical token positions. This reduces cache-allocation waste and supports sharing, while vLLM’s actual throughput depends on the workload and system.
文本生成期间“KV 缓存”存储什么?
KV 缓存保存每个先前标记的键和值向量,让模型能够处理完整的上下文,而无需每一步重新计算。
什么样的操作系统概念激发了 PagedAttention 的灵感?
PagedAttention借用了虚拟内存分页:KV缓存被分割成固定大小的页面,这些页面可以存在于任何地方,由块表映射。
PagedAttention解决了传统KV缓存分配的什么问题?
为每个请求保留一大块连续的slab,并根据最大长度调整大小,会浪费大量的GPU内存。分页按需分配小块,减少浪费。
PagedAttention 如何让多个输出共享公共提示的内存?
相同的前缀(共享提示或波束搜索分支)引用相同的物理 KV 页面,仅在分支发散时才进行复制。
vLLM 和 PagedAttention 最初是在哪里开发的?
vLLM 和 PagedAttention 算法来自加州大学伯克利分校 2023 年的一篇论文,并迅速成为广泛使用的开源服务引擎。