深入淺出 LLM 的 KV Caching 機制 (KV Caching in LLMs, Clearly Explained)

原始來源與檔名:20260512_2026-05-12T092957+0800-KV Caching in LLMs, Clearly Explained.md

來源:[[@_avichawla]] / X (Twitter) — 2026-03-11 原始檔名:2026-05-12T092957+0800-KV Caching in LLMs, Clearly Explained.md


NAPKIN | 餐巾紙

餐巾紙公式

LLM Inference Cost = O(n²) without cache KV Caching = Store Key (K) & Value (V) of past tokens -> Compute only Q, K, V for the newest token KV Cache Trade-off = 5x Speedup in Computation vs. Massive GPU Memory Consumption

為什麼 ChatGPT 吐出第一個字要等很久,後面的字卻像倒水一樣快?答案是 KV Caching。在自迴歸生成中,之前算過的字其特徵(Key 和 Value 向量)是不會變的。系統會把這些特徵快取在記憶體中。生成新字時,只需拿新字的 Query 去跟快取庫對比即可。這是一種典型的「以空間換取時間」的極致工程妥協。

一句話

這篇技術解析以第一性原理清晰地解釋了大型語言模型(LLM)推理加速的核心技術——KV Caching。作者指出,在自迴歸生成中,重新計算歷史 Token 的 K 與 V 向量會產生嚴重的 O(n²) 運算浪費。透過快取機制,模型每步只需計算最新 Token,大幅提升速度,但也揭露了此技術的代價:KV Cache 會吞噬龐大的 GPU 記憶體,這正是為何擴展上下文視窗(Context Window)會如此昂貴的底層原因。

餐巾紙草圖

[Without KV Cache: Recompute Everything]
Step 50: Compute K,V for T1 to T50
Step 51: Compute K,V for T1 to T51 (T1-T50 redundantly recomputed)

[With KV Cache: Incremental Update]
Memory Cache: [K1, V1], [K2, V2] ... [K50, V50]
Step 51:
  1. Compute Q51, K51, V51
  2. Append [K51, V51] to Memory Cache
  3. Attention = Q51 × (Cache K1-K51) -> Weight applied to (Cache V1-V51)

ROUND 1: SKELETON | 骨架掃描

“這篇文章在說什麼”

ROUND 2: DISSECTION | 血肉解剖

“憑什麼這麼說”

核心論證鏈

  1. 矩陣乘法的數學結構: 作者切入 Transformer 的底層公式 Attention(Q, K, V) = softmax(QK^T)V。指出當我們只關心最後一個輸出字時,矩陣 Q 其實退化成了一個向量(只包含最後一個字的 Q),但 KV 依然是整個歷史序列的矩陣。這明確點出了哪裡存在重複運算。
  2. 計算力與記憶體的物理限制: 提到了 Qwen 2.5 72B 模型的具體參數(80層, 32K上下文, 維度8192),說明即使是單一使用者的 KV Cache,也會消耗數 GB 的顯存。這打破了外界認為「硬體只限制模型參數大小」的迷思,證實了「併發能力與上下文長度」才是記憶體真正的吞噬者。
  3. 優化演進的必然性: 因為 KV Caching 的記憶體瓶頸,才合理化了業界為何要發明 GQA (共享 K/V 頭) 以及 vLLM 的 Paged Attention (解決快取記憶體碎片化)。知識點在此形成了閉環。

關鍵證據

邊界條件

ROUND 3: SOUL | 靈魂提取

“還能怎么用”