---
title: "你知道AI模型壓縮技術「量化」- Quantization嗎？"
description: "### 量化(Quantization)的定義是什麼？ 眾所週知，現實世界是連續…"
url: "https://makerpro.cc/docs/quantization-technology/"
updated: "2025-04-24"
category: AI Deployment
tags:
  - Quantization
---

# 你知道AI模型壓縮技術「量化」- Quantization嗎？

### 量化(Quantization)的定義是什麼？

眾所週知，現實世界是連續的狀態，而電腦的世界則是離散的。透過下圖，可以看見左邊的馬力歐呈現像素化的狀態，可以看作是「離散」的狀態，右邊的馬力歐則是高清畫面，可以看作是「連續」狀態。所以對電腦而言，圖片若想要越來越清楚，就是要使圖片格子數越大越好。

 ![](https://makerpro.cc/makerlearn/wp-content/uploads/2023/08/圖片-1-e1692070380260.png)

[圖片來源](http://tech.sina.com.cn/it/2015-07-04/doc-ifxesftm9556659.shtml)（左），[圖片來源](https://zh.wikipedia.org/zh-tw/%E9%A9%AC%E5%8A%9B%E6%AC%A7_%28%E8%A7%92%E8%89%B2%29)（右）

畫素的多寡影響著圖片的清晰度，但這些清晰度對人眼來說，辨識也是有限的。譬如原本是800萬畫素的圖片，但手機呈現的是200萬畫素，再不局部放大的情況下，人眼很難瞬間辨認出兩者的差異。

AI量化也是這個道理。若將AI模型比擬為800萬畫素的圖片，量化就是要將這圖片縮小成30萬畫素，並不被人眼看出差異。也就是將模型的浮點數換算成整數，即「浮點(float)運算」轉換成「整數(integer)運算」。簡單來說，量化是讓模型進行forward整數運算進行加速推理，直接對模型進行壓縮成為整數。

 

### Post-training Quantization是什麼？

Post-train Quantization，就是AI模型的權重訓練（浮點數）好之後，直接將模型權重轉換成整數。

以INT4為例。如果不考慮負號，最簡單的最簡單的方式就是把「浮點數的值域最大值轉換成15」，「浮點數的值域最小值轉換成0」。

 ![](https://makerpro.cc/makerlearn/wp-content/uploads/2023/08/2.png)

INT4的Quantization轉換。（[圖片來源](https://chih-sheng-huang821.medium.com/ai模型壓縮技術-量化-quantization-966505128365)）

那浮點數最大最小值轉換成0和15後，中間的浮點數字要怎麼轉換？INT4中，整數為0到16，而每個數字的間隔都是1，所以最簡單的方式是浮點數也想辦法切成15格。這邊運用的是最簡單的方式，有就是將每一格的ㄉ錒小都默認相同，所以只需要將浮點的值域（最大值-最小值）除上15即可，而在浮點數上每一格子的大小也稱為Scale。

 ![](https://makerpro.cc/makerlearn/wp-content/uploads/2023/08/3.png)

浮點數上的間隔是一樣寬的。（[圖片來源](https://chih-sheng-huang821.medium.com/ai模型壓縮技術-量化-quantization-966505128365)）

切好的格子中，每格大小都是固定的Scale，每格內的數字都會與INT4對應。例如：最左邊橘線內的數子，轉換至整數後，結果為0；黃線內的數子，轉換至整數後，結果為5（皆四捨五入）

此即Post-train Quantization。

### AI模型做量化有什麼差別或是好處？

單精度浮點數32bit在電腦一個數字就4 Byte，而八位元（INT8）的整數只占1 Byte，所以123.456789在電腦儲存用一個4 Byte的FP32，而123只需要1 Byte。從4 Byte變成1 Byte似乎沒有差異很大，但是AI模型大小通常都是幾百萬幾千萬的參數。舉例來說，ResNet18的參數高達3千多萬，如果用用FP32來儲存，換算一下就需要126MB來儲存，而用INT8呢？模型可以壓縮到1/4，也就是31.5MB左右。計算元和儲存的memory之間溝通的資料減少了，大幅減少頻帶寬需求，最重要的是內存的頻帶寬需求也會減少。

因此訓練後的模型如要部署在比較邊緣的設備上，大多會選擇採用整數來進行。因為如果採用伺服器訓練好的浮點運算模型，邊緣設備的硬體運算資源就會不夠，而為了解決儲存、運算以及耗能的相關問題，、就會採用整數進行部署。

**》延伸閱讀：**

[AI模型壓縮技術-量化(Quantization)](https://chih-sheng-huang821.medium.com/ai%E6%A8%A1%E5%9E%8B%E5%A3%93%E7%B8%AE%E6%8A%80%E8%A1%93-%E9%87%8F%E5%8C%96-quantization-966505128365)
