microsoft / onnx-server-openenclave

An Open Enclave port of the ONNX inference server with data encryption and attestation capabilities to enable confidential inference on Azure Confidential Computing.
MIT License
55 stars 9 forks source link

Error when running client #5

Closed osobo closed 3 years ago

osobo commented 3 years ago

Hi,

I tried to recreate the steps from the readme and got an error when sending the inference request.

I'm running on Ubuntu 18.04.5. Other than following the steps from the readme I had to install libprotoc-dev and python3.7-dev.

This is what happens when I get the error:

user@host$ python3.7 -m confonnx.main --url http://localhost:8888/ --enclave-hash "<HASH>" --enclave-model-hash-file model.hash --json-in input.json --json-out output.json --enclave-allow-debug
Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/user/.local/lib/python3.7/site-packages/confonnx/main.py", line 17, in <module>
    from confonnx.client import Client
  File "/home/user/.local/lib/python3.7/site-packages/confonnx/client.py", line 12, in <module>
    import confonnx.predict_pb2 as predict_pb2
  File "/home/user/.local/lib/python3.7/site-packages/confonnx/predict_pb2.py", line 17, in <module>
    import confonnx.onnx_ml_pb2 as onnx__ml__pb2
  File "/home/user/.local/lib/python3.7/site-packages/confonnx/onnx_ml_pb2.py", line 23, in <module>
    serialized_pb=_b('\n\ronnx-ml.proto\x12\x04onnx\"\xe0\x03\n\x0e\x41ttributeProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rref_attr_name\x18\x15 \x01(\t\x12\x12\n\ndoc_string\x18\r \x01(\t\x12\x30\n\x04type\x18\x14 \x01(\x0e\x32\".onnx.AttributeProto.AttributeType\x12\t\n\x01\x66\x18\x02 \x01(\x02\x12\t\n\x01i\x18\x03 \x01(\x03\x12\t\n\x01s\x18\x04 \x01(\x0c\x12\x1c\n\x01t\x18\x05 \x01(\x0b\x32\x11.onnx.TensorProto\x12\x1b\n\x01g\x18\x06 \x01(\x0b\x32\x10.onnx.GraphProto\x12\x0e\n\x06\x66loats\x18\x07 \x03(\x02\x12\x0c\n\x04ints\x18\x08 \x03(\x03\x12\x0f\n\x07strings\x18\t \x03(\x0c\x12\"\n\x07tensors\x18\n \x03(\x0b\x32\x11.onnx.TensorProto\x12 \n\x06graphs\x18\x0b \x03(\x0b\x32\x10.onnx.GraphProto\"\x91\x01\n\rAttributeType\x12\r\n\tUNDEFINED\x10\x00\x12\t\n\x05\x46LOAT\x10\x01\x12\x07\n\x03INT\x10\x02\x12\n\n\x06STRING\x10\x03\x12\n\n\x06TENSOR\x10\x04\x12\t\n\x05GRAPH\x10\x05\x12\n\n\x06\x46LOATS\x10\x06\x12\x08\n\x04INTS\x10\x07\x12\x0b\n\x07STRINGS\x10\x08\x12\x0b\n\x07TENSORS\x10\t\x12\n\n\x06GRAPHS\x10\n\"Q\n\x0eValueInfoProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1d\n\x04type\x18\x02 \x01(\x0b\x32\x0f.onnx.TypeProto\x12\x12\n\ndoc_string\x18\x03 \x01(\t\"\x96\x01\n\tNodeProto\x12\r\n\x05input\x18\x01 \x03(\t\x12\x0e\n\x06output\x18\x02 \x03(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07op_type\x18\x04 \x01(\t\x12\x0e\n\x06\x64omain\x18\x07 \x01(\t\x12\'\n\tattribute\x18\x05 \x03(\x0b\x32\x14.onnx.AttributeProto\x12\x12\n\ndoc_string\x18\x06 \x01(\t\"\xbb\x02\n\nModelProto\x12\x12\n\nir_version\x18\x01 \x01(\x03\x12.\n\x0copset_import\x18\x08 \x03(\x0b\x32\x18.onnx.OperatorSetIdProto\x12\x15\n\rproducer_name\x18\x02 \x01(\t\x12\x18\n\x10producer_version\x18\x03 \x01(\t\x12\x0e\n\x06\x64omain\x18\x04 \x01(\t\x12\x15\n\rmodel_version\x18\x05 \x01(\x03\x12\x12\n\ndoc_string\x18\x06 \x01(\t\x12\x1f\n\x05graph\x18\x07 \x01(\x0b\x32\x10.onnx.GraphProto\x12&\n\tfunctions\x18\x64 \x03(\x0b\x32\x13.onnx.FunctionProto\x12\x34\n\x0emetadata_props\x18\x0e \x03(\x0b\x32\x1c.onnx.StringStringEntryProto\"4\n\x16StringStringEntryProto\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"k\n\x10TensorAnnotation\x12\x13\n\x0btensor_name\x18\x01 \x01(\t\x12\x42\n\x1cquant_parameter_tensor_names\x18\x02 \x03(\x0b\x32\x1c.onnx.StringStringEntryProto\"\xa3\x02\n\nGraphProto\x12\x1d\n\x04node\x18\x01 \x03(\x0b\x32\x0f.onnx.NodeProto\x12\x0c\n\x04name\x18\x02 \x01(\t\x12&\n\x0binitializer\x18\x05 \x03(\x0b\x32\x11.onnx.TensorProto\x12\x12\n\ndoc_string\x18\n \x01(\t\x12#\n\x05input\x18\x0b \x03(\x0b\x32\x14.onnx.ValueInfoProto\x12$\n\x06output\x18\x0c \x03(\x0b\x32\x14.onnx.ValueInfoProto\x12(\n\nvalue_info\x18\r \x03(\x0b\x32\x14.onnx.ValueInfoProto\x12\x37\n\x17quantization_annotation\x18\x0e \x03(\x0b\x32\x16.onnx.TensorAnnotation\"\xb8\x05\n\x0bTensorProto\x12\x0c\n\x04\x64ims\x18\x01 \x03(\x03\x12\x11\n\tdata_type\x18\x02 \x01(\x05\x12*\n\x07segment\x18\x03 \x01(\x0b\x32\x19.onnx.TensorProto.Segment\x12\x16\n\nfloat_data\x18\x04 \x03(\x02\x42\x02\x10\x01\x12\x16\n\nint32_data\x18\x05 \x03(\x05\x42\x02\x10\x01\x12\x13\n\x0bstring_data\x18\x06 \x03(\x0c\x12\x16\n\nint64_data\x18\x07 \x03(\x03\x42\x02\x10\x01\x12\x0c\n\x04name\x18\x08 \x01(\t\x12\x12\n\ndoc_string\x18\x0c \x01(\t\x12\x10\n\x08raw_data\x18\t \x01(\x0c\x12\x33\n\rexternal_data\x18\r \x03(\x0b\x32\x1c.onnx.StringStringEntryProto\x12\x35\n\rdata_location\x18\x0e \x01(\x0e\x32\x1e.onnx.TensorProto.DataLocation\x12\x17\n\x0b\x64ouble_data\x18\n \x03(\x01\x42\x02\x10\x01\x12\x17\n\x0buint64_data\x18\x0b \x03(\x04\x42\x02\x10\x01\x1a%\n\x07Segment\x12\r\n\x05\x62\x65gin\x18\x01 \x01(\x03\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x03\"\xda\x01\n\x08\x44\x61taType\x12\r\n\tUNDEFINED\x10\x00\x12\t\n\x05\x46LOAT\x10\x01\x12\t\n\x05UINT8\x10\x02\x12\x08\n\x04INT8\x10\x03\x12\n\n\x06UINT16\x10\x04\x12\t\n\x05INT16\x10\x05\x12\t\n\x05INT32\x10\x06\x12\t\n\x05INT64\x10\x07\x12\n\n\x06STRING\x10\x08\x12\x08\n\x04\x42OOL\x10\t\x12\x0b\n\x07\x46LOAT16\x10\n\x12\n\n\x06\x44OUBLE\x10\x0b\x12\n\n\x06UINT32\x10\x0c\x12\n\n\x06UINT64\x10\r\x12\r\n\tCOMPLEX64\x10\x0e\x12\x0e\n\nCOMPLEX128\x10\x0f\x12\x0c\n\x08\x42\x46LOAT16\x10\x10\")\n\x0c\x44\x61taLocation\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08\x45XTERNAL\x10\x01\"\x95\x01\n\x10TensorShapeProto\x12-\n\x03\x64im\x18\x01 \x03(\x0b\x32 .onnx.TensorShapeProto.Dimension\x1aR\n\tDimension\x12\x13\n\tdim_value\x18\x01 \x01(\x03H\x00\x12\x13\n\tdim_param\x18\x02 \x01(\tH\x00\x12\x12\n\ndenotation\x18\x03 \x01(\tB\x07\n\x05value\"\xc2\x04\n\tTypeProto\x12-\n\x0btensor_type\x18\x01 \x01(\x0b\x32\x16.onnx.TypeProto.TensorH\x00\x12\x31\n\rsequence_type\x18\x04 \x01(\x0b\x32\x18.onnx.TypeProto.SequenceH\x00\x12\'\n\x08map_type\x18\x05 \x01(\x0b\x32\x13.onnx.TypeProto.MapH\x00\x12-\n\x0bopaque_type\x18\x07 \x01(\x0b\x32\x16.onnx.TypeProto.OpaqueH\x00\x12:\n\x12sparse_tensor_type\x18\x08 \x01(\x0b\x32\x1c.onnx.TypeProto.SparseTensorH\x00\x12\x12\n\ndenotation\x18\x06 \x01(\t\x1a\x42\n\x06Tensor\x12\x11\n\telem_type\x18\x01 \x01(\x05\x12%\n\x05shape\x18\x02 \x01(\x0b\x32\x16.onnx.TensorShapeProto\x1a.\n\x08Sequence\x12\"\n\telem_type\x18\x01 \x01(\x0b\x32\x0f.onnx.TypeProto\x1a<\n\x03Map\x12\x10\n\x08key_type\x18\x01 \x01(\x05\x12#\n\nvalue_type\x18\x02 \x01(\x0b\x32\x0f.onnx.TypeProto\x1a&\n\x06Opaque\x12\x0e\n\x06\x64omain\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x1aH\n\x0cSparseTensor\x12\x11\n\telem_type\x18\x01 \x01(\x05\x12%\n\x05shape\x18\x02 \x01(\x0b\x32\x16.onnx.TensorShapeProtoB\x07\n\x05value\"5\n\x12OperatorSetIdProto\x12\x0e\n\x06\x64omain\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x03\"\xbf\x01\n\rFunctionProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rsince_version\x18\x02 \x01(\x03\x12$\n\x06status\x18\x03 \x01(\x0e\x32\x14.onnx.OperatorStatus\x12\r\n\x05input\x18\x04 \x03(\t\x12\x0e\n\x06output\x18\x05 \x03(\t\x12\x11\n\tattribute\x18\x06 \x03(\t\x12\x1d\n\x04node\x18\x07 \x03(\x0b\x32\x0f.onnx.NodeProto\x12\x12\n\ndoc_string\x18\x08 \x01(\t*\x97\x01\n\x07Version\x12\x12\n\x0e_START_VERSION\x10\x00\x12\x19\n\x15IR_VERSION_2017_10_10\x10\x01\x12\x19\n\x15IR_VERSION_2017_10_30\x10\x02\x12\x18\n\x14IR_VERSION_2017_11_3\x10\x03\x12\x18\n\x14IR_VERSION_2019_1_22\x10\x04\x12\x0e\n\nIR_VERSION\x10\x05*.\n\x0eOperatorStatus\x12\x10\n\x0c\x45XPERIMENTAL\x10\x00\x12\n\n\x06STABLE\x10\x01\x62\x06proto3')
  File "/home/user/.local/lib/python3.7/site-packages/google/protobuf/descriptor.py", line 965, in __new__
    return _message.default_pool.AddSerializedFile(serialized_pb)
TypeError: Couldn't build proto file into descriptor pool!
Invalid proto descriptor for file "onnx-ml.proto":
  onnx.AttributeProto.name: "onnx.AttributeProto.name" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.ref_attr_name: "onnx.AttributeProto.ref_attr_name" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.doc_string: "onnx.AttributeProto.doc_string" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.type: "onnx.AttributeProto.type" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.f: "onnx.AttributeProto.f" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.i: "onnx.AttributeProto.i" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.s: "onnx.AttributeProto.s" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.t: "onnx.AttributeProto.t" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.g: "onnx.AttributeProto.g" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.floats: "onnx.AttributeProto.floats" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.ints: "onnx.AttributeProto.ints" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.strings: "onnx.AttributeProto.strings" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.tensors: "onnx.AttributeProto.tensors" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.graphs: "onnx.AttributeProto.graphs" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.UNDEFINED: "onnx.AttributeProto.UNDEFINED" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.UNDEFINED: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "UNDEFINED" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.FLOAT: "onnx.AttributeProto.FLOAT" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.FLOAT: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "FLOAT" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.INT: "onnx.AttributeProto.INT" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.INT: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "INT" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.STRING: "onnx.AttributeProto.STRING" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.STRING: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "STRING" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.TENSOR: "onnx.AttributeProto.TENSOR" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.TENSOR: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "TENSOR" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.GRAPH: "onnx.AttributeProto.GRAPH" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.GRAPH: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "GRAPH" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.FLOATS: "onnx.AttributeProto.FLOATS" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.FLOATS: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "FLOATS" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.INTS: "onnx.AttributeProto.INTS" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.INTS: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "INTS" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.STRINGS: "onnx.AttributeProto.STRINGS" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.STRINGS: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "STRINGS" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.TENSORS: "onnx.AttributeProto.TENSORS" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.TENSORS: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "TENSORS" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.GRAPHS: "onnx.AttributeProto.GRAPHS" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto.GRAPHS: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "GRAPHS" must be unique within "onnx.AttributeProto", not just within "AttributeType".
  onnx.AttributeProto.AttributeType: "onnx.AttributeProto.AttributeType" is already defined in file "onnx/onnx-ml.proto".
  onnx.AttributeProto: "onnx.AttributeProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.ValueInfoProto.name: "onnx.ValueInfoProto.name" is already defined in file "onnx/onnx-ml.proto".
  onnx.ValueInfoProto.type: "onnx.ValueInfoProto.type" is already defined in file "onnx/onnx-ml.proto".
  onnx.ValueInfoProto.doc_string: "onnx.ValueInfoProto.doc_string" is already defined in file "onnx/onnx-ml.proto".
  onnx.ValueInfoProto: "onnx.ValueInfoProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.NodeProto.input: "onnx.NodeProto.input" is already defined in file "onnx/onnx-ml.proto".
  onnx.NodeProto.output: "onnx.NodeProto.output" is already defined in file "onnx/onnx-ml.proto".
  onnx.NodeProto.name: "onnx.NodeProto.name" is already defined in file "onnx/onnx-ml.proto".
  onnx.NodeProto.op_type: "onnx.NodeProto.op_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.NodeProto.domain: "onnx.NodeProto.domain" is already defined in file "onnx/onnx-ml.proto".
  onnx.NodeProto.attribute: "onnx.NodeProto.attribute" is already defined in file "onnx/onnx-ml.proto".
  onnx.NodeProto.doc_string: "onnx.NodeProto.doc_string" is already defined in file "onnx/onnx-ml.proto".
  onnx.NodeProto: "onnx.NodeProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.ir_version: "onnx.ModelProto.ir_version" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.opset_import: "onnx.ModelProto.opset_import" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.producer_name: "onnx.ModelProto.producer_name" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.producer_version: "onnx.ModelProto.producer_version" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.domain: "onnx.ModelProto.domain" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.model_version: "onnx.ModelProto.model_version" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.doc_string: "onnx.ModelProto.doc_string" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.graph: "onnx.ModelProto.graph" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto.metadata_props: "onnx.ModelProto.metadata_props" is already defined in file "onnx/onnx-ml.proto".
  onnx.ModelProto: "onnx.ModelProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.StringStringEntryProto.key: "onnx.StringStringEntryProto.key" is already defined in file "onnx/onnx-ml.proto".
  onnx.StringStringEntryProto.value: "onnx.StringStringEntryProto.value" is already defined in file "onnx/onnx-ml.proto".
  onnx.StringStringEntryProto: "onnx.StringStringEntryProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorAnnotation.tensor_name: "onnx.TensorAnnotation.tensor_name" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorAnnotation.quant_parameter_tensor_names: "onnx.TensorAnnotation.quant_parameter_tensor_names" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorAnnotation: "onnx.TensorAnnotation" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto.node: "onnx.GraphProto.node" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto.name: "onnx.GraphProto.name" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto.initializer: "onnx.GraphProto.initializer" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto.doc_string: "onnx.GraphProto.doc_string" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto.input: "onnx.GraphProto.input" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto.output: "onnx.GraphProto.output" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto.value_info: "onnx.GraphProto.value_info" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto.quantization_annotation: "onnx.GraphProto.quantization_annotation" is already defined in file "onnx/onnx-ml.proto".
  onnx.GraphProto: "onnx.GraphProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.dims: "onnx.TensorProto.dims" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.data_type: "onnx.TensorProto.data_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.segment: "onnx.TensorProto.segment" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.float_data: "onnx.TensorProto.float_data" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.int32_data: "onnx.TensorProto.int32_data" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.string_data: "onnx.TensorProto.string_data" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.int64_data: "onnx.TensorProto.int64_data" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.name: "onnx.TensorProto.name" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.doc_string: "onnx.TensorProto.doc_string" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.raw_data: "onnx.TensorProto.raw_data" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.external_data: "onnx.TensorProto.external_data" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.data_location: "onnx.TensorProto.data_location" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.double_data: "onnx.TensorProto.double_data" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.uint64_data: "onnx.TensorProto.uint64_data" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.Segment.begin: "onnx.TensorProto.Segment.begin" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.Segment.end: "onnx.TensorProto.Segment.end" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.Segment: "onnx.TensorProto.Segment" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.UNDEFINED: "onnx.TensorProto.UNDEFINED" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.UNDEFINED: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "UNDEFINED" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.FLOAT: "onnx.TensorProto.FLOAT" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.FLOAT: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "FLOAT" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.UINT8: "onnx.TensorProto.UINT8" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.UINT8: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "UINT8" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.INT8: "onnx.TensorProto.INT8" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.INT8: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "INT8" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.UINT16: "onnx.TensorProto.UINT16" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.UINT16: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "UINT16" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.INT16: "onnx.TensorProto.INT16" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.INT16: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "INT16" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.INT32: "onnx.TensorProto.INT32" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.INT32: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "INT32" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.INT64: "onnx.TensorProto.INT64" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.INT64: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "INT64" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.STRING: "onnx.TensorProto.STRING" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.STRING: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "STRING" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.BOOL: "onnx.TensorProto.BOOL" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.BOOL: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "BOOL" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.FLOAT16: "onnx.TensorProto.FLOAT16" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.FLOAT16: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "FLOAT16" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.DOUBLE: "onnx.TensorProto.DOUBLE" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.DOUBLE: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "DOUBLE" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.UINT32: "onnx.TensorProto.UINT32" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.UINT32: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "UINT32" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.UINT64: "onnx.TensorProto.UINT64" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.UINT64: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "UINT64" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.COMPLEX64: "onnx.TensorProto.COMPLEX64" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.COMPLEX64: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "COMPLEX64" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.COMPLEX128: "onnx.TensorProto.COMPLEX128" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.COMPLEX128: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "COMPLEX128" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.BFLOAT16: "onnx.TensorProto.BFLOAT16" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.BFLOAT16: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "BFLOAT16" must be unique within "onnx.TensorProto", not just within "DataType".
  onnx.TensorProto.DataType: "onnx.TensorProto.DataType" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.DEFAULT: "onnx.TensorProto.DEFAULT" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.DEFAULT: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "DEFAULT" must be unique within "onnx.TensorProto", not just within "DataLocation".
  onnx.TensorProto.EXTERNAL: "onnx.TensorProto.EXTERNAL" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto.EXTERNAL: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "EXTERNAL" must be unique within "onnx.TensorProto", not just within "DataLocation".
  onnx.TensorProto.DataLocation: "onnx.TensorProto.DataLocation" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorProto: "onnx.TensorProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorShapeProto.dim: "onnx.TensorShapeProto.dim" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorShapeProto.Dimension.value: "onnx.TensorShapeProto.Dimension.value" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorShapeProto.Dimension.dim_value: "onnx.TensorShapeProto.Dimension.dim_value" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorShapeProto.Dimension.dim_param: "onnx.TensorShapeProto.Dimension.dim_param" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorShapeProto.Dimension.denotation: "onnx.TensorShapeProto.Dimension.denotation" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorShapeProto.Dimension: "onnx.TensorShapeProto.Dimension" is already defined in file "onnx/onnx-ml.proto".
  onnx.TensorShapeProto: "onnx.TensorShapeProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.value: "onnx.TypeProto.value" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.tensor_type: "onnx.TypeProto.tensor_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.sequence_type: "onnx.TypeProto.sequence_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.map_type: "onnx.TypeProto.map_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.opaque_type: "onnx.TypeProto.opaque_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.sparse_tensor_type: "onnx.TypeProto.sparse_tensor_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.denotation: "onnx.TypeProto.denotation" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Tensor.elem_type: "onnx.TypeProto.Tensor.elem_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Tensor.shape: "onnx.TypeProto.Tensor.shape" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Tensor: "onnx.TypeProto.Tensor" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Sequence.elem_type: "onnx.TypeProto.Sequence.elem_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Sequence: "onnx.TypeProto.Sequence" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Map.key_type: "onnx.TypeProto.Map.key_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Map.value_type: "onnx.TypeProto.Map.value_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Map: "onnx.TypeProto.Map" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Opaque.domain: "onnx.TypeProto.Opaque.domain" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Opaque.name: "onnx.TypeProto.Opaque.name" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.Opaque: "onnx.TypeProto.Opaque" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.SparseTensor.elem_type: "onnx.TypeProto.SparseTensor.elem_type" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.SparseTensor.shape: "onnx.TypeProto.SparseTensor.shape" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto.SparseTensor: "onnx.TypeProto.SparseTensor" is already defined in file "onnx/onnx-ml.proto".
  onnx.TypeProto: "onnx.TypeProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.OperatorSetIdProto.domain: "onnx.OperatorSetIdProto.domain" is already defined in file "onnx/onnx-ml.proto".
  onnx.OperatorSetIdProto.version: "onnx.OperatorSetIdProto.version" is already defined in file "onnx/onnx-ml.proto".
  onnx.OperatorSetIdProto: "onnx.OperatorSetIdProto" is already defined in file "onnx/onnx-ml.proto".
  onnx.FunctionProto.name: "onnx.FunctionProto.name" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.FunctionProto.since_version: "onnx.FunctionProto.since_version" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.FunctionProto.status: "onnx.FunctionProto.status" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.FunctionProto.input: "onnx.FunctionProto.input" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.FunctionProto.output: "onnx.FunctionProto.output" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.FunctionProto.attribute: "onnx.FunctionProto.attribute" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.FunctionProto.node: "onnx.FunctionProto.node" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.FunctionProto.doc_string: "onnx.FunctionProto.doc_string" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.FunctionProto: "onnx.FunctionProto" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx._START_VERSION: "onnx._START_VERSION" is already defined in file "onnx/onnx-ml.proto".
  onnx._START_VERSION: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "_START_VERSION" must be unique within "onnx", not just within "Version".
  onnx.IR_VERSION_2017_10_10: "onnx.IR_VERSION_2017_10_10" is already defined in file "onnx/onnx-ml.proto".
  onnx.IR_VERSION_2017_10_10: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "IR_VERSION_2017_10_10" must be unique within "onnx", not just within "Version".
  onnx.IR_VERSION_2017_10_30: "onnx.IR_VERSION_2017_10_30" is already defined in file "onnx/onnx-ml.proto".
  onnx.IR_VERSION_2017_10_30: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "IR_VERSION_2017_10_30" must be unique within "onnx", not just within "Version".
  onnx.IR_VERSION_2017_11_3: "onnx.IR_VERSION_2017_11_3" is already defined in file "onnx/onnx-ml.proto".
  onnx.IR_VERSION_2017_11_3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "IR_VERSION_2017_11_3" must be unique within "onnx", not just within "Version".
  onnx.IR_VERSION_2019_1_22: "onnx.IR_VERSION_2019_1_22" is already defined in file "onnx/onnx-ml.proto".
  onnx.IR_VERSION_2019_1_22: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "IR_VERSION_2019_1_22" must be unique within "onnx", not just within "Version".
  onnx.IR_VERSION: "onnx.IR_VERSION" is already defined in file "onnx/onnx-ml.proto".
  onnx.IR_VERSION: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "IR_VERSION" must be unique within "onnx", not just within "Version".
  onnx.Version: "onnx.Version" is already defined in file "onnx/onnx-ml.proto".
  onnx.EXPERIMENTAL: "onnx.EXPERIMENTAL" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.EXPERIMENTAL: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "EXPERIMENTAL" must be unique within "onnx", not just within "OperatorStatus".
  onnx.STABLE: "onnx.STABLE" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.STABLE: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.  Therefore, "STABLE" must be unique within "onnx", not just within "OperatorStatus".
  onnx.OperatorStatus: "onnx.OperatorStatus" is already defined in file "onnx/onnx-operators-ml.proto".
  onnx.AttributeProto.type: "onnx.AttributeProto.AttributeType" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.AttributeProto.t: "onnx.TensorProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.AttributeProto.g: "onnx.GraphProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.AttributeProto.tensors: "onnx.TensorProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.AttributeProto.graphs: "onnx.GraphProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.ValueInfoProto.type: "onnx.TypeProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.NodeProto.attribute: "onnx.AttributeProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.ModelProto.opset_import: "onnx.OperatorSetIdProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.ModelProto.graph: "onnx.GraphProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.ModelProto.functions: "onnx.FunctionProto" seems to be defined in "onnx/onnx-operators-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.ModelProto.metadata_props: "onnx.StringStringEntryProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TensorAnnotation.quant_parameter_tensor_names: "onnx.StringStringEntryProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.GraphProto.node: "onnx.NodeProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.GraphProto.initializer: "onnx.TensorProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.GraphProto.input: "onnx.ValueInfoProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.GraphProto.output: "onnx.ValueInfoProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.GraphProto.value_info: "onnx.ValueInfoProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.GraphProto.quantization_annotation: "onnx.TensorAnnotation" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TensorProto.segment: "onnx.TensorProto.Segment" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TensorProto.external_data: "onnx.StringStringEntryProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TensorProto.data_location: "onnx.TensorProto.DataLocation" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TensorShapeProto.dim: "onnx.TensorShapeProto.Dimension" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.Tensor.shape: "onnx.TensorShapeProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.Sequence.elem_type: "onnx.TypeProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.Map.value_type: "onnx.TypeProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.SparseTensor.shape: "onnx.TensorShapeProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.tensor_type: "onnx.TypeProto.Tensor" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.sequence_type: "onnx.TypeProto.Sequence" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.map_type: "onnx.TypeProto.Map" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.opaque_type: "onnx.TypeProto.Opaque" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.TypeProto.sparse_tensor_type: "onnx.TypeProto.SparseTensor" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.FunctionProto.status: "onnx.OperatorStatus" seems to be defined in "onnx/onnx-operators-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.
  onnx.FunctionProto.node: "onnx.NodeProto" seems to be defined in "onnx/onnx-ml.proto", which is not imported by "onnx-ml.proto".  To use it here, please add the necessary import.

Any help with getting this to work would be appreciated.

ad-l commented 3 years ago

Hi, this is a known issue for now that you can work around by downgrading your ONNX package down to 1.7.0 python3 -m pip install onnx==1.7.0