导出到ONP量化的Pytorch模型时出现分段错误

时间:2020-10-09 09:22:18

标签: python segmentation-fault pytorch onnx

我正在尝试将模型导出为onnx格式。该体系结构很复杂,因此在这里我不会共享它,但是基本上,我在.pth文件中具有网络权重。我能够加载它们,创建网络并对其进行推理。 重要的是要注意,我已经修改了代码以能够量化网络。我添加了量化和反量化运算符以及一些torch.nn.quantized.FloatFunctional()运算符。

但是,每当我尝试将其导出时

torch.onnx.export(torch_model,               # model being run
                  input_example,             # model input
                  model_name,                # where to save the model
                  export_params=True,        # store the trained parameter
                  opset_version=11,          # the ONNX version to export
                  # the model to
                  do_constant_folding=True,  # whether to execute constant
                  # folding for optimization
                 )

我得到Segmentation fault (core dumped) 我正在使用Ubuntu 20,安装了以下软件包:

torch==1.6.0
torchvision==0.7.0
onnx==1.7.0
onnxruntime==1.4.0

请注意,根据我在代码中留下的一些prints,导出的推理部分完成了。分割错误随后发生。

有人看到这种情况的任何原因吗?

[编辑]:当我的网络不适合量化操作时,我可以将其导出。因此,问题不是安装中断,而是更多的用于onnx节省的量化运算符。

1 个答案:

答案 0 :(得分:1)

嗯,事实证明ONNX不支持量化模型(但是在运行时无论如何都不会警告您,它只会抛出段错误)。它似乎尚未列入议程,因此可以使用TensorRT作为解决方案。