推論與服務

KV 快取量化(KV cache quantization)

在長上下文長度下,主宰 GPU 記憶體消耗的不是模型權重,而是 KV 快取:它隨序列長度、批次大小、層數與頭數線性成長,到了數萬個 token 時甚至能遠超過參數本身。KV 快取量化把這些被快取的鍵與值張量存成低精度格式——往往是八位元甚至四位元,而非十六位元——讓同一套硬體能容納長得多的上下文或大得多的批次。又因為這份快取在每一個解碼步驟都會被讀取,把它縮小同時也減少了瓶頸住生成的記憶體流量。

難處在於鍵與值的統計特性非常不同,而且少數通道帶有大幅度的離群值,若天真地量化就會主導誤差。因此有效的方法會對鍵採「逐通道」、對值採「逐 token」量化,搭配小群組大小與逐群組的縮放因子,有時還把最近的幾個 token 保留在全精度,因為那裡的誤差傳播得最嚴重。與離線一次做完的權重量化不同,KV 量化是在生成過程中即時進行的,所以編碼與解碼必須夠便宜,才不會把它省下的頻寬又吃回去。

做得好時,四位元的 KV 快取能讓可服務的上下文長度大致翻倍,而品質損失可忽略;推得太過頭,則會損害長距離的記憶與推理能力。

「鍵逐通道、值逐 token」是反覆出現的配方——這個不對稱反映的是離群值所在之處,而非隨意的慣例。

又称
KV cache compressionKV 快取量化low-bit KV cache