模型量化出错:
[root@800I-167 resnet50]# python3 imagenet_torch_preprocess.py --src_path ./data --save_path ./amct_bin --amct
[root@800I-167 resnet50]# amct_onnx calibration --model resnet50_official.onnx --save_path amct_model/resnet50 --input_shape "input:1,3,224,224" --data_dir amct_bin --data_types "float32" --calibration_config quant.cfg
2024-04-15 11:33:04,651 - WARNING - [AMCT]:[AMCT]: amct custom op library is empty, build it first.
2024-04-15 11:33:05,337 - INFO - [AMCT]:[Config]: Generate config file:/home/resnet50/43362_20240415113304/quant_config.json success!
2024-04-15 11:33:05,337 - INFO - [AMCT]:[create_quant_config]: Update onnx model:
2024-04-15 11:33:05,337 - INFO - [AMCT]:[Graph]: Doing whole model dump...
2024-04-15 11:33:05,468 - INFO - [AMCT]:[Utils]: The model file is saved in /home/resnet50/43362_20240415113304/updated_model.onnx
2024-04-15 11:33:05,469 - INFO - [AMCT]:[create_quant_config]: Create quant config file /home/resnet50/43362_20240415113304/quant_config.json success.
2024-04-15 11:33:07,036 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.transpose_fold_pass.TransposeFoldPass'>
2024-04-15 11:33:07,040 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.adjust_input_index_pass.AdjustInputIndexPass'>
2024-04-15 11:33:07,042 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.conv_add_bias_fusion.ConvAddBiasFusionPass'>
2024-04-15 11:33:07,045 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.bn_mul_fusion_pass.BnMulFusionPass'>
2024-04-15 11:33:07,047 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.bn_add_fusion_pass.BnAddFusionPass'>
2024-04-15 11:33:07,050 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.conv_bn_fusion_pass.ConvBnFusionPass'>
2024-04-15 11:33:07,052 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.apply_dmq_balancer_pass.ApplyDMQBalancerPass'>
2024-04-15 11:33:07,055 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.eltwise_opt_weights_calibration.AddOptWeightsCalibrationPass'>
2024-04-15 11:33:07,089 - INFO - [AMCT]:[AddOptWeightsCalibrationPass]: Do layers ['Conv_7', 'Conv_8', 'Conv_15', 'Conv_22'] union weights calibration success.
2024-04-15 11:33:07,260 - INFO - [AMCT]:[AddOptWeightsCalibrationPass]: Do layers ['Conv_29', 'Conv_30', 'Conv_37', 'Conv_44', 'Conv_51'] union weights calibration success.
2024-04-15 11:33:08,163 - INFO - [AMCT]:[AddOptWeightsCalibrationPass]: Do layers ['Conv_58', 'Conv_59', 'Conv_66', 'Conv_73', 'Conv_80', 'Conv_87', 'Conv_94'] union weights calibration success.
2024-04-15 11:33:08,349 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.weight_calibration.WeightsCalibrationPass'>
2024-04-15 11:33:19,273 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.add_opt_insert_act_calibration.AddOptInsertActCalibrationPass'>
2024-04-15 11:33:19,278 - INFO - [AMCT]:[AddOptInsertActCalibrationPass]: Insert IFMR node Conv_3_Conv_7_Conv_8_Conv_15_Conv_22_ifmr_op to union layers ['Conv_3', 'Conv_7', 'Conv_8', 'Conv_15', 'Conv_22'] success.
2024-04-15 11:33:19,280 - INFO - [AMCT]:[AddOptInsertActCalibrationPass]: Insert IFMR node Conv_25_Conv_29_Conv_30_Conv_37_Conv_44_Conv_51_ifmr_op to union layers ['Conv_25', 'Conv_29', 'Conv_30', 'Conv_37', 'Conv_44', 'Conv_51'] success.
2024-04-15 11:33:19,283 - INFO - [AMCT]:[AddOptInsertActCalibrationPass]: Insert IFMR node Conv_54_Conv_58_Conv_59_Conv_66_Conv_73_Conv_80_Conv_87_Conv_94_ifmr_op to union layers ['Conv_54', 'Conv_58', 'Conv_59', 'Conv_66', 'Conv_73', 'Conv_80', 'Conv_87', 'Conv_94'] success.
2024-04-15 11:33:19,289 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.insert_act_calibration.InsertActCalibrationPass'>
2024-04-15 11:33:21,011 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.add_opt_insert_searchn.AddOptInsertSearchNLayerPass'>
2024-04-15 11:33:22,253 - INFO - [AMCT]:[AddOptInsertSearchNLayerPass]: Insert SearchN node Conv_7_Conv_8_Conv_15_Conv_22_searchn_op to union layers ['Conv_7', 'Conv_8', 'Conv_15', 'Conv_22'] success.
2024-04-15 11:33:22,313 - INFO - [AMCT]:[AddOptInsertSearchNLayerPass]: Insert SearchN node Conv_29_Conv_30_Conv_37_Conv_44_Conv_51_searchn_op to union layers ['Conv_29', 'Conv_30', 'Conv_37', 'Conv_44', 'Conv_51'] success.
2024-04-15 11:33:22,631 - INFO - [AMCT]:[AddOptInsertSearchNLayerPass]: Insert SearchN node Conv_58_Conv_59_Conv_66_Conv_73_Conv_80_Conv_87_Conv_94_searchn_op to union layers ['Conv_58', 'Conv_59', 'Conv_66', 'Conv_73', 'Conv_80', 'Conv_87', 'Conv_94'] success.
2024-04-15 11:33:22,645 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.insert_search_n.InsertSearchNPass'>
2024-04-15 11:33:27,137 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.set_fusion_info.SetFusionInfoPass'>
2024-04-15 11:33:27,139 - INFO - [AMCT]:[Graph]: Doing whole model dump...
2024-04-15 11:33:29,690 - INFO - [AMCT]:[Utils]: The model file is saved in /home/resnet50/43362_20240415113304/modified_model.onnx
Traceback (most recent call last):
File "/usr/local/bin/amct_onnx", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.9/site-packages/amct_onnx/cmd_line_tools/command.py", line 159, in main
calibration_function(args_var)
File "/usr/local/lib/python3.9/site-packages/amct_onnx/cmd_line_tools/command.py", line 111, in calibration_function
evaluator.calibration(modified_model)
File "/usr/local/lib/python3.9/site-packages/amct_onnx/cmd_line_tools/command.py", line 49, in calibration
ort_session = ort.InferenceSession(modified_model, amct.AMCT_SO)
File "/usr/local/lib64/python3.9/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 283, in __init__
self._create_inference_session(providers, provider_options, disabled_optimizers)
File "/usr/local/lib64/python3.9/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 310, in _create_inference_session
sess = C.InferenceSession(session_options, self._model_path, True, self._read_config_from_model)
onnxruntime.capi.onnxruntime_pybind11_state.InvalidGraph: [ONNXRuntimeError] : 10 : INVALID_GRAPH : Load model from 43362_20240415113304/modified_model.onnx failed:This is an invalid model. Error in Node:Gemm_121_ifmr_op : No opset import for domain 'amct.customop'
模型量化出错:
[root@800I-167 resnet50]# python3 imagenet_torch_preprocess.py --src_path ./data --save_path ./amct_bin --amct
[root@800I-167 resnet50]# amct_onnx calibration --model resnet50_official.onnx --save_path amct_model/resnet50 --input_shape "input:1,3,224,224" --data_dir amct_bin --data_types "float32" --calibration_config quant.cfg
2024-04-15 11:33:04,651 - WARNING - [AMCT]:[AMCT]: amct custom op library is empty, build it first.
2024-04-15 11:33:05,337 - INFO - [AMCT]:[Config]: Generate config file:/home/resnet50/43362_20240415113304/quant_config.json success!
2024-04-15 11:33:05,337 - INFO - [AMCT]:[create_quant_config]: Update onnx model:
2024-04-15 11:33:05,337 - INFO - [AMCT]:[Graph]: Doing whole model dump...
2024-04-15 11:33:05,468 - INFO - [AMCT]:[Utils]: The model file is saved in /home/resnet50/43362_20240415113304/updated_model.onnx
2024-04-15 11:33:05,469 - INFO - [AMCT]:[create_quant_config]: Create quant config file /home/resnet50/43362_20240415113304/quant_config.json success.
2024-04-15 11:33:07,036 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.transpose_fold_pass.TransposeFoldPass'>
2024-04-15 11:33:07,040 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.adjust_input_index_pass.AdjustInputIndexPass'>
2024-04-15 11:33:07,042 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.conv_add_bias_fusion.ConvAddBiasFusionPass'>
2024-04-15 11:33:07,045 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.bn_mul_fusion_pass.BnMulFusionPass'>
2024-04-15 11:33:07,047 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.bn_add_fusion_pass.BnAddFusionPass'>
2024-04-15 11:33:07,050 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.conv_bn_fusion_pass.ConvBnFusionPass'>
2024-04-15 11:33:07,052 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.apply_dmq_balancer_pass.ApplyDMQBalancerPass'>
2024-04-15 11:33:07,055 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.eltwise_opt_weights_calibration.AddOptWeightsCalibrationPass'>
2024-04-15 11:33:07,089 - INFO - [AMCT]:[AddOptWeightsCalibrationPass]: Do layers ['Conv_7', 'Conv_8', 'Conv_15', 'Conv_22'] union weights calibration success.
2024-04-15 11:33:07,260 - INFO - [AMCT]:[AddOptWeightsCalibrationPass]: Do layers ['Conv_29', 'Conv_30', 'Conv_37', 'Conv_44', 'Conv_51'] union weights calibration success.
2024-04-15 11:33:08,163 - INFO - [AMCT]:[AddOptWeightsCalibrationPass]: Do layers ['Conv_58', 'Conv_59', 'Conv_66', 'Conv_73', 'Conv_80', 'Conv_87', 'Conv_94'] union weights calibration success.
2024-04-15 11:33:08,349 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.weight_calibration.WeightsCalibrationPass'>
2024-04-15 11:33:19,273 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.add_opt_insert_act_calibration.AddOptInsertActCalibrationPass'>
2024-04-15 11:33:19,278 - INFO - [AMCT]:[AddOptInsertActCalibrationPass]: Insert IFMR node Conv_3_Conv_7_Conv_8_Conv_15_Conv_22_ifmr_op to union layers ['Conv_3', 'Conv_7', 'Conv_8', 'Conv_15', 'Conv_22'] success.
2024-04-15 11:33:19,280 - INFO - [AMCT]:[AddOptInsertActCalibrationPass]: Insert IFMR node Conv_25_Conv_29_Conv_30_Conv_37_Conv_44_Conv_51_ifmr_op to union layers ['Conv_25', 'Conv_29', 'Conv_30', 'Conv_37', 'Conv_44', 'Conv_51'] success.
2024-04-15 11:33:19,283 - INFO - [AMCT]:[AddOptInsertActCalibrationPass]: Insert IFMR node Conv_54_Conv_58_Conv_59_Conv_66_Conv_73_Conv_80_Conv_87_Conv_94_ifmr_op to union layers ['Conv_54', 'Conv_58', 'Conv_59', 'Conv_66', 'Conv_73', 'Conv_80', 'Conv_87', 'Conv_94'] success.
2024-04-15 11:33:19,289 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.insert_act_calibration.InsertActCalibrationPass'>
2024-04-15 11:33:21,011 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.add_opt_insert_searchn.AddOptInsertSearchNLayerPass'>
2024-04-15 11:33:22,253 - INFO - [AMCT]:[AddOptInsertSearchNLayerPass]: Insert SearchN node Conv_7_Conv_8_Conv_15_Conv_22_searchn_op to union layers ['Conv_7', 'Conv_8', 'Conv_15', 'Conv_22'] success.
2024-04-15 11:33:22,313 - INFO - [AMCT]:[AddOptInsertSearchNLayerPass]: Insert SearchN node Conv_29_Conv_30_Conv_37_Conv_44_Conv_51_searchn_op to union layers ['Conv_29', 'Conv_30', 'Conv_37', 'Conv_44', 'Conv_51'] success.
2024-04-15 11:33:22,631 - INFO - [AMCT]:[AddOptInsertSearchNLayerPass]: Insert SearchN node Conv_58_Conv_59_Conv_66_Conv_73_Conv_80_Conv_87_Conv_94_searchn_op to union layers ['Conv_58', 'Conv_59', 'Conv_66', 'Conv_73', 'Conv_80', 'Conv_87', 'Conv_94'] success.
2024-04-15 11:33:22,645 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.insert_search_n.InsertSearchNPass'>
2024-04-15 11:33:27,137 - INFO - [AMCT]:[Optimizer]: Do <class 'amct_onnx.optimizer.set_fusion_info.SetFusionInfoPass'>
2024-04-15 11:33:27,139 - INFO - [AMCT]:[Graph]: Doing whole model dump...
2024-04-15 11:33:29,690 - INFO - [AMCT]:[Utils]: The model file is saved in /home/resnet50/43362_20240415113304/modified_model.onnx
Traceback (most recent call last):
File "/usr/local/bin/amct_onnx", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.9/site-packages/amct_onnx/cmd_line_tools/command.py", line 159, in main
calibration_function(args_var)
File "/usr/local/lib/python3.9/site-packages/amct_onnx/cmd_line_tools/command.py", line 111, in calibration_function
evaluator.calibration(modified_model)
File "/usr/local/lib/python3.9/site-packages/amct_onnx/cmd_line_tools/command.py", line 49, in calibration
ort_session = ort.InferenceSession(modified_model, amct.AMCT_SO)
File "/usr/local/lib64/python3.9/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 283, in __init__
self._create_inference_session(providers, provider_options, disabled_optimizers)
File "/usr/local/lib64/python3.9/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 310, in _create_inference_session
sess = C.InferenceSession(session_options, self._model_path, True, self._read_config_from_model)
onnxruntime.capi.onnxruntime_pybind11_state.InvalidGraph: [ONNXRuntimeError] : 10 : INVALID_GRAPH : Load model from 43362_20240415113304/modified_model.onnx failed:This is an invalid model. Error in Node:Gemm_121_ifmr_op : No opset import for domain 'amct.customop'