什麼是 KV Cache?給初學者的 AI 推理加速完整指南

2026年5月11日閱讀時間約8分鐘

如果你曾經使用過 ChatGPT、Claude 或任何 AI 聊天機器人,你大概會發現它的回應速度相當快——即使是在生成長篇詳細的答案時也一樣。你有沒有想過,這是怎麼做到的?

其中一個最重要的原因,是一種叫做 KV Cache(鍵值快取) 的技術。這是一個大多數人從未聽說過的幕後工程技巧,但如果沒有它,現代 AI 的速度會慢得令人難以忍受。

這篇文章會從零開始,把這個概念說清楚。不需要任何博士學位。

首先,讓我們了解 AI 是如何生成文字的

在理解 KV Cache 之前,我們需要先了解 AI 語言模型運作方式中一個小但重要的細節。

像 GPT 這樣的模型,並不是一次把整個句子都寫出來。它們是一次只生成一個詞(或稱 token,詞元)。每一個詞都是一次獨立的預測。為了預測下一個詞,模型必須回頭看它之前說過的每一個詞。

假設模型正在生成這個句子:「那隻貓坐在墊子上。

  • 生成「」→ 它看了「
  • 生成「」→ 它看了「那隻
  • 生成「」→ 它看了「那隻貓
  • 生成「」→ 它看了「那隻貓坐
  • ……以此類推

這意味著最前面的詞——比如「那」和「隻」——每次生成新詞時都會被重複處理。當模型生成第 100 個詞時,第一個詞已經被重新讀取和處理了將近 100 次。

這是大量的重複浪費。

問題背後的數學

這就是為什麼這個問題在大規模應用時會變得嚴重。

要生成一個 100 個詞的回覆,總處理步驟數是這樣的:

1 + 2 + 3 + ... + 100 = 5,050 步

1,000 個詞呢?超過 500,000 步。工作量以二次方增長——也就是說,當長度加倍時,工作量不只是翻倍,而是以更快的速度倍增。

對於一個同時服務數千名用戶、每人都在生成長篇回覆的模型來說,這會成為巨大的運算瓶頸。必須找到解決方案。

KV Cache 登場

要理解 KV Cache,我們需要稍微看一下注意力機制(Attention Mechanism)——現代 AI 模型的核心引擎。

當 Transformer 模型處理一個 token 時,它會為那個 token 建立三樣東西:

  • Query(查詢,Q): 這個 token 在尋找什麼——它需要什麼上下文?
  • Key(鍵,K): 這個 token 提供什麼——其他 token 應該如何識別它?
  • Value(值,V): 這個 token 對輸出貢獻的實際內容

模型使用這些 Q、K、V 向量來判斷哪些詞彼此最相關。例如在「那隻動物沒有過馬路,因為它太累了」這個句子中,模型用這些向量判斷出「它」指的是「動物」,而不是「馬路」。

關鍵洞察在於:一個 token 一旦被處理,它的 Key 和 Value 向量就 永遠不會改變。 它們是固定的,不依賴於句子後面出現什麼。

然而在沒有優化的做法中,模型每一步都會把這些向量丟掉,下一次再從頭重新計算。這就像把同一道數學題解了十遍,每次解完都把草稿紙扔掉,而不是直接保留答案。

KV Cache 的做法很簡單:不要丟掉它。把它存起來。重複使用它。

KV Cache 如何運作:逐步說明

以下是啟用 KV Cache 後實際發生的事情:

第一步 — 預填充階段(Prefill Phase)

當你向模型發送一個提示(例如「幫我解釋重力」),模型會處理你提示中的每一個詞,並為每個詞計算 Q、K、V 向量。K 和 V 向量會被儲存到一個專用的記憶體空間——也就是 KV Cache。

第二步 — 解碼階段(Decode Phase)

現在模型開始逐 token 生成回覆。對於每個新 token:

  • 只計算這個新 token 的 Query 向量
  • 直接從快取中取出所有前置 token 的 Key 和 Value——不需要重新計算
  • 使用這些資訊生成下一個詞
  • 將新 token 自己的 K 和 V 加入快取,供未來步驟使用

第三步 — 重複

這個過程持續到回覆完成為止。快取隨著每個新 token 而增長,但重新計算舊 token 的大量工作被完全消除了。

一個簡單的示意:

生成 Token 1 → 快取:[K1, V1]
生成 Token 2 → 快取:[K1, K2], [V1, V2]
生成 Token 3 → 快取:[K1, K2, K3], [V1, V2, V3]
...
每一步只做少量的新工作,而不是從頭重做所有事情。

實際影響有多大?

差異是顯著的。使用 KV Cache 後:

  • 速度: 推理速度可以快 3 至 5 倍,具體取決於模型和硬體
  • 延遲: 回覆感覺更即時,尤其是長篇輸出時
  • 擴展性: 伺服器可以用相同的硬體同時服務更多用戶

這就是為什麼每個主要的 AI 推理框架——vLLM、TensorRT-LLM、HuggingFace TGI——都把 KV Cache 作為核心功能來實作。這不是可選的,而是必不可少的。

代價:它需要消耗記憶體

工程上沒有免費的午餐。KV Cache 用記憶體換取了運算效率。

每個 token 的 K 和 V 向量需要在模型的每一層中儲存於 GPU 記憶體(VRAM)。對於一個處理長對話的大型模型,這個快取可能輕易消耗數 GB 的 VRAM。

這帶來了實際的限制:

  • 對話越長 = 快取越大 = 需要更多記憶體
  • 模型越大 = 層數越多 = 每個 token 佔用更多記憶體
  • 同時服務的用戶越多 = 並行運行的快取越多 = 記憶體需求更高

AI 工程師必須仔細平衡支援多長的上下文視窗、同時服務多少用戶,以及擁有多少 GPU 記憶體。這是在生產環境中運行 LLM 的核心挑戰之一。

進階延伸:業界如何繼續突破

研究人員並沒有停留在基礎的 KV Cache 上。以下是一些建立在其之上的進階技術:

  • 多查詢注意力(MQA, Multi-Query Attention) — 所有注意力頭共享相同的 K 和 V 向量,而不是為每個頭分別儲存。這大幅縮減了快取大小,且對品質的影響極小。
  • 分組查詢注意力(GQA, Grouped-Query Attention) — 介於完整快取與 MQA 之間的折衷方案。LLaMA 3 和 Mistral 等模型採用此方式,將注意力頭分組共享 K/V 向量。
  • 滑動視窗注意力(Sliding Window Attention) — 不是永久快取每個 token,而是只保留最近 N 個 token 的快取。這為超長序列設定了記憶體用量上限。
  • 分頁注意力(PagedAttention) — vLLM 採用的技術,像作業系統管理虛擬記憶體一樣管理 KV Cache——以分頁方式分配和釋放記憶體,大幅提升 GPU 利用率和吞吐量。

總結

讓我們回顧一下學到的內容:

  • LLM 每次只生成一個 token,每個新 token 都需要回頭看所有前置 token
  • 沒有優化的情況下,這會產生二次方複雜度——速度會非常快地變得非常慢
  • 注意力機制為每個 token 計算 Query、Key 和 Value 向量
  • Key 和 Value 向量一旦計算就不會改變——所以沒有理由重新計算它們
  • KV Cache 將這些向量儲存在記憶體中並重複使用,消除了大量冗餘工作
  • 結果是推理速度提升 3 至 5 倍,代價是更高的 GPU 記憶體用量
  • GQA 和 PagedAttention 等進階技術進一步提升了效率

KV Cache 是那種聽起來幾乎太簡單的想法——只是把你的工作成果存起來並重複使用。但它對現實世界 AI 效能的影響是巨大的。下次當你收到 AI 的快速回覆時,你會知道其中一個關鍵原因是什麼了。

延伸閱讀

緊貼最新動態

隨時掌握最新新聞與更新