KV Cache(Key-Value Cache,鍵值快取)可以說是大型語言模型(LLM)推理(Inference)最重要的效能優化技術之一。如果沒有 KV Cache,像 ChatGPT、Claude、Gemini、Llama 等模型的回覆速度可能會慢上數倍甚至數十倍。

一、什麼是 KV Cache?

LLM 的 Transformer 架構中,每一層都包含 Attention(注意力機制)

Attention 的核心公式:

[ Attention(Q,K,V)=Softmax\left(\frac{QK^T}{\sqrt{d}}\right)V ]

其中:

  • Q(Query):目前要預測的新 Token
  • K(Key):所有已產生 Token 的特徵
  • V(Value):所有已產生 Token 的內容資訊

KV Cache,就是把每一層 Transformer 已經計算好的 Key 與 Value 保留下來,下次生成新的 Token 時直接使用,不必重新計算。


二、沒有 KV Cache 會發生什麼?

假設模型要輸出:

I
love
Taiwan
because
...

第一次:

Input:
I

重新計算:
I

第二次:

Input:
I love

模型重新計算:

I
love

第三次:

Input:
I love Taiwan

模型又重新計算:

I
love
Taiwan

第四次:

Input:
I love Taiwan because

又全部重算:

I
love
Taiwan
because

也就是:

Token1
↓

Token1 Token2
↓

Token1 Token2 Token3
↓

Token1 Token2 Token3 Token4

前面的 Token 一直被重複計算。

假設已經有 2000 個 Token。

生成第 2001 個 Token 時:

模型竟然還要重新算前面 2000 個。

效率非常差。


三、有 KV Cache 後

第一次:

I

算完:

K1
V1

存起來。

第二次:

love

只需要:

Q(love)

+

K1 V1

第三次:

Taiwan

只需要:

Q(Taiwan)

+

K1 V1
K2 V2

不用再重新建立:

K1
K2

因為早就存在 Cache。


四、圖解流程

沒有 Cache

Step1

I

↓

Transformer

↓

Output


-----------------

Step2

I
love

↓

Transformer

↓

重新算 I
重新算 love


-----------------

Step3

I
love
Taiwan

↓

Transformer

↓

又全部重算

每一步都重跑整個 Transformer。


有 Cache

第一次

I

↓

Transformer

↓

K1 V1

↓

Cache



第二次

love

↓

Transformer

↓

只算新的 Q

+

Cache(K1,V1)

↓

K2 V2

↓

加入 Cache



第三次

Taiwan

↓

Transformer

↓

Q3

+

K1 V1
K2 V2

↓

K3 V3

速度快非常多。


五、為什麼速度提升很多?

Transformer 最大的成本就是:

Attention

Attention 必須:

Q

和

所有 K

做矩陣乘法。

沒有 Cache:

每一步:

重新建立

K
V

成本:

O(n²)

有 Cache:

K V 已存在

只新增一列

成本接近:

O(n)

因此生成長文章時,KV Cache 能顯著降低每個 Token 的重複運算,雖然注意力本身仍需與所有歷史 Key 比對,但避免了反覆計算歷史 Token 的表示,因此實際推理速度會大幅提升。


六、KV Cache 存的是什麼?

很多人誤會:

Cache 存的是文字。

不是。

存的是:

Layer 1

K
V

Layer 2

K
V

Layer 3

K
V

...

Layer N

K
V

例如:

Llama-3:

32 Layers

每一層:

Key Tensor

Value Tensor

全部保留。

所以:

Token

↓

Embedding

↓

Layer1

↓

Layer2

↓

...

↓

Layer32

每一層都有自己的 Cache。


七、KV Cache 很吃 GPU 記憶體

假設:

Context:

128K Tokens

每一個 Token:

都要保留:

Layer1 K
Layer1 V

Layer2 K
Layer2 V

...
Layer80 K
Layer80 V

因此:

Context 越長

↓

KV Cache 越大

有時:

GPU 記憶體真正吃最多的不是模型本身。

而是:

KV Cache

例如:

70B 模型:

模型:

約 40GB

KV Cache:

可能再吃 30GB

甚至更多。


八、為什麼很多模型都在研究 KV Cache?

因為它直接影響:

  • 可同時服務多少位使用者(併發數)
  • 最長可支援多少 Context
  • Token 生成速度
  • GPU 記憶體使用量
  • 雲端推理成本

因此,近年許多推理框架(如 vLLM、TensorRT-LLM、SGLang)都投入大量工程優化,例如:

  • Paged KV Cache:將快取分頁管理,減少記憶體碎片並提高利用率。
  • KV Cache Sharing:多個請求共享相同前綴(Prefix),避免重複儲存與計算。
  • KV Cache Quantization:將快取量化為較低位元(如 FP8、INT8),降低記憶體占用。
  • KV Cache Offloading:將部分快取移至 CPU 記憶體或高速儲存,在超長上下文情境下擴大可處理範圍。

九、生活化比喻

想像你在讀一本 500 頁的小說,準備回答第 501 頁的問題。

沒有 KV Cache:

每次回答前,都要從第 1 頁重新讀到第 500 頁。

第1頁
↓

第2頁
↓

...

↓

第500頁
↓

回答

有 KV Cache:

第一次閱讀時就做好完整筆記。

之後每次回答,只需要:

新的一頁

+

之前的筆記

不用再把整本書重新讀一次。


十、總結

KV Cache 的核心理念就是「避免重複計算歷史 Token 的 Key 與 Value 表示」。在自回歸(autoregressive)生成中,每產生一個新 Token,模型只需計算新 Token 的表示,並利用已快取的歷史資訊完成注意力運算,因此能顯著提升生成速度並降低延遲。

它帶來的主要效益包括:

面向 有 KV Cache 的效果
推理速度 顯著提升,尤其是長文本生成
延遲(Latency) 明顯降低,每個 Token 的生成更快
GPU 運算量 避免重複計算歷史 Token 的表示
GPU 記憶體 增加占用,需要保存各層的 K/V Tensor
長上下文支援 可行,但需要更大的 KV Cache 或配合壓縮、分頁等技術

簡單來說,Transformer 發明了 Attention,而 KV Cache 則讓 Attention 能夠在實際產品中高效運作。沒有 KV Cache,現代聊天機器人、AI 助理與程式碼生成工具的即時互動體驗幾乎無法達成。