生成與推論

KV Cache 鍵值快取是什麼?長對話為什麼越聊越吃記憶體

KV Cache(鍵值快取)是 AI 推理時的高速緩存記憶體。在 Transformer 架構中,每個 Token 會被轉換成 Key 與 Value 向量用來計算注意力,KV Cache 就是把已經算過的 Key 與 Value 存起來,下次遇到相同的對話歷史時直接複用,避免重複計算,因此能大幅省下算力與時間。
KV Cache 鍵值快取是什麼?長對話為什麼越聊越吃記憶體:文章重點卡

KV Cache 鍵值快取是什麼?長對話為什麼越聊越吃記憶體

同一個聊天室聊到很長的時候,回覆會變慢,有時還會出現顯存不足的錯誤。這件事跟 KV Cache 有關。

它是讓長對話跑得動的關鍵優化,也是長對話越來越吃記憶體的原因。

你將學到什麼

定義

KV Cache 是推理時的高速緩存,把算過的 Key 與 Value 存起來,下次直接複用,不用重算。

白話比喻

沒有快取,每次回覆都像把整本書從頭再讀一次。有了快取,就像有短期記憶,只看新內容。

跟誰容易搞混

提示詞快取是服務端跨請求的省錢機制,KV Cache 是模型推理內部的加速機制。

定義

Transformer 架構的 AI 模型中,每個 Token 會被轉換成 Key(鍵)與 Value(值)向量,用來計算注意力。

KV Cache 就是把這些已經計算過的 Key 與 Value 存起來,下次遇到相同的對話歷史時直接複用,避免重複計算。

白話比喻

沒有 KV Cache 的時候,AI 每次要回應,都得把整段歷史的 Key 與 Value 重新算一次,像每次都把一本很厚的書從頭讀到尾。

有了 KV Cache,它就像擁有短期記憶,記住重點,只讀新增的那幾句。回答自然又快又省。

有沒有快取差在哪

比較項目沒有 KV Cache有 KV Cache
計算量隨對話長度平方或立方成長接近線性成長
延遲
吞吐量
顯存使用重複計算,浪費資源有效複用,節省資源
使用者體驗等待久,容易超時回應快,更流暢

它的挑戰與限制

  • 顯存佔用會隨對話長度增加,長對話就是越聊越吃記憶體。
  • 快取過大可能導致顯存溢出,服務端必須主動管理。
  • 需要快取管理策略,例如滑動視窗、分段快取或壓縮。
  • 不同模型與框架的實作細節不同,效果不能直接互相比較。

所以實務上的功夫在於「合理設定最大上下文長度與快取策略」,在效能與成本之間找到平衡點。

實際用例

它是所有現代 LLM 推理框架的標配技術。vLLM、Hugging Face Transformers、TensorRT-LLM、llama.cpp、DeepSpeed 都有各自的 KV Cache 機制。

在產品端,它支撐了三件你天天用到的事:超長對話跑得動、首字回應變快、伺服器能同時服務更多人。

運作上可以拆成五步:輸入歷史對話、計算 Key 與 Value、存入快取、根據快取與當前輸入計算注意力並生成回應、下一輪只計算新增的 Token。

常見誤解最常見的誤解是把 KV Cache 當成「AI 的記憶」。它不是記憶功能,也不會跨聊天室存在,它只是同一次推理過程中避免重算的暫存。另外它也不是免費的:快取會佔顯存,過大可能導致溢出,所以需要滑動視窗、分段快取或壓縮等管理策略。
本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

KV 的 K 跟 V 是什麼?
在 Transformer 的注意力機制裡,每個 Token 會被轉換成 Key(鍵)與 Value(值)兩組向量,用來計算它跟其他 Token 的關聯。KV Cache 存的就是這兩組已經算好的向量。
為什麼長對話會越來越吃顯存?
快取會隨對話長度增大而增大。每多一個 Token 就多一份 Key 與 Value 要存,累積到超過容量上限就會遇到顯存溢出,這時框架會採用滑動視窗或清除策略。
使用者能做什麼?
合理設定最大上下文長度,長對話定期收斂重點另開新對話,不要把不相關的檔案一直掛在同一個聊天室。這些做法同時能降低延遲與成本。