今天小編分享的科學經驗:10倍吞吐提升無損性能:多模态适用的KV cache量化策略來了,即插即用無需改原模型,歡迎閱讀。
在 InternVL-2.5 上實現 10 倍吞吐量提升,模型性能幾乎無損失。
最新 1-bit 多模态大模型 KV cache 量化方案CalibQuant來了。
通過結合後縮放和校準方法,可顯著降低顯存與計算成本,無需改動原模型即可直接使用。
即插即用、無縫集成
多模态大語言模型在各種應用中展現出了卓越的性能。然而,它們在部署過程中的計算開銷仍然是一個關鍵瓶頸。
雖然 KV cache 通過用顯存換計算在一定程度上提高了推理效率,但随着 KV cache 的增大,顯存占用不斷增加,吞吐量受到了極大限制。
為了解決這一挑戰,作者提出了 CalibQuant,一種簡單卻高效的視覺 KV cache 量化策略,能夠大幅降低顯存和計算開銷。具體來說,CalibQuant 引入了一種極端的 1 比特量化方案,采用了針對視覺 KV cache 内在模式設計的後縮放和校準技術,在保證高效性的同時,不犧牲模型性能。
作者通過利用 Triton 進行 runtime 優化,在 InternVL-2.5 模型上實現了 10 倍的吞吐量提升。這一方法具有即插即用的特性,能夠無縫集成到各種現有的多模态大語言模型中。
動機
當前的多模态大語言模型在實際應用中常常需要處理大尺寸、高分辨率的影像或視頻數據,KV cache 機制雖然能提升效率,但其顯存占用與輸入長度(如視覺幀數、影像尺寸等)成正比。
當輸入數據的規模增大(例如更多的視覺幀、更高的影像分辨率)時,KV 緩存的顯存使用量迅速增加,成為限制吞吐量的瓶頸。盡管當前有些針對 LLM KV cache 量化的方法可以将其壓縮至 2 比特,但這些方法沒有針對多模态問題中特有的視覺冗餘做分析優化,導致其無法在極限情況 1 比特下被使用。
本文通過分析多模态大語言模型中的視覺 KV cache 的冗餘,設計了适合多模态模型特有的 KV cache 量化方案。
方法
本文在通道維度量化的基礎上提出了針對反量化計算順序的後縮放優化方案和針對注意力權重優化的校準策略。
1、通道維度 KV cache 量化:
一種廣泛使用的方法是均勻整數量化。給定一個比特寬度 b>0 和一個輸入值 x,它位于某個範圍 [ α , β ] 内,則将其映射到一個離散整數
,計算過程為:
這裡的⌊⋅⌉表示取整運算符。最樸素的方法是使用全局統計量來計算這些極值,但是模型性能會受較大影響,作者選擇在通道維度上細化統計範圍。具體來說,令
表示一個 K cache,其中 n 和 d 分别表示 token 的數量和 head 的維度。定義兩個向量
如下:
然後,通過上述過程對 K 中的每一行向量進行量化,其中乘法操作是逐元素進行的。作者同樣将這種按通道的量化方法應用于 V cache。
2、後縮放 KV cache 管理策略:
量化後的 K cache 可以用離散化的整數值、一個縮放因子(scale factor)和一個偏置項(bias term)來表示。在解碼階段,這些值被用于對 K cache 進行反量化,并随後與 Q 相乘。然而,通道維度的量化需要為每個通道分别指定不同的縮放因子和偏置向量,這将導致產生大量不同的數值,增加了反量化過程中的計算開銷。此外,這種方式也使得 CUDA 内核中的計算效率降低。作者觀察到量化後的 K 僅具有有限數量的離散取值(例如,對于 2 比特量化,其取值僅為 0、1、2、3),于是提出利用簡單的計算順序重排來減少存儲需求,并提高計算效率。具體過程如下:
設
是 K cache 矩陣
中的任意一行向量,
為其進行 b 比特整數量化後的結果,并伴随有逐通道的縮放因子 α , β。給定一個查詢向量
,在生成 token 過程中注意力計算如下:
其中,符号⋅和⊙分别表示向量之間的内積和逐元素乘積。通道維度上的反量化操作
被延遲執行,并高效地集成到後續的向量乘法運算中。因此,這種方法僅存儲經過 b 比特整數量化後的數值,并且避免了全精度反量化計算過程。這種方法确保了低比特反量化執行的高效性。這種後縮放方法也可以自然地應用到 V cache 的反量化過程中。
3、量化後的校準:
1 比特量化的一個限制是經過反量化之後的數值往往會包含大量的極端值。這是因為 1 比特量化的碼本總是包含了最小值和最大值,導致那些接近邊界的輸入值在反量化後直接映射到了極端值。
因此,重建後的 KV cache 通常包含過多的大絕對值,最終導致注意力分數產生明顯的失真。為了解決這個問題,作者提出了一種量化後校準方法,用于調整 softmax 之前注意力分數的峰值。具體來說,假設
中的所有元素都位于區間
内。給定
,定義一個線性變換 g 将區間
映射到
,其表達式如下:
随後對注意力分數進行如下調整:
如下圖所示,校準方法(Quant-C,紅色)有效減輕了極端值的影響,使調整後的注意分數分布相較于未經校準的量化方法(Quant,藍色)更接近全精度(Exact)分布。
實驗結果
作者将提出的量化方法分别應用在 LLaVA 和 InternVL model 上,測試了其在 captioning,VQA,Video QA 三個不同的任務上的性能。以 captioning 任務為例,下圖展示了本文所提出的方法在 cococaption benchmark 下和其他方法如 KIVI,VLCache 的對比。
在不同比特數(8,4,2,1)下,本文提出的方法在大部分測試指标上都優于其他兩種方法。例如對于 llava-1.5-7b,本文的方法在 8 比特下達到最高的 CIDEr 分數 1.105,與全精度持平,并在 1 比特下提升至 1.109,超過了 VLCache(1.053)。同樣地,對于 InternVL-2.5-26B,本文的方法在 4 比特和 2 比特下分别取得了最高的 CIDEr 分數 1.32 和 1.313,均優于 VLCache 和 KIVI。
Runtime 分析
為了展示本文提出的量化方法對解碼效率的影響,作者使用 InternVL-2.5 系列模型,将所提出的 1 比特量化方法與 16 比特基線進行了吞吐量評估(即每秒生成的 token 數)。作者考慮了兩種視覺 token 長度的情況:n=3328 和 8192。作者将 GPU 最大内存從 5GB 變化到 30GB,并在每種内存限制下,尋找能夠容納的最大 batch size,測量解碼階段的吞吐量。
如下圖展示,1 比特量化方法在所有顯存預算下始終優于基線方法。例如,當 n=3329 且使用 80 億參數模型時,本文的方法在 5GB 顯存下實現了 126.582tokens/s 的吞吐量(基線為 11.628tokens/s),在 30GB 下提升至 459.016tokens/s(基線為 40.816tokens/s)。這意味着相比基線,本文方法的吞吐量提升約為 9.88 × 到 11.24 ×,充分展示了該方法在受限顯存條件下顯著提升解碼速率。
總結
本文探讨了多模态大語言模型中視覺 KV cache 的壓縮方法。簡單地将量化應用到極低比特數常常會引發分布偏移,導致模型性能下降。為了解決這一問題,本文提出了一種新穎的校準策略,作用于 softmax 之前的注意力分數,有效緩解了量化帶來的失真。此外,本文還引入了一種高效的通道維度後縮放技術以提高計算和存儲效率。
作者在 InternVL 和 LLaVA 模型系列上,針對 COCO Caption、MMBench-Video 和 DocVQA 等基準任務進行了實驗,結果驗證了所提出方法的有效性。作者利用 Triton 實現了本文所提出的方法,runtime 分析表明本文提出的方法相較于全精度模型有大約 10 倍的吞吐量提升。
論文标題:CalibQuant:1-Bit KV Cache Quantization for Multimodal LLMs
論文地址:https://arxiv.org/abs/2502.14882
代碼地址:https://github.com/insuhan/calibquant
一鍵三連「點贊」「轉發」「小心心」
歡迎在評論區留下你的想法!
— 完 —
學術投稿請于工作日發郵件到:
标題注明【投稿】,告訴我們:
你是誰,從哪來,投稿内容
附上論文 / 項目主頁鏈接,以及聯系方式哦
我們會(盡量)及時回復你
點亮星标
科技前沿進展每日見