生活分享

KV 快取(KV Cache)是什麼:為什麼對話越長越吃記憶體

KV 快取是語言模型逐個產生 token 時,把前面每個位置在各層算好的 key 與 value 存起來、下一步只補算新 token 的做法。內容用四步示例說明它省下哪些重算,記憶體為何隨上下文長度、層數與注意力頭數成長,PagedAttention、MQA/GQA 與量化各省在哪,以及它和提示詞快取的分工。

閱讀時間約 7 分鐘

對話框旁一排 token 方塊往右延伸,下方記憶體框裡的成對方塊堆成逐步升高的階梯
圖片:Mokaair (© Mokaair)

KV 快取(KV cache)是語言模型推論(inference)時的暫存:模型逐個產生 token,每一步都把前面各位置在每層算好的 key 與 value 留著,下一步只補算新 token 的那一份。它省下重複計算,代價是記憶體:上下文越長,要存的越多。cache 採國家教育研究院資訊名詞的譯法「快取」,Google 機器學習詞彙表繁中版內文也這樣用;KV 沿用論文的英文縮寫。

讀入提示與逐個產生的差別見,key 與 value 的來源見。資料截至 2026 年 10 月。

為什麼前面的 key 與 value 可以留著用

注意力機制把每個 token 轉成 query、key、value:新 token 用 query 比對各位置的 key,再依結果把各位置的 value 加權混合。模型每產生一個 token,就接到輸入後面再算下一個。

能留著用,是因為遮罩。Vaswani 等人 2017 年的設計中,解碼器的自注意力只讓每個位置看到自己和之前的位置,所以某個 token 在某層的 key 與 value 算好後,不會因後面多了新 token 而改變。Hugging Face 文件據此說明,過去的 key 與 value 可以每層各存一份重用,過去 token 的 query 則不必存。

示例:第 1 步到第 4 步各算了什麼、存了什麼

以下是示例,分詞僅示意,未實測:提示有 3 個 token「台南/早餐/推薦」,模型接著寫出「可以吃牛肉湯」。

  1. 第 1 步(讀入提示):3 個 token 一起處理,每層算出並存下 3 組 key 與 value,產生「可以」。
  2. 第 2 步:只送入「可以」,每層只算它的 query、key、value;快取變 4 組,與 4 個 key 比對,產生「吃」。
  3. 第 3 步:送入「吃」,快取變 5 組,比對 5 個 key,產生「牛肉」。
  4. 第 4 步:送入「牛肉」,快取變 6 組,比對 6 個 key,產生「湯」。

不用快取的話,第 4 步要把 6 個 token 在每層的 key 與 value 全部重算。Hugging Face 文件指出:不快取時,每步的注意力成本隨序列長度平方成長;有快取則是線性,記憶體也線性增加。沒省掉的是比對:快取從 3 組長到 6 組,新 token 要比對的 key 也跟著變多。

四步示例:第 1 步讀入 3 個 token 並存 3 組 key 與 value,之後每步只送入一個新 token,快取依序變成 4、5、6 組
由上往下看:第 1 步一次存下提示的 3 組 key 與 value,之後每步只新增一組,先前存好的直接重用;比對的範圍則一步比一步長。分詞為示意。 · 圖片:Mokaair (© Mokaair)

記憶體為什麼越用越多

Hugging Face 文件寫明,每層的 key 與 value 快取,形狀是「批次大小 × 注意力頭數 × 序列長度 × 每頭維度」,對應以下因素:

  • 上下文長度:與提示加已產生的 token 數成正比。
  • 層數:每層各存一份,層數加倍即加倍。
  • 存 key 與 value 的頭數與每頭維度:越多,每個 token 存得越多。
  • 每個數值的位元組數:精度越高,占得越多。
  • 同時處理的序列數:Pope 等人指出,權重整批共用,KV 快取則每條序列各一份。

例外是滑動視窗注意力:Hugging Face 文件說明,這類層的快取長到視窗大小就不再增加。

三種減量做法各省在哪

  • PagedAttention:把快取切成固定大小的區塊,用到才配置,省下照最大長度預留造成的浪費。
  • MQA/GQA:多個 query 頭共用 key 與 value,要存的頭數變少,省下每個 token 的快取與每步要讀的資料。
  • KV 量化:用較少位元存 key 與 value,省下每個數值占的空間。

PagedAttention 出自 Kwon 等人 2023 年的 vLLM 論文。作者在實驗中重做三種預先保留連續空間的舊做法,量到只有 20.4% 至 38.2% 的 KV 快取記憶體真正用來存 token 的 key 與 value;論文總結,在相同延遲水準下,vLLM 的吞吐量是當時既有系統的 2 至 4 倍。它不縮小每個 token 的快取,而是讓同樣的記憶體放進更多請求。

MQA(multi-query attention,Shazeer 2019)讓所有頭共用一組 key 與 value,Pope 等人指出快取因此縮為頭數分之一;Shazeer 的實驗裡品質與原本相近,多數指標略差。GQA(grouped-query attention)把 query 頭分組、每組共用一組,介於每頭各一組與 MQA 之間。兩者改的是模型架構,不是推論時的開關;GQA 論文用約原預訓練 5% 的計算量改訓既有模型。

量化則是推論引擎的選項,Hugging Face 與 vLLM 都支援。KIVI 論文(Liu 等人 2024)把大部分快取壓到 2 位元、最近一小段 token 維持完整精度,在所測模型上品質接近原本;Hugging Face 文件提醒,上下文短且記憶體夠用時,量化反而可能變慢。

KV 快取和提示詞快取的分工

兩者存的都是 key 與 value,差別在範圍:KV 快取在單次請求內,讓逐個產生的每一步不必重算前文;提示詞快取跨請求,把相同字首(prefix)的 KV 快取留給下一個請求,省掉重讀那段。OpenAI、Anthropic 與 vLLM 的官方文件都寫明,提示詞快取存的是 KV 狀態。

字首必須一字不差。vLLM 論文指出,一個 token 的 KV 快取取決於它前面所有的 token,前面改一個字,之後整段都對不上。vLLM 文件也提醒,字首快取只縮短讀入提示的時間,不縮短逐個產生的時間。

依 Hugging Face、vLLM、OpenAI 與 Anthropic 官方文件整理;資料截至 2026 年 10 月。
面向KV 快取提示詞快取
範圍單次請求內的每一步跨請求,限相同字首
存的內容每層每個 token 的 key 與 value字首那段的 key 與 value
省下的重算前文的 key 與 value重新讀入字首
省不掉的新 token 與全部 key 的比對逐個產生輸出的時間
保留多久產生結束即可釋放依服務規則淘汰,如逾時或空間不足

命中條件、有效時間與計費方式見。

長上下文的成本,不只看 token 數

同樣產生一段回答,前文越長,每步要讀的 KV 快取越大。Pope 等人以多頭注意力的超大模型為例指出,批次大、上下文長時,每產生一個 token 都要把 KV 快取從記憶體搬進運算單元一次,期間運算核心幾乎閒置;批次小、序列短時,搬資料的時間才以讀權重為主。

其次是占位。vLLM 論文說明,一批能同時處理多少請求,受限於放得下多少 KV 快取;長上下文請求占得多,能並行的請求就少,而 Pope 等人指出批次變小會讓每個 token 的成本變高。他們也提到,以整段輸入計,注意力的推論成本隨長度平方成長(前面說的線性是指每一步)。

至於命中提示詞快取的輸入,OpenAI 與 Anthropic 都另外計價。所以估長文件問答的速度與費用,要一起看輸入與輸出長度、並行請求數與快取命中;容量面見。

其他和推論資源有關的名詞,見。

  • 生活分享

    世界模型(World Model)是什麼:讓 AI 預測「接下來會怎樣」

    世界模型指 AI 內部用來預測「這樣做之後會怎樣」的模型,但這個詞至少有三種用法:強化學習代理在想像中練習用的環境模型、LeCun 主張預測抽象表示的架構路線,以及能隨操作即時生成畫面的互動環境。內容用示例說明怎麼在想像中規劃,並列出大型語言模型有沒有世界模型的正反研究,附讀新聞時的檢查問題。

  • 生活分享

    視覺語言模型(VLM)是什麼:讓 AI 讀圖片、再用文字回答

    視覺語言模型(VLM)能同時接收圖片與文字,再用文字回答。內容拆解視覺編碼器、連接層與語言模型三段結構,說明 CLIP、Flamingo、LLaVA 三篇論文各補上哪一塊,並和多模態 AI、文字生圖分清楚;也整理它常犯的錯:數錯數量、搞混位置、說出圖裡沒有的東西,附上讀收據時逐行核對的步驟。

  • 生活分享

    溫度(Temperature)是什麼:AI 回答變化程度的取樣參數

    溫度(temperature)是文字生成時調整取樣的參數,讓模型從下一個 token 的機率分布裡抽得更集中或更分散。用假想的台南早餐示例算出低溫與高溫的差別,說明 top-p 的來源和它與 top-k 的差別,並依官方文件與論文指出:調低溫度不代表更準,設成 0 也不保證每次相同,部分模型還不開放調整。

  • 生活分享

    合成資料(Synthetic Data)是什麼:兩種用途、品質控管與模型崩潰

    合成資料是由演算法或模型產生、模仿真實資料特徵的資料,常見用途有兩種:訓練模型,以及在隱私需求下替代真資料。內容依 Self-Instruct、模型崩潰研究(替換與累積資料的差別)與 NIST、ICO 的隱私文件,說明做法、抽查流程,以及它不能保證的事。

最新旅遊情報攻略

資料來源

生活分享