現代 AI 的「權重量化」:從 FP32 到 INT4,模型是如何在不丟失智商的前提下「瘦身」的?

在 AI 圈,我們經常聽到一個詞叫「量化」(Quantization)。當你看到一個 70B 參數的模型原本需要 140GB 顯存才能跑起來,但經過量化後,只需要 40GB 甚至更少就能在消費級顯示卡上運行且效果幾乎沒掉時,這就是量化的魔力。

專屬插圖
現代 AI 的「權重量化」:從 FP32 到 INT4,模型是如何在不丟失智商的前提下「瘦身」的?

現代 AI 的「權重量化」:從 FP32 到 INT4,模型是如何在不丟失智商的前提下「瘦身」的?

在 AI 圈,我們經常聽到一個詞叫「量化」(Quantization)。當你看到一個 70B 參數的模型原本需要 140GB 顯存才能跑起來,但經過量化後,只需要 40GB 甚至更少就能在消費級顯示卡上運行且效果幾乎沒掉時,這就是量化的魔力。

但量化到底在做什麼?它是不是簡單的「四捨五入」?

1. 核心矛盾:精度 vs 記憶體

深度學習模型本質上是一個巨大的矩陣乘法機器。模型中的每一個「參數」(Weight)在訓練時通常使用 FP32(單精度浮點數) 表示。一個 FP32 數字佔用 32 位元(4 位元組)。

對於一個 70B(700 億參數)的模型:
$70 \times 10^9 \text{ parameters} \times 4 \text{ bytes} \approx 280\text{ GB}$

這意味著你得用好幾張 H100 才能勉強載入模型。而推論時的瓶頸往往不在於計算速度(TFLOPS),而在於記憶體頻寬(Memory Bandwidth)——把權重從顯存搬到計算單元的時間,遠比計算本身慢得多。

量化的目標很簡單:用更少的位元數(Bit-width)來表示同一個數字,從而減少記憶體佔用並提升搬運速度。

2. 量化的本質:映射與縮放

量化不是簡單的截斷,而是一個映射過程。最常見的是線性量化(Linear Quantization)。

假設我們有一組 FP32 的權重 $\mathbf{W}$,其範圍在 $[-1.5, 2.5]$ 之間。我們要把它量化到 INT8(範圍 $[-128, 127]$)。

量化的公式通常是:
$$Q = \text{round}\left(\frac{W}{S} + Z\right)$$
其中 $S$ 是縮放因子(Scale),$Z$ 是零點(Zero-point)。

  • Scale ($S$): 將 FP32 的動態範圍映射到 INT8 的範圍。例如 $S = (2.5 - (-1.5)) / (127 - (-128)) \approx 0.0157$。
  • Zero-point ($Z$): 處理非對稱分佈,確保 FP32 的 $0$ 能精確地映射到某個整數上。

這樣,原本需要 32 位元儲存的數字變成了 8 位元,記憶體佔用直接下降為原來的 $1/4$。

3. 從 INT8 到 INT4:精度崩塌的臨界點

當我們將位元數進一步壓縮到 INT4 時,問題變得棘手了。INT4 只有 $2^4 = 16$ 個可選值。如果簡單地線性映射,很多細微的權重差異會被抹平,導致模型出現「智商掉線」或輸出亂碼。

為了解決這個問題,工業界引入了更高級的方案:

A. 分組量化 (Group-wise Quantization)

不再對整個矩陣使用同一個 $S$,而是將權重分成小組(例如每 64 個參數一組),每組擁有獨立的 Scale 和 Zero-point。這樣可以極大地捕捉局部分佈的特性。

B. NF4 (NormalFloat 4) —— QLoRA 的核心

NF4 是針對常態分佈設計的特殊量化格式。研究發現 LLM 的權重分佈極其接近常態分佈 $\mathcal{N}(0, \sigma^2)$。NF4 不再使用等間距的整數映射,而是根據常態分佈的分位數來定義這 16 個值。這意味著在機率密度更高的地方分配更多的表示精度,從而在極低位元下維持驚人的效能。

4. 量化的代價是什麼?

雖然記憶體省了,但並非沒有代價:
1. 量化誤差 (Quantization Error): 每個數字都被近似了 $\rightarrow$ 模型預測機率分佈發生偏移 $\rightarrow$ 生成品質輕微下降(Perplexity 上升)。
2. 反量化開銷 (Dequantization Overhead): GPU 計算單元通常不支援直接進行 INT4 $\times$ FP16 的矩陣乘法。實際操作中,權重以 INT4 在顯存中儲存 $\rightarrow$ 在計算前瞬間被「反量化」回 FP16 $\rightarrow$ 進行計算 $\rightarrow$ 然後丟棄反量化結果。這個過程雖然快,但依然有開銷。

5. 給開發者的實踐建議

如果你在部署模型時猶豫選擇哪個版本:
- FP16/BF16: 基準線,最高精度,適合資源充足的生產環境。
- INT8 (SmoothQuant/GPTQ): 非常穩健的選擇,幾乎無感損耗 $\rightarrow$ 首選方案。
- INT4 (AWQ/GPTQ/GGUF): 在消費級硬體上的唯一選擇 $\rightarrow$ 如果是通用任務且顯存吃緊,AWQ 通常比 GPTQ 在精度保持上略好。
- $\le$ INT3: 目前處於學術探索階段或極小規模部署 $\rightarrow$ 不要指望它能維持複雜邏輯能力。

總結: 量化是 AI 工程學中典型的「用空間換時間」和「用精度換可用性」的權衡藝術。它讓 LLM 從昂貴的伺服器叢集走進了每個開發者的筆記型電腦中。

留言區

歡迎分享你的想法!

發表留言

0/500

載入留言中…