推論與服務

分頁注意力(paged attention)

Transformer 生成文字時,會替每個過去的 token 存一組鍵向量與值向量——也就是 KV 快取——這個快取每走一步就多一格。最直覺的做法是為每個請求預留一整塊連續、按最長可能序列大小切出的記憶體,但多數請求其實提早結束,於是那些預留空間就空在那裡。當許多請求並發時,這種碎片化浪費掉大半 GPU 記憶體,限制了你能同時服務多少使用者。分頁注意力借用了作業系統虛擬記憶體的點子:把快取切成固定大小的分頁,讓一個序列的分頁可以散落在任何地方。

每個序列維護一張區塊表,把它的邏輯位置映射到實體 KV 分頁,就像分頁表把虛擬位址映射到實體位址一樣。注意力核心被改寫成透過這層間接索引去蒐集鍵與值,而不再假設它們連續排列。由於分頁是按需配置的,幾乎不會有記憶體浪費在填充上,省下的容量直接轉化為更大的批次與更高的吞吐量。分頁還能共享:兩個有共同前綴的請求可用寫時複製指向同一批實體分頁,這正是前綴快取的基礎。

分頁注意力是讓高吞吐量的開源服務變得實用的關鍵機制,也是 vLLM 的核心,如今已被廣泛仿效。

它的勝出不在於注意力運算更快,而在於記憶體裝填更緊密——分頁注意力是靠塞進更多並發序列來提升吞吐量,而非縮短單一請求的延遲。

又称
PagedAttention分頁注意力vLLM KV paging