量化
在您使用 load_model() 將訓練好的模型導入 LoadedNet 之後,使用 LoadedNet.quantize 進行量化(請參閱 API Reference)。
SiMa.ai 矽晶片在機器學習加速器 (MLA) 上執行 INT8 和 BF16,並在應用處理單元 (APU) 和電腦視覺單元 (CVU) 上執行浮點運算。
預處理和後處理函數在 APU 和 CVU 上執行。模型層(例如卷積和池化)在 MLA 上執行。量化器會自動將圖劃分到不同的運算單元。只有在 MLA 上執行的部分才會進行量化。
考量量化的訓練 (QAT)
訓練後量化 (PTQ) 請依照下方的預設量化章節操作。如果可以重新訓練 PyTorch 模型 ,請使用量化感知訓練在微調期間模擬 INT8 效果,並匯出標準 QDQ ONNX 模型。接著依照從 QAT ONNX 到編譯後的模型操作。
預設量化
在建立自訂設定之前,請將 default_quantization 作為基準 INT8 設定使用。
from afe.apis.defines import default_quantization
quant_model = loaded_net.quantize(
calibration_data=calib_data,
quantization_config=default_quantization,
model_name="my_model",
)
通道均等化是一種可選的預處理步驟,用於使不同通道上的權重分佈保持一致。請透過以下方式啟用:
QuantizationParams.with_channel_equalization.
QAT 匯出
以一般方式載入 QDQ ONNX 模型,接著使用上方的 LoadedNet.quantize,以及編譯中說明的 Model.compile。AFE 會讀取匯出的 QDQ 縮放因子和零點;不要設定內部旗標 is_quantized=True