打破記憶體高牆:KV Cache 的真正瓶頸不在壓縮,而在於「層」的選擇

大型語言模型(LLM)的推理成本高昂,記憶體更是關鍵瓶頸。我們總以為要靠壓縮來解決,但最新的研究卻提出一個顛覆性觀點:問題不在於「如何壓縮」,而在於「根本不需要儲存所有層」。本文將深入解析這種「層級壓縮」策略,看它如何以反直覺的方式,大幅降低 LLM 運作成本,為長文本處理與多使用者場景帶來革命性的新可能。

打破記憶體高牆:KV Cache 的真正瓶頸不在壓縮,而在於「層」的選擇

我們常以為大型語言模型的推理瓶頸在於模型參數本身,但真正的限制往往藏在 KV Cache 的記憶體用量。最近的研究顯示,問題的關鍵不在於「如何壓縮」現有的快取,而在於「根本就不需要儲存每一層」的快取。這種被稱為「層級壓縮」(Layer-Condensed)的思維,一旦被採納,將徹底改寫我們對延遲、吞吐量與成本上限的計算方式。這不僅僅是另一種最佳化技巧,它挑戰了我們對模型推理成本結構的基本假設,為長文本處理與多使用者場景帶來了新的可能性。

為什麼 KV Cache 會成為記憶體瓶頸?

要理解這個問題的嚴重性,我們得先回到大型語言模型(LLM)運作的核心:自回歸生成(autoregressive generation)。模型在生成每個新詞彙時,都必須回顧先前已經生成的所有內容,以確保語意連貫。這個「回顧」的動作,在 Transformer 架構中是透過 Attention 機制來實現的。

為了避免每次生成新詞彙時都重新計算整個序列的 Attention,系統會將先前每個詞彙的「鍵(Key)」和「值(Value)」向量儲存起來,這就是所謂的 KV Cache。這個機制大幅提升了生成速度,但也帶來了巨大的記憶體開銷。KV Cache 的大小與序列長度(context length)和批次大小(batch size)成正比。當序列長度從 2K 增加到 32K,KV Cache 所需的 VRAM 可能會從數 GB 暴增到數十 GB,輕易地耗盡一張高階 GPU 的所有記憶體。

這使得 LLM 推理從一個計算密集(compute-bound)問題,轉變為一個記憶體頻寬密集(memory-bound)的問題。你的 GPU 明明還有運算單元閒置,卻因為 VRAM 不足而無法處理更長的文本或服務更多的使用者,這就是當前許多應用面臨的困境。

「層級壓縮」KV Cache:反直覺的解方如何運作?

過去,社群的解決方案大多集中在如何「壓縮」KV Cache,例如透過量化(Quantization)降低每個數值的精度,或是使用更精簡的 Attention 變體。然而,一篇名為《Layer-Condensed KV Cache for Efficient Inference of Large Language Models》的論文提出了一個更根本、也更反直覺的觀點。

研究團隊發現,Transformer 模型中不同層級(layer)之間儲存的資訊存在高度冗餘。換句話說,我們或許根本不需要儲存每一層的 KV 向量。

他們的核心洞察是:KV Cache 的冗餘主要存在於「層與層之間」(inter-layer),而非單一數值的精度。與其費力壓縮每一個數值,不如直接捨棄掉某些層的快取。

基於這個發現,他們提出了「層級壓縮 KV Cache」(Layer-Condensed KV Cache, LC-KVC)方法。作法很簡單:只選擇性地快取模型中一部分層級的 KV 向量,例如只快取偶數層或特定區塊的層。對於那些沒有被快取的層,當模型需要用到它們的 KV 向量時,就利用已經快取的鄰近層級資訊即時地重新計算。這本質上是一種用少量重複計算來換取巨大記憶體空間的策略。

實驗結果相當驚人。在 Llama-2 7B/13B 與 Mistral-7B 等模型上的測試顯示,即便只快取一半的層級,模型在各項評測基準上的性能損失也微乎其微。更重要的是,這種方法帶來的系統級效益是巨大的。

這對實務應用意味著什麼?

一旦我們接受「並非所有層的 KV Cache 都需要被儲存」這個前提,整個推理系統的設計思維都會跟著改變。這不僅是學術上的突破,更對實際應用有著深遠的影響:

  • 吞吐量大幅提升:記憶體佔用減半,意味著在同一張 GPU 上可以容納兩倍的批次大小(batch size),或處理兩倍長的上下文。論文指出,在長序列生成的場景下,吞吐量最高可提升達 26 倍。這對於需要服務大量用戶的 API 供應商來說,直接等同於成本的大幅下降。
  • 長文本處理的普及化:過去,要處理 32K 甚至更長的上下文,往往需要動用 A100 80GB 這種等級的頂級硬體。LC-KVC 的出現,讓這類應用有機會在記憶體較小的消費級或中階 GPU 上運行,大幅降低了長文本應用的硬體門檻。
  • 系統設計的彈性:這個方法為系統架構師提供了新的調校槓桿。我們可以根據具體的應用場景(例如,是延遲敏感還是吞吐量敏感),動態決定要快取哪些層、快取多少比例的層。這讓推理引擎如 vLLM 或 TGI 的資源調度可以更加精細與高效。

總結來說,LC-KVC 的價值在於它點出了一個長期被忽視的面向:推理成本的瓶頸,往往藏在資料結構的設計裡,而不僅僅是模型參數的數量。透過重新審視 KV Cache 的層間關係,我們找到了一條無需犧牲太多模型精度,卻能顯著打破記憶體高牆的路。這提醒了我們,在 AI 系統的建構中,演算法與硬體系統的協同設計(co-design)永遠是通往更高效率的關鍵路徑。

延伸閱讀

我是江中喬,專注於 AI Agent Architecture、Memory Governance 與 Cognitive Diversity,持續研究如何打造能夠長期協作、可信任且可治理的 AI 系統。

ссс