高效與邊緣人工智慧
GPTQ(一次性權重量化)
想像你必須把一層裡的每個權重四捨五入到少數幾個允許的數值上,但你可以微調那些還沒處理的權重,去吸收你剛剛造成的誤差。GPTQ 正是這樣做,一次處理一個權重欄:每當它把一欄對齊到 3 位元或 4 位元的格點時,就把產生的捨入誤差推到剩下尚未量化的欄上,讓這一層的輸出幾乎不變。
嚴格來說,它在 OBS/OBQ 框架下最小化原始輸出與量化後輸出之間的重建誤差,其中相關的曲率是該層輸入的海森矩陣 H = XXᵀ。以固定順序量化各欄,並對逆海森矩陣套用基於 Cholesky 分解的更新,便能以閉式解補償誤差而不需反向傳播,且可平行處理整個列區塊。它只需要幾百條序列的小型校準集,就能在單一 GPU 上於數小時內量化十億級參數的模型。
GPTQ 讓精確的 3 到 4 位元大型語言模型權重變得實用,至今仍是純權重量化的預設選擇。它的主要侷限是激活值仍保持較高精度,因此它對記憶體受限的解碼加速大於對運算受限的預填充;而在極低位元或離群值嚴重的層中,它的補償也可能失效。
\arg\min_{\hat W}\; \lVert WX-\hat W X\rVert_2^2,\qquad H=XX^\top
GPTQ 利用輸入海森矩陣 H = XXᵀ 最小化該層的輸出重建誤差。
GPTQ 只量化權重,激活值維持較高精度,所以它能縮小記憶體並加速逐詞元的解碼,卻無法像完整的 INT8 權重加激活量化那樣帶來運算上的加速。
又称
另见