技術指南

KV快取優化

KV 快取儲存變壓器已經計算出的鍵和值,因此它不會為每個新令牌重做工作 - 但它可以膨脹到千兆位元組。

概述

KV 快取儲存變壓器已經計算出的鍵和值,因此它不會為每個新令牌重做工作 - 但它可以膨脹到千兆位元組。 KV 快取優化會縮小並管理該內存,因此模型可以同時為更多用戶提供更長的上下文。

KV 快取優化是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。

深入探討

在變壓器中,每個新令牌透過注意力的按鍵(K)和值(V)關注所有先前的令牌。在每一步重新計算整個序列的 K 和 V 會是二次的且浪費的,因此模型快取它們:KV 快取。缺點是尺寸。快取隨著序列長度、批次大小、層和頭線性增長,因此長上下文請求可能消耗比模型權重本身更多的 GPU 記憶體。優化從幾個角度解決了這個問題:分頁內存(vLLM 的 PagedAttention)將緩存存儲在不連續的塊中,以消除碎片並實現共享;量化以8位或4位存儲K和V;分組查詢注意(GQA)和多查詢注意(MQA)等架構變化讓許多查詢頭共享更少的鍵/值緩存,從而從源頭緩存大小。

技術洞察

PagedAttention 借用了作業系統的虛擬記憶體分頁:快取位於透過查找表映射的固定大小的區塊中,因此請求僅使用它們需要的區塊,並且相同的前綴(如共用系統提示符)可以指向相同的區塊。 DeepSeek 模型中使用的多頭潛在註意力 (MLA) 將 K 和 V 壓縮為一個小的共享潛在向量,在保持準確性的同時顯著減少記憶體。

掌握 KV 快取優化

KV 快取儲存變壓器已經計算出的鍵和值,因此它不會為每個新令牌重做工作 - 但它可以膨脹到千兆位元組。 KV 快取優化會縮小並管理該內存,因此模型可以同時為更多用戶提供更長的上下文。 KV 快取優化是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。為了加深理解,請將 KV 快取最佳化視為一種操作模型,而不是單一功能:定義所需的結果,澄清假設,並將系統可以可靠地執行的操作與仍需要專家判斷的操作分開。

在實踐中,使用 KV 快取優化的強大團隊可以根據可靠性和成本來優化架構、資料和基礎設施選擇。他們記錄明確的成功標準,根據實際數據和工作流程進行測試,並根據觀察到的失敗模式而不是一次性基準測試勝利進行迭代。這就是理論理解轉變為跨產品、政策和營運的持久能力的地方。

多年來,架構決策決定著效能和營運成本。同時,優化一個基準測試可以隱藏更廣泛的系統弱點。最具彈性的方法是將實驗速度與治理規則結合:運行試點、捕獲證據、發布決策日誌,並隨著模型行為、使用者期望和監管要求的發展不斷更新保障措施。

戰略影響

多年來,架構決策決定著效能和營運成本。

多年來,架構決策決定著效能和營運成本。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

更好的工程選擇可以減少生產中的可靠性事故。

更好的工程選擇可以減少生產中的可靠性事故。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

KV快取優化的未來

隨著上下文視窗擴展到數十萬或數百萬個令牌,KV 快取成為服務的主要成本。預計積極的快取壓縮和驅逐(丟棄低關注令牌)、預設的跨請求前綴共享、將冷緩存卸載到 CPU 或 NVMe,以及 MLA 和 GQA 等架構成為標準。快取管理將越來越類似於具有分層和智慧預取的完整記憶體層次結構。

現實世界的實施

vLLM 的 PagedAttention 透過打包 KV 區塊而不產生記憶體碎片來服務許多同時聊天會話

Llama 模型中的分組查詢注意力機制減少了 KV 快取大小,以便 GPU 記憶體可以容納更長的上下文

將 KV 快取量化為 8 位元 (KV8),以在長文件摘要期間將快取記憶體大致減半

前綴快取可在數千個 API 請求中重複使用共享系統提示的 KV 區塊

實施模式

KV快取優化實踐

vLLM 的 PagedAttention 透過打包 KV 區塊而不產生記憶體碎片來服務許多並發聊天會話。

vLLM 的 PagedAttention 透過打包 KV 區塊而不產生記憶體碎片來服務許多並發聊天會話。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

KV快取優化實踐

Llama 模型中的分組查詢注意力機制減少了 KV 快取大小,因此 GPU 記憶體可以容納更長的上下文。

Llama 模型中的分組查詢注意力減少了 KV 快取大小,因此 GPU 記憶體中可以容納更長的上下文。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

KV快取優化實踐

將 KV 快取量化為 8 位元 (KV8),以在長文件摘要期間將快取記憶體大致減半。

將 KV 快取量化為 8 位元 (KV8),以在長文件摘要期間將快取記憶體大致減半 當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

KV快取優化實踐

前綴快取可在數千個 API 請求中重複使用共享系統提示的 KV 區塊。

前綴快取可在數千個 API 請求中重複使用共享系統提示的 KV 區塊。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

風險與防護欄

!

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

!

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

!

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

實施路線圖

1

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

在實施之前定義延遲、品質和成本目標。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

2

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

在實際負載和資料條件下進行基準測試。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

3

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

儀器監控錯誤、漂移和使用者影響。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

4

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

在擴展之前準備回滾和事件回應路徑。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

不斷探索