Experiencing the same issue. However if qconfig is set to qnnpack ( model.qconfig = torch.quantization.get_default_qconfig(‘qnnpack’)), this error goes away, but another issue pop up.
I am getting the following error for same code except qconfig set to qnnpack. Is there a fix for this? Any way to export quantized pytorch model to ONNX?
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-54-d1ee04c303f8> in <module>()
24 example_outputs=outputs,
25 # opset_version=10,
---> 26 operator_export_type=torch.onnx.OperatorExportTypes.ONNX_ATEN_FALLBACK)
27 # f.seek(0)
28 onnx_model = onnx.load(f)
C:\Users\mhamdan\AppData\Roaming\Python\Python37\site-packages\torch\onnx\__init__.py in export(model, args, f, export_params, verbose, training, input_names, output_names, aten, export_raw_ir, operator_export_type, opset_version, _retain_param_name, do_constant_folding, example_outputs, strip_doc_string, dynamic_axes, keep_initializers_as_inputs, custom_opsets, enable_onnx_checker, use_external_data_format)
228 do_constant_folding, example_outputs,
229 strip_doc_string, dynamic_axes, keep_initializers_as_inputs,
--> 230 custom_opsets, enable_onnx_checker, use_external_data_format)
231
232
C:\Users\mhamdan\AppData\Roaming\Python\Python37\site-packages\torch\onnx\utils.py in export(model, args, f, export_params, verbose, training, input_names, output_names, aten, export_raw_ir, operator_export_type, opset_version, _retain_param_name, do_constant_folding, example_outputs, strip_doc_string, dynamic_axes, keep_initializers_as_inputs, custom_opsets, enable_onnx_checker, use_external_data_format)
89 dynamic_axes=dynamic_axes, keep_initializers_as_inputs=keep_initializers_as_inputs,
90 custom_opsets=custom_opsets, enable_onnx_checker=enable_onnx_checker,
---> 91 use_external_data_format=use_external_data_format)
92
93
C:\Users\mhamdan\AppData\Roaming\Python\Python37\site-packages\torch\onnx\utils.py in _export(model, args, f, export_params, verbose, training, input_names, output_names, operator_export_type, export_type, example_outputs, opset_version, _retain_param_name, do_constant_folding, strip_doc_string, dynamic_axes, keep_initializers_as_inputs, fixed_batch_size, custom_opsets, add_node_names, enable_onnx_checker, use_external_data_format, onnx_shape_inference, use_new_jit_passes)
637 training=training,
638 use_new_jit_passes=use_new_jit_passes,
--> 639 dynamic_axes=dynamic_axes)
640
641 # TODO: Don't allocate a in-memory string for the protobuf
C:\Users\mhamdan\AppData\Roaming\Python\Python37\site-packages\torch\onnx\utils.py in _model_to_graph(model, args, verbose, input_names, output_names, operator_export_type, example_outputs, _retain_param_name, do_constant_folding, _disable_torch_constant_prop, fixed_batch_size, training, use_new_jit_passes, dynamic_axes)
419 fixed_batch_size=fixed_batch_size, params_dict=params_dict,
420 use_new_jit_passes=use_new_jit_passes,
--> 421 dynamic_axes=dynamic_axes, input_names=input_names)
422 from torch.onnx.symbolic_helper import _onnx_shape_inference
423 if isinstance(model, torch.jit.ScriptModule) or isinstance(model, torch.jit.ScriptFunction):
C:\Users\mhamdan\AppData\Roaming\Python\Python37\site-packages\torch\onnx\utils.py in _optimize_graph(graph, operator_export_type, _disable_torch_constant_prop, fixed_batch_size, params_dict, use_new_jit_passes, dynamic_axes, input_names)
180 torch.onnx.symbolic_helper._quantized_ops.clear()
181 # Unpack quantized weights for conv and linear ops and insert into graph.
--> 182 torch._C._jit_pass_onnx_unpack_quantized_weights(graph, params_dict)
183 # Insert permutes before and after each conv op to ensure correct order.
184 torch._C._jit_pass_onnx_quantization_insert_permutes(graph, params_dict)
RuntimeError: bad optional access