This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VH-Q1:edgeai-tidl-tools 上的 pytorch 模型从 pytorch 导出到 ONNX

Guru**** 2481465 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1453082/tda4vh-q1-pytorch-model-export-error-from-pytorch-to-onnx-on-edgeai-tidl-tools

器件型号:TDA4VH-Q1

工具与软件:

你(们)好

我尝试在 edgeai-modeloptimization r10.0上测试 QAT。

"我已经使用并参考 edgeai-torchmodelopt.xmodelopt.quantization v2和 QAT 指南、完成了针对经过训练的深度学习模型的 QAT (量化感知培训)。 (https://github.com/TexasInstruments/edgeai-tensorlab/blob/r10.0/edgeai-modeloptimization/torchmodelopt/edgeai_torchmodelopt/xmodelopt/quantization/v2/docs/qat.md)

但是、我在将 QAT 模型转换为 ONNX 的过程中遇到了一个错误。
我搜索了相关材料、但信息不足、无法解决问题。"
当我尝试将火炬模型转换为 ONNX 时、出现了 Attribute 错误。

如何解决?

这是我用于转换的代码。

它是转换的模型。

这是错误日志。
回溯(最近的呼叫最后):
export_torch2onnx 中的文件"/home/bjkim/works/DL/torchmodelopt_test/scripts/export_onnx.py "、第128行
torch.onnx.export (模型、
导出文件/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/onnx/utils.py、第516行
_export(
在_export 中添加了文件"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/onnx/utils.py、第1612行
graph、params_dict、torch_out =_model_to_graph (
在_model_to_graph 中、文件"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/onnx/utils.py、第1133行
模型=_pre_trace_quant_model (模型、参数)
pre_trace_quant_model 中的文件"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/onnx/utils.py、第1088行
return TORCH.JIT.TRACE (model、args)
文件"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py "、行820、处于跟踪状态
返回 trace_module (
trace_module 中、文件"trace_module"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py、第1053行
模块= make_module (mod、_module_class、_compilation_unit)
在 make_module 中、文件"make_module"、第630行、为/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py
返回_module_class (mod、_compilation_unit=_compilation_unit)
文件"1203"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py、第1203行、位于中  初始化
tmp_module._modules[name]= make_module(.
在 make_module 中、文件"make_module"、第630行、为/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py
返回_module_class (mod、_compilation_unit=_compilation_unit)
文件"1203"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py、第1203行、位于中  初始化
tmp_module._modules[name]= make_module(.
在 make_module 中、文件"make_module"、第630行、为/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py
返回_module_class (mod、_compilation_unit=_compilation_unit)
文件"1203"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py、第1203行、位于中  初始化
tmp_module._modules[name]= make_module(.
在 make_module 中、文件"make_module"、第630行、为/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py
返回_module_class (mod、_compilation_unit=_compilation_unit)
文件"1203"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py、第1203行、位于中  初始化
tmp_module._modules[name]= make_module(.
在 make_module 中、文件"make"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_trace.py、第624行
返回 TORCH.JIT._RECURSIVE.CREATE_SCRIPT_MODULE (
create_script_module 中的文件"script_module"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_recursive.py 第558行
返回 create_script_module_impl (nn_module、con要 类型、stubs_fn)
文件"script_module_impl"中的第573行"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_recursive.py "
HOOK_STUBS、PRE_HOOK_STUBS = GET_HOOK_STUBS (nn_MODULE)
get_hook_stubs 中的文件"get"/home/bjkim/anaconda3/envs/pytorch230/lib/python3.10/site-packages/torch/jit/_recursive.py 第909行
如果挂钩。 文件夹  在 HOOK_MAP 中:
AttributeError:'functools.partial'对象没有属性' 文件夹 '。 您是指:" NE '?

这是我的环境

edgeai-tidl-tools 版本是 rel_10.00

Protobuf=3.20.3.
TORCH=2.3.0+cu118
onnx=1.14.0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我们已经将此问题转发给我们的专家进行审核。 请预计节假日会有一些延误。  

    谢谢。此致

    文立

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能否发送模型?  它不需要经过培训;重量无关紧要。   此外、您的转换例程也会很有帮助。

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../custom_5F00_model_5F00_wo_5F00_convert.zip

    您好!  

    我在自定义环境中集成并重复使用了 TI 的 edgeai_torchmodelpot 库。

    下面是转换例程、它非常简单、请参考 QAT 的指南。

    我找到了错误的情况。

    model = model.convert()

    ...

    torch.onnx.export (模型)

    当我阻止 model.convert()时、导出通过。

    附加的 ONNx 模型导出时不使用 MODEL.COVER()

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    做得很好!  您可以继续讨论该主题吗?

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将尝试在 tda4x 电路板上运行转换后的模型。

    如果有任何问题、我将再次报告。

    谢谢