🗺️ AI 學習與考證地圖
生成式 AI · 模型優化與部署

模型量化 Quantization:把 32 位元浮點變 8 位元整數

一個 70 億參數的模型,用 FP32 存要 28 GB,筆電跑不動、手機更不用說。量化就是把每個權重從「小數點後很多位」改成「粗一點的整數刻度」——體積縮到 1/4 甚至 1/8,速度變快、更省電,代價是損失一點點精度。這頁讓你親手拉滑桿,看幾位元開始「掉準」。

FP32 → INT8scale / zero-point對稱 vs 非對稱PTQ vs QATGPTQ / AWQ / GGUF邊緣部署

💡一句話定義

模型量化(Quantization)=把模型的權重(與/或啟動值)從高精度浮點數(如 FP32,32 位元)轉成低位元表示(如 FP16、INT8、INT4),用「比較粗的刻度」來記每一個數。目的是縮小模型體積、加快推論、降低能耗,讓模型能塞進手機、嵌入式裝置或便宜的 GPU;代價是每個數都會被「四捨五入」到最近的刻度,產生量化誤差,位元數太低時準確率會明顯下滑。

生活比喻:量尺上原本刻到 0.001 公分,改成只刻到 0.5 公分。量一般東西還是夠用,量到很精密的零件就會出錯。

🤔為什麼要量化?因為模型「太胖」了

模型的體積=參數數量 × 每個參數占的位元數。參數數量通常不能動(那是模型的能力),所以要瘦身只能從「每個參數占幾位元」下手。

💾記憶體
模型要整個載進 GPU/手機記憶體才能跑。70 億參數 FP32 要 28 GB,一張 24 GB 的消費級顯卡都裝不下。
⚡延遲
LLM 推論大多卡在「搬資料」而不是「算」。位元數減半,搬的資料量就減半,回應更快。
🔋能耗
整數運算比浮點運算省電得多,手機與 IoT 裝置撐得住續航。
📱邊緣裝置
手機、車機、攝影機、工業控制器沒有雲端那種算力,要在本地跑 AI 幾乎一定得量化。

精度階梯:以 70 億參數模型為例

FP3232 位元浮點
28 GB · 訓練時的原生精度
FP16 / BF1616 位元浮點
14 GB · 幾乎不掉準,GPU 推論標配
INT88 位元整數
7 GB · 掉準很小,部署最常見
INT44 位元整數
3.5 GB · 開始有感掉準,但筆電能跑
FP16 vs BF16:兩者都是 16 位元,差在怎麼分配位元。BF16(bfloat16)保留與 FP32 一樣多的「指數位」,數值範圍大、不容易溢位,訓練時更穩;FP16把位元多給「尾數」,精度細但範圍小。推論時兩者都常用。

📏核心概念:scale 與 zero-point(數線圖解)

量化本質上就是把一段實數區間,對應到有限個整數刻度。兩個參數決定這個對應:

📐scale(縮放係數,s)
一格整數刻度代表多大的實數。區間越寬、位元越少,s 越大,刻度越粗、誤差越大。
🎯zero-point(零點,z)
實數的 0 對應到哪一個整數。對稱量化 z = 0;非對稱量化 z 可以不為 0,用來把「偏一邊」的區間對準。
$q = \mathrm{clamp}\!\left(\mathrm{round}\!\left(\tfrac{x}{s}\right) + z\right), \qquad \hat{x} = s\,(q - z)$ x:原本的浮點值;q:量化後的整數;x̂:反量化(還原)後的值;誤差 = x − x̂

對稱 vs 非對稱:同一組權重、3 位元(8 個刻度)

對稱量化:以 0 為中心,區間 [−max|x|, +max|x|],z = 0。權重若集中在某一側,另一側的刻度會浪費。
非對稱量化:區間 [min, max] 剛好貼合資料,z 把實數 0 對到某個整數。刻度用得更滿、誤差通常更小,但運算多一步減 z。
粒度(granularity)也會影響誤差:整個張量共用一組 s、z 叫 per-tensor;每一個輸出通道各自一組叫 per-channel;LLM 常用 per-group(每 64 或 128 個權重一組)。切得越細,s 越貼合局部分布,誤差越小,但要多存一些 s、z。

🎮互動:量化實驗台

拉滑桿選位元數(2–16),切換對稱/非對稱,看一組真實大小的權重被量化後變成什麼、誤差多大、模型縮小幾倍,以及示意的準確率曲線在哪裡「跳水」。

🔬 量化實驗台
8 bit
常用設定
量化方式
256
可用刻度數(2ⁿ)
—
scale(一格多大)
—
均方誤差 MSE
4×
相對 FP32 縮小倍數
7 GB
70 億參數模型大小
—
相對準確率(示意)
權重原值 x整數 q還原 x̂誤差
相對準確率 vs 位元數(示意曲線;實際數字依模型與方法而異,但「4 位元以下急掉」的形狀很典型)

🔁什麼時候做量化?PTQ vs QAT

面向PTQ 訓練後量化
Post-Training Quantization
QAT 量化感知訓練
Quantization-Aware Training
做法模型訓練完,直接把權重換成低位元;通常用少量校正資料估計 s、z訓練(或微調)過程中就「模擬」量化的捨入誤差,讓模型學會適應粗刻度
需要重訓?不用(或只要幾百筆校正資料)要,需要訓練資料與 GPU 時間
成本低、快,幾分鐘到幾小時高,接近一次微調
精度INT8 通常夠好;INT4 以下可能明顯掉準低位元(INT4、甚至更低)仍能維持較高準確率
適用大多數部署場景的第一選擇,LLM 幾乎都用 PTQ精度要求高又必須極低位元的場景(如手機上的視覺模型)
LLM 常見的 PTQ 做法(點到為止):
GPTQ:逐層量化,利用二階資訊(Hessian)補償捨入誤差,INT4 也能保持不錯的品質。
AWQ(Activation-aware Weight Quantization):觀察啟動值,找出「少數特別重要的權重通道」先保護起來,再量化其他部分。
GGUF:不是演算法而是檔案格式(llama.cpp 生態),裡面放的是量化後的權重,常見 Q4_K_M、Q8_0 這類名稱,讓模型能在 CPU/筆電上跑。

🆚量化 vs 剪枝 vs 知識蒸餾:三種「模型瘦身」差在哪

這三個名詞考試最愛放在一起考。記住一句話:量化=降精度、剪枝=砍權重、蒸餾=教小模型。

面向量化 Quantization剪枝 Pruning知識蒸餾 Knowledge Distillation
做了什麼每個參數用更少位元表示把不重要的權重/神經元/注意力頭直接刪掉(設為 0 或移除)用大模型(老師)的輸出當目標,訓練一個小模型(學生)
參數數量不變變少(稀疏化或結構縮小)變少(學生本來就是小架構)
模型架構不變非結構化剪枝不變、結構化剪枝會變完全不同,可自由設計
需要重訓?PTQ 不用;QAT 要通常要微調恢復精度要,整個學生要從頭或半途訓練
成本最低中最高
生活比喻照片從 RAW 存成 JPEG把書裡的廢話刪掉老師把一門課濃縮講給學生聽
能否疊加可以。常見組合:先蒸餾出小模型 → 剪枝 → 最後量化部署。

想看蒸餾的「軟標籤」怎麼教學生,去 知識蒸餾互動動畫。

⚠️常見誤區與風險

誤區 1:「量化會讓模型變小,所以參數變少了。」
錯。量化後參數數量完全一樣,只是每個參數占的位元變少。參數變少的是剪枝與蒸餾。
誤區 2:「位元越少越好,反正模型變快。」
位元數與準確率不是線性關係:INT8 幾乎無感,INT4 開始有感,2–3 位元常常崩掉。而且硬體要真的支援該位元的整數運算才會變快(INT8 普遍支援;INT4 在部分硬體上要靠額外解壓,速度反而未必快)。
誤區 3:「量化只動權重。」
權重量化(weight-only)最常見,但推論中間的啟動值(activation)也可以量化(W8A8 代表權重 8 位元、啟動 8 位元)。啟動值裡常有少數「離群大值」(outlier),是量化掉準的主因之一,AWQ、SmoothQuant 等方法就是在處理這件事。
風險:量化後一定要重新評估——除了整體準確率,也要看少數類別、長尾案例與安全相關行為有沒有變差;部署前做 A/B 比較,別只看模型變小了多少。

✅自我檢測

每題單選,點選後立刻顯示對錯與解釋。

🎯重點整理

📝 iPAS 考點提醒

模型量化屬於 iPAS AI 應用規劃師「模型優化與部署」範圍,初級考定義辨析:量化(降低位元精度,參數數量不變)、剪枝(刪除不重要權重,參數變少)、知識蒸餾(大模型教小模型)三者放在同一題選項裡互相干擾是常態;也會問 FP32→INT8 體積縮小幾倍(4 倍)、量化的目的(記憶體、延遲、能耗、邊緣裝置)與代價(精度損失)。中級考情境選擇與取捨判讀:「要在手機/嵌入式裝置離線推論、算力與記憶體有限」→ 量化(常搭配蒸餾或剪枝);「量化後準確率掉太多、必須用極低位元」→ 改用 QAT 而非 PTQ;「不想重新訓練、快速部署」→ PTQ。易混點:(1) 量化不減參數;(2) 位元越低不保證越快,硬體要支援;(3) 量化可與剪枝、蒸餾疊加。

想練情境題與詳解 → AI 學習與考證地圖

❓ 常見問題

模型量化是什麼?

把模型的權重(或啟動值)從高精度浮點數(如 FP32)轉成低位元表示(如 FP16、INT8、INT4),用較粗的刻度記每個數,以縮小體積、加快推論、降低能耗,代價是少量精度損失。

量化後模型的參數數量會變少嗎?

不會。量化只改每個參數占的位元數,參數數量不變;會減少參數的是剪枝與知識蒸餾。

scale 和 zero-point 分別是什麼?

scale 是一格整數刻度代表多大的實數,決定刻度粗細;zero-point 是實數 0 對應到哪一個整數,對稱量化為 0,非對稱量化可不為 0 以貼合偏一邊的數值區間。

PTQ 和 QAT 差在哪?

PTQ(訓練後量化)在模型訓練完後直接轉低位元,不需重訓、成本低,INT8 通常夠用;QAT(量化感知訓練)在訓練時模擬量化誤差讓模型適應,成本高但極低位元下準確率較好。

量化、剪枝、知識蒸餾怎麼分?

量化=降精度(位元變少、參數不變);剪枝=砍權重(刪除不重要的連接,參數變少);蒸餾=教小模型(用大模型輸出訓練小架構)。三者可以疊加使用。

GPTQ、AWQ、GGUF 是什麼?

GPTQ 與 AWQ 是 LLM 常用的 INT4 訓練後量化方法:GPTQ 逐層補償捨入誤差,AWQ 依啟動值保護重要權重通道。GGUF 則是 llama.cpp 生態存放量化模型的檔案格式,不是演算法。

🧭 相關主題

← 返回 AI 學習與考證地圖