部署與效率

訓練後量化

你已經有一個完全訓練好的 FP32 模型,而且不想重新訓練——沒有標籤、沒有數天的 GPU 時間、也沒有訓練流程。訓練後量化(PTQ)直接把該模型轉成低精度,只用一小批未標註、具代表性的「校準」(calibration)影像來推算出正確的縮放係數。它是通往 int8 的快速、務實路徑:花的是幾分鐘,而非一整輪訓練。

權重的縮放係數直接由權重統計量算出(常用 per-channel 的最小/最大值)。激活值的縮放係數則需要校準:你跑幾百張具代表性的影像,收集每個激活張量的直方圖,再挑出一個能讓誤差最小的截斷範圍。常見準則有單純的最小/最大值、某個高百分位數(截掉罕見離群值),或浮點分布與量化分布之間的 KL 散度/熵(TensorRT 的經典做法)。「靜態」PTQ 把這些激活縮放係數固定寫死;「動態」PTQ 則改在執行時依每個輸入計算各激活的範圍(不需校準集,在 transformer 與 NLP 中很受歡迎)。

對 CNN 而言,單純的 int8 PTQ 幾乎無損;但激進設定(int4)或 transformer/ViT 模型就需要更聰明的方法:AdaRound(學習每個權重該往上或往下取整,而非一律最近捨入)、偏差修正(補償某層引入的平均誤差)、跨層均衡化(cross-layer equalization),以及用於權重的 GPTQ/AWQ 與把激活離群值搬移到權重上的 SmoothQuant。當連這些都掉太多準確率時,就要升級到量化感知訓練。

在約 500 張 ImageNet 影像上以熵校準執行 TensorRT 的 int8 PTQ,通常能讓 ResNet-50 的 top-1 落在 FP32 基線約 0.5% 以內,且完全不需重訓。

校準資料必須能代表部署時的分布。若在錯誤的領域上校準(例如部署在夜間卻用白天影像校準),所選範圍會截斷真正的訊號,在最關鍵之處悄悄拉低準確率。

又稱
PTQ