技術指南

PagedAttention 和 vLLM

PagedAttention 是一種記憶體管理技術,它將語言模型的注意力快取儲存在可重複使用的小塊中,而不是一個大的連續區塊中。

閱讀時間約2分鐘最後更新

概述

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 記憶體浪費,以便提供者可以將更多並發會話打包到同一硬體上

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

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 年的一篇論文,並迅速成為廣泛使用的開源服務引擎。