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

Segmentation Fault when exporting to onnx a quantized Pytorch model

我正在尝试将模型导出为 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。

好吧,事实证明 ONNX 不支持量化模型(但在 运行 时不会以任何方式警告您,它只是抛出一个段错误)。好像还没有提上日程,所以解决方案可以是使用TensorRT。