KV缓存优化
KV 快取儲存變壓器已經計算出的鍵和值,因此它不會為每個新令牌重做工作 - 但它可以膨脹到千兆位元組。
概述
KV cache optimization shrinks and manages that memory so models serve longer contexts to more users at once.
深入探討
在變壓器中,每個新令牌透過注意力的按鍵(K)和值(V)關注所有先前的令牌。在每一步重新計算整個序列的 K 和 V 會是二次的且浪費的,因此模型快取它們:KV 快取。缺點是尺寸。快取隨著序列長度、批次大小、層和頭線性增長,因此長上下文請求可能消耗比模型權重本身更多的 GPU 記憶體。優化從幾個角度解決了這個問題:分頁內存(vLLM 的 PagedAttention)將緩存存儲在不連續的塊中,以消除碎片並實現共享;量化以8位或4位存儲K和V;分組查詢注意(GQA)和多查詢注意(MQA)等架構變化讓許多查詢頭共享更少的鍵/值緩存,從而從源頭緩存大小。
技術洞察
PagedAttention 借用了作業系統的虛擬記憶體分頁:快取位於透過查找表映射的固定大小的區塊中,因此請求僅使用它們需要的區塊,並且相同的前綴(如共用系統提示符)可以指向相同的區塊。 DeepSeek 模型中使用的多頭潛在註意力 (MLA) 將 K 和 V 壓縮為一個小的共享潛在向量,在保持準確性的同時顯著減少記憶體。
戰略影響
成本與預算
多年來,架構決策決定著效能和營運成本。
更明確的決策
技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。
品質管控
更好的工程選擇可以減少生產中的可靠性事故。
KV快取優化的未來
隨著上下文視窗擴展到數十萬或數百萬個令牌,KV 快取成為服務的主要成本。預計積極的快取壓縮和驅逐(丟棄低關注令牌)、預設的跨請求前綴共享、將冷緩存卸載到 CPU 或 NVMe,以及 MLA 和 GQA 等架構成為標準。快取管理將越來越類似於具有分層和智慧預取的完整記憶體層次結構。
現實世界的實施
vLLM 的 PagedAttention 透過打包 KV 區塊而不產生記憶體碎片來服務許多同時聊天會話
Llama 模型中的分組查詢注意力機制減少了 KV 快取大小,以便 GPU 記憶體可以容納更長的上下文
将 KV 缓存量化为 8 位 (KV8),以在长文档摘要期间将缓存内存大致减半
前綴快取可在數千個 API 請求中重複使用共享系統提示的 KV 區塊
風險與防護欄
優化一項基準測試可以隱藏更廣泛的系統弱點。
基礎設施和維護成本常常被低估。
隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。
實施路線圖
在實施之前定義延遲、品質和成本目標。
在實際負載和資料條件下進行基準測試。
儀器監控錯誤、漂移和使用者影響。
在擴展之前準備回滾和事件回應路徑。
不斷探索
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 KV Cache Optimization 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 KV Cache Optimization?
KV 快取儲存變壓器已經計算出的鍵和值,因此它不會為每個新令牌重做工作 - 但它可以膨脹到千兆位元組。 KV 快取優化會縮小並管理該內存,因此模型可以同時為更多用戶提供更長的上下文。
KV 快取儲存什麼以及為什麼?
快取先前令牌中的鍵和值可以避免對每個新令牌重新進行注意力計算,從而節省時間。
為什麼KV快取會成為記憶體問題?
快取大小隨上下文長度和並發性而變化,因此長請求可能會使用大量 GPU 記憶體。
PagedAttention 借用了什麼作業系統概念?
PagedAttention 將快取儲存在透過表格映射的非連續固定大小區塊中,就像作業系統分頁一樣。
Grouped-Query 和 Multi-Query Attention 如何減少 KV 快取大小?
跨多個查詢頭共享鍵/值頭意味著要儲存的 K 和 V 向量要少得多。
KV 快取中前綴共享的好處是什麼?
共用系統提示會產生相同的 KV 條目,因此多個請求可以指向相同的區塊,而不是重複它們。