Agentic Research

KV Cache(鍵值快取)

又稱:KV cache · 鍵值快取 · KV 快取 · key-value cache · 注意力快取

把每個已處理 token 的 Key 與 Value 存起來,生成下一個 token 時不必重算。代價是這塊記憶體隨序列長度成長,正是「長上下文很吃 RAM」的原因。

你會在什麼時候遇到它

這是連接「上下文長度」「VRAM」「生成速度」三個概念的隱藏樞紐。你會在看推理引擎的記憶體設定、或困惑「為什麼開長上下文後 VRAM 暴增、並發數驟降」時遇到它。不懂 KV cache,你無法理解為什麼長對話越來越吃記憶體、為什麼高並發和長上下文不能同時要 —— 這些全是生產部署最實際的限制。

打個比方

像讀書時把每一頁的重點抄在一疊便利貼上。下次要接續講時,不必重讀整本書,直接翻便利貼(快取)就好,所以快。但書越讀越厚,便利貼也越貼越多,最後整張桌子(VRAM)被便利貼佔滿 —— 這就是長上下文吃記憶體的真相。

最小範例

沒有 KV cache:
  生成下一個 token → 把前面所有 token 全部重算一遍 → 極慢

有 KV cache:
  前面所有 token 的 Key/Value 已存好 → 只算新的這個 → 快

但記憶體代價:
  KV cache 大小 ∝ 序列長度 × 並發請求數 ×(模型層數與維度)
  · 上下文越長 → 每個請求的 KV cache 越大
  · 並發越高   → 同時存在的 KV cache 越多
  → 這就是為什麼「長上下文」和「高並發」會互搶 VRAM

推理引擎(例如 vLLM 的 PagedAttention)就是在聰明地管理這塊快取:切成小區塊、按需分配、共用前綴,用同樣的 VRAM 塞進更多並發請求。理解 KV cache 的成長行為,是調這些參數的前提。

最常搞錯的地方

  • 以為 KV cache 是可有可無的加速。它是 decode 能快的根本前提;沒有它,每生成一個 token 都要重算整段,速度慢到不可用。
  • 以為它佔的記憶體是固定的。它隨序列長度成長,長對話或長上下文時,KV cache 可能比模型權重還吃 VRAM。
  • 以為上下文開到最大沒代價。上下文越長,預留給 KV cache 的 VRAM 越多,能同時服務的並發數就越少 —— 這是一個直接的取捨。

相關詞條

下一步