PagedAttention 和 vLLM
PagedAttention 是一种内存管理技术,它将语言模型的注意力缓存存储在可重用的小块中,而不是一个大的连续块中。
概述
It powers vLLM, an open-source serving engine that dramatically boosts how many requests a single GPU can handle.
深入探讨
当语言模型生成文本时,它会为它看到的每个标记保留一个“KV 缓存”(键和值向量),以便下一个标记可以处理完整的上下文。传统上,每个请求都会保留一大片连续的 GPU 内存,其大小与其最大可能长度相同,当序列较短或长度不同时,会浪费大量内存。 PagedAttention 是加州大学伯克利分校 2023 年 vLLM 论文中引入的,它借鉴了操作系统虚拟内存分页的思想:它将 KV 缓存分割成固定大小的块,这些块可以驻留在内存中的任何位置并按需分配。查找表将逻辑令牌位置映射到物理块。这几乎消除了内存碎片并允许共享块,例如在同一提示的多个输出之间共享块。
技术洞察
KV 缓存被分成固定大小的页面,每个页面保存一定数量的令牌的键和值。每个序列的块表将逻辑位置映射到物理页位置,因此序列的缓存不需要是连续的。由于相同的前缀(共享系统提示符或波束搜索分支)可以通过写时复制指向相同的物理页面,因此内存被重用而不是重复,从而将浪费从 60% 以上削减到几个百分点。
战略影响
成本与预算
多年来,架构决策决定着性能和运营成本。
更清晰的判决
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
质量控制
更好的工程选择可以减少生产中的可靠性事故。
PagedAttention 和 vLLM 的未来
vLLM 已成为默认的开源推理主干,PagedAttention 的想法现在出现在大多数服务堆栈中。期望更深入的前缀缓存(跨用户重用缓存的系统提示)、在单独的机器上进行分解的预填充和解码、更智能的逐出策略以及与量化和推测解码的紧密集成。随着上下文窗口增长到数百万个令牌,高效的分页 KV 管理对于保持服务负担得起变得更加重要。
现实世界的实施
托管开源 LLM API,其中 vLLM 通过一个 GPU 以高吞吐量为许多并发聊天用户提供服务
通过前缀缓存在数千个请求之间共享较长的系统提示,以便处理一次,而不是重复处理
运行波束搜索或多个采样完成,通过写时复制共享 KV 块以实现公共提示
减少碎片造成的 GPU 内存浪费,以便提供商可以将更多并发会话打包到同一硬件上
风险与防护栏
优化一项基准测试可以隐藏更广泛的系统弱点。
基础设施和维护成本常常被低估。
随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
实施路线图
在实施之前定义延迟、质量和成本目标。
在实际负载和数据条件下进行基准测试。
仪器监控错误、漂移和用户影响。
在扩展之前准备回滚和事件响应路径。
不断探索
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the PagedAttention and vLLM quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
常见问题
What is PagedAttention and vLLM?
PagedAttention 是一种内存管理技术,它将语言模型的注意力缓存存储在可重用的小块中,而不是一个大的连续块中。它为 vLLM 提供支持,vLLM 是一个开源服务引擎,可显着提高单个 GPU 可以处理的请求数量。
文本生成期间“KV 缓存”存储什么?
KV 缓存保存每个先前标记的键和值向量,让模型能够处理完整的上下文,而无需每一步重新计算。
什么样的操作系统概念激发了 PagedAttention 的灵感?
PagedAttention借用了虚拟内存分页:KV缓存被分割成固定大小的页面,这些页面可以存在于任何地方,由块表映射。
PagedAttention解决了传统KV缓存分配的什么问题?
为每个请求保留一大块连续的slab,并根据最大长度调整大小,会浪费大量的GPU内存。分页按需分配小块,减少浪费。
PagedAttention 如何让多个输出共享公共提示的内存?
相同的前缀(共享提示或波束搜索分支)引用相同的物理 KV 页面,仅在分支发散时才进行复制。
vLLM 和 PagedAttention 最初是在哪里开发的?
vLLM 和 PagedAttention 算法来自加州大学伯克利分校 2023 年的一篇论文,并迅速成为广泛使用的开源服务引擎。