微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 TorchScript 模型导出到 ONNX 时出错-“运行时错误:模块包含重叠的属性值”

如何解决将 TorchScript 模型导出到 ONNX 时出错-“运行时错误:模块包含重叠的属性值”

我正在尝试将工作中的 streaming TorchScript 模型导出到 ONNX,但遇到了一些问题。

我强调流意味着它有一些控制流,因此它需要导出为 torch.jit.script AFAIK。

...
    with torch.no_grad():
        stream_generator = StreamGenerator(training_config)
        stream_generator.load_state_dict(state_dict_sg)
        stream_generator.to(precision)
        # stream_generator.eval()
        # stream_generator.requires_grad_(False)
        script_model = torch.jit.script(stream_generator)

        # ONNX
        torch.onnx.export(
            model=script_model,# model=stream_generator,args=(data,{'is_final': True}),f="stream_vocoder.onnx",export_params=True,opset_version=13,do_constant_folding=True,input_names=['data','is_final'],output_names=['audio'],dynamic_axes={'data': {0: 'batch_size'},'audio': {0: 'batch_size'}},verbose=True,)

        # Check
        onnx_model = onnx.load("stream_vocoder.onnx")
        onnx.checker.check_model(onnx_model)

问题是我遇到了这个RuntimeError

Traceback (most recent call last):
  File "onnx_conversion.py",line 78,in <module>
    torch.onnx.export(
  File "/home/aalvarez/.virtualenvs/tts-inference-comp-klfduu67-py3.8/lib/python3.8/site-packages/torch/onnx/__init__.py",line 275,in export
    return utils.export(model,args,f,export_params,verbose,training,File "/home/aalvarez/.virtualenvs/tts-inference-comp-klfduu67-py3.8/lib/python3.8/site-packages/torch/onnx/utils.py",line 88,in export
    _export(model,input_names,output_names,line 689,in _export
    _model_to_graph(model,line 458,in _model_to_graph
    graph,params,torch_out,module = _create_jit_graph(model,line 401,in _create_jit_graph
    freezed_m = torch._C._freeze_module(model._c,preserveParameters=True)
RuntimeError: module contains attributes values that overlaps [ 0
[ torch.LongTensor{1} ],0
[ torch.LongTensor{1} ],0
[ torch.LongTensor{1} ]]

我查找错误并找到了这个 https://github.com/pytorch/pytorch/blob/master/torch/csrc/jit/passes/freeze_module.cpp#L281

我不知道从哪里开始寻找才能解决这个问题。有人知道如何解决这个问题或解决它吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。