勵志

勵志人生知識庫

ptq量化

PTQ量化,全稱訓練後量化(Post-Training Quantization),是一種模型量化技術,旨在減少模型大小和提高推理速度,同時儘量保持模型的性能。這種量化技術在模型訓練完成後套用,對於部署到資源受限的設備上,如行動裝置和嵌入式設備,特別有用。

在PTQ量化過程中,使用一批校準數據對訓練好的模型進行校準,將訓練好的FP32網路直接轉換為定點計算的網路。這個過程無需對原始模型進行任何訓練,只需對幾個超參數進行調整即可完成量化。在量化過程中,會計算每一層的scale,這是非常重要的一個步驟。

TensorRT提供的PTQ算法包括EntropyCalibratorV2、MinMaxCalibrator、EntropyCalibrator和LegacyCalibrator。通過這些算法進行量化時,TensorRT會在最佳化網路時嘗試使用INT8精度。如果某一層在INT8精度下的速度優於默認精度,則會優先使用INT8。由於TensorRT是以速度為優先的,因此用戶無法控制某一層的精度。同時,TensorRT還會進行圖最佳化,如當一個OP設定為Int8精度,但其與另一個OP合併會導致速度更快時,TensorRT就會將兩個OP合併,並忽略用戶設定的INT8精度。

PTQ量化的流程包括:

在準備好的校準數據集上評估預訓練模型

使用校準數據來校準模型(校準數據可以是訓練集的子集)

計算網路中權重和激活的動態範圍用來算出量化參數(q-params)

使用q-params量化網路並執行推理。

具體使用就是我們導出ONNX模型,轉換為engine的過程中使用TensorRT提供的Calibration方法去校準,這個使用起來比較簡單。