你有沒有遇過這個情況:跑一個還算普通的 LLM,GPU 記憶體就已經快爆表,根本沒辦法跑長一點的對話,更別說同時跑多個 session?這不是你的機器太爛,而是 LLM 架構本身的痛點——key-value cache 太吃記憶體了。
Google Research 最近發表了一篇 pre-print,提出的壓縮演算法叫 TurboQuant,測試結果是記憶體用量減 6 倍、注意力計算速度快 8 倍,而且幾乎不犧牲輸出品質。這種「又快又省又不爛」的組合在 ML 優化裡並不常見,值得好好拆解一下。
原文:Google’s TurboQuant AI-compression algorithm can reduce LLM memory usage by 6x(Ars Technica,作者 Ryan Whitwam,2026-03-26)
KV Cache 是什麼,為什麼這麼貴?
要理解 TurboQuant,先得知道它在壓縮什麼。
LLM 在生成每個 token 的時候,需要「回頭看」之前所有的 token,計算它們之間的注意力分數(attention score)。但如果每次都從頭算一遍,效率會極差。所以 Transformer 架構的解法是把過去計算過的向量資料暫存起來,這個暫存區就是 key-value cache(KV cache)。
用一個比喻來說:KV cache 就像你考試時的數位小抄。你把讀過的資料整理好放旁邊,需要時直接查,不用每次重讀課本。這讓推論快很多,但問題是——當對話越長、模型越大,這份「小抄」就會越來越厚,佔據的 GPU RAM 越來越多,最終變成整個推論流程最大的記憶體瓶頸。
傳統的解法是量化(quantization):把原本高精度的浮點數(32-bit)壓縮成低精度(8-bit 甚至更低)。確實可以省空間,但精度下降通常會帶來品質損失——這是工程上的取捨。
TurboQuant 的方向不同:它不是暴力壓精度,而是改變向量的表示方式,讓同樣的資訊用更少的位元就能儲存清楚。
TurboQuant 的兩步驟
第一步:PolarQuant — 把直角座標換成極座標
LLM 的 KV cache 儲存的是高維向量,每個向量可能有幾百到幾千個維度。這些向量預設用笛卡爾座標(XYZ 形式)表示,每個維度都要存一個數值。
PolarQuant 的做法是把這些向量轉換成極座標。在極座標系統中,一個向量只需要兩個值:半徑(代表資料強度)和方向(代表語義含義)。
用一個直觀的例子說明:
笛卡爾:「往東 3 格、往北 4 格」→ 需要兩個獨立數值
極座標:「往 37 度方向走 5 格」→ 同樣的位置,更緊湊的描述
而且還有個額外好處:傳統量化在處理向量之前需要一個昂貴的「正規化」步驟(把向量縮放到統一範圍),極座標本身的表示方式讓這個步驟可以省掉。PolarQuant 負責了 TurboQuant 大部分的壓縮工作。
第二步:QJL — 1-bit 誤差修正
PolarQuant 壓縮後會引入一些殘差誤差。這時候第二步 QJL(Quantized Johnson-Lindenstrauss) 登場,用 1-bit 做誤差補償。
QJL 把每個向量進一步壓縮成單一 bit(+1 或 -1),但這個 1-bit 的目標不是重建原始向量,而是保留向量之間的相對關係——也就是讓注意力機制算出的分數更準確。
這個設計很聰明:它不追求完美重建,只保留「哪些 token 跟哪些 token 相關」這個最關鍵的資訊。
實驗結果
Google 用 Gemma 和 Mistral 兩個開源模型,在長上下文 benchmark 上測試 TurboQuant:
- KV cache 記憶體用量減少 6 倍
- 4-bit TurboQuant 在 Nvidia H100 上,注意力計算速度比 32-bit 快 8 倍
- 3-bit 量化就能在所有測試任務中維持完整品質,不需要重新訓練模型
- 測試基準是高度優化的 JAX baseline,所以這個 8 倍不是跟爛基準比出來的
特別值得注意的是「不需要重新訓練」這一點。這意味著 TurboQuant 可以直接套用在現有模型上,不是只適用於從頭訓練的新模型。
作為軟體工程師的反思
1. 本地端隱私與長上下文,終於不用二選一?
以前要跑一個比較長的對話,或是在對話裡帶入大量個人背景資訊,幾乎只有一條路:上雲端。本地端的硬體根本塞不下那麼大的 KV cache。
TurboQuant 如果變成標配,原本要送上雲端的工作,你家機器可能就扛得住了。這不只是成本問題,而是隱私問題——你的對話紀錄、個人資料、工作文件,可以在本機跑完,不需要離開你的電腦。
對需要處理敏感資料的場景(醫療、法律、個人財務)來說,本地端 AI 實際能用、不只是玩具,是個質的改變。
2. AI「用到一半失憶」,原來是記憶體問題,不只是 prompt 問題
這是我個人最有感的一點。
常常在跟 AI 對話到一半,它就開始「忘記」你前面說過的事情——你說過你用的是 Python 3.11,但它推薦了只有 3.12 才有的語法;你說過專案的限制,但它的建議完全沒考慮進去。以前我以為這是 LLM 的「理解能力」問題,但其實很多時候是系統層面的記憶體問題。
KV cache 不是無限的。當對話太長,系統會偷偷截掉早期的 cache,就像記憶被清除。不是 AI 沒能力記,是記憶體太貴,系統不得不清。
之前讀 Agentic RAG 的文章時,我意識到一層:RAG 架構本身是為了解決 LLM 知識截止日期的問題,而 Agentic RAG 是為了解決 RAG 本身沒有「反省能力」的問題。但這些都是在應用層做補救。TurboQuant 有機會在更底層解決這件事——KV cache 只需要 1/6 的空間,同樣的硬體就能塞下更長的對話記憶。
「AI 忘記重點」這件事,有機會從系統層面被緩解,不是只靠 prompt 技巧救火。
3. 「算力普及」影響的不只是成本,而是產品設計的想像空間
便宜通常意味著量變引發質變。
算力變貴的時候,廠商的選擇是「盡量省」:對話 session 能清就清、context window 能砍就砍、記憶功能乾脆不做。這不是因為廠商不想做好,是因為每一個「記住你」的動作都有真實的計算成本。
TurboQuant 這類壓縮技術如果成為基礎設施的一部分,廠商就有空間做更多對使用者友善的設計:更長期的個人記憶、更細緻的對話狀態管理、不是每次開新 session 都從零開始。
這讓我想到之前讀的 a16z 那篇文章關於 AI 時代軟體公司的定位——AI 不只改變了公司成長曲線,也在重新定義「一個好產品應該長什麼樣」。當算力不再那麼稀缺,之前被迫妥協的設計決策,值得重新檢視一遍。
TurboQuant 還在 pre-print 階段,還沒有正式整合進任何推論框架。但方向很清楚:模型壓縮不再是品質的敵人,而是讓 AI 更普及、更私密、更好用的基礎建設。
評論