本节将以ResNet50为例,指导用户调用Python API接口对模型进行Label-Free模式的识别和量化,并将量化后的模型保存为.onnx文件,量化后的模型可以在推理服务器上运行。
如下命令如果使用非root用户安装,需要在安装命令后加上--user,例如:pip3 install onnx --user。
pip3 install onnx #需大于等于1.11.0版本 pip3 install onnxruntime==1.12.1 #需大于等于1.12.1版本
from modelslim.onnx.post_training_quant import QuantConfig, run_quantize from modelslim.onnx.post_training_quant.label_free.preprocess_func import preprocess_func_imagenet
ModelSlim工具预置了ImageNet数据集预处理函数preprocess_func_imagenet,和coco数据集预处理函数preprocess_func_coco,导入后可直接调用函数进行预处理,其他模型所需数据集请自行预处理并参考4调用。
from modelslim import set_logger_level set_logger_level("info") #根据实际情况配置
若打屏显示出现如下提示时,用户无需处理。
WARNING:root:Please use QuantFormat.QDQ for activation type QInt8 and weight type QInt8. Or it will lead to bad performance on x64.
def custom_read_data(): calib_data = preprocess_func_imagenet("/home/xxx/data_path/") #根据数据集实际路径配置 return calib_data calib_data = custom_read_data()
def custom_read_data(): calib_data = [] # TODO 读取数据集,进行数据预处理,将数据存入calib_data return calib_data calib_data = custom_read_data()
quant_config = QuantConfig(calib_data = calib_data, amp_num = 5)
input_model_path="/home/xxx/ResNet50/resnet50_official.onnx" #根据实际路径配置 output_model_path="/home/xxx/ResNet50/resnet50_official_quant.onnx" #根据实际情况配置
run_quantize(input_model_path,output_model_path,quant_config)
python3 resnet50_quant.py