部署與效率
量化感知訓練
如果訓練後量化掉太多準確率——典型發生在 int4,或是 ViT 與重度使用注意力的網路——解法是讓網路學會應付量化。量化感知訓練(QAT)在訓練過程中插入「假量化」(fake quantize)運算,依照部署時完全相同的方式做捨入,使權重調整成對該捨入更穩健。實際上,模型在出貨前就先「練習」被量化。
假量化節點在前向傳遞中模擬「量化再反量化」,使數值被吸附到推論時將取的離散階層,而訓練的其他部分仍維持浮點。問題在於 round() 幾乎處處梯度為零,這會阻斷學習。標準對策是直通估計器(straight-through estimator,STE):在反向傳遞中把捨入視為恆等函數(讓梯度原封不動通過),通常會把被截斷數值的梯度歸零。縮放係數在 QAT 中可固定,也可一起學習(LSQ——學習式步階量化)。
QAT 能找回 PTQ 損失的大部分準確率——int8 幾乎無損,int4 視覺模型常落在約 1% 以內——代價是一輪訓練。實務上這是從 FP 檢查點出發、為期數個 epoch 的短暫微調,而非從零訓練。一旦證明 PTQ 不足,它就是生產流程中的標準升級手段(PyTorch FX/Brevitas、TensorFlow Model Optimization Toolkit)。
STE 是有偏差的梯度近似,因此學習率與暖身(warm-up)細節很重要。關鍵在於:在 QAT 之前(或之中)把批次正規化(batch normalization)摺合進前一層卷積,讓訓練看到的是推論時實際執行的融合後計算圖——否則 QAT 訓練出的縮放係數會與部署模型不符。
又称