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.

[参考译文] TDA4VM:SIGBUS、使用 python edgeai-tidl-tools 的 SIGSEV with RTOS SDK 8.6

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1208475/tda4vm-sigbus-sigsev-when-using-python-edgeai-tidl-tools-with-rtos-sdk-8-6

器件型号:TDA4VM

您好!

我正在使用 edgeai-tidl-tools 使用 ONNX 文件为 TDA4编译 TIDL 伪影。 自从迁移到 RTOS SDK 8.6 (以及 edgeai 8.6)之后、我在尝试编译时会抛出 SIGBUS 和 SIGSEV。

下面是我的脚本的简短版本:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import onnxruntime as rt
import onnx
# ...
onnx.shape_inference.infer_shapes_path(onnx_model_path, onnx_model_path)
compile_options = {
'tidl_tools_path': os.environ['TIDL_TOOLS_PATH'],
'artifacts_folder': artifacts_folder,
'tensor_bits': 16,
'accuracy_level': 0,
'advanced_options:calibration_frames': 1,
'advanced_options:calibration_iterations': 1,
'advanced_options:quantization_scale_type': 1,
'debug_level': 1,
"platform": "J7"
}
delegate_options = {}
delegate_options.update(compile_options)
so = rt.SessionOptions()
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

具体而言、  当我调用 sess.run (...)时、python 脚本会停止并显示"Bus error (core pose)"。 下面是使用 gdb python3运行脚本时的回溯:

Fullscreen
1
2
3
4
5
6
7
8
Thread 1 "python3" received signal SIGBUS, Bus error.
0x00007ffff7b70ded in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) backtrace
#0 0x00007ffff7b70ded in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fff40f09f06 in vxCreateUserDataObject () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so
#2 0x00007fff40f0214c in TIDLRT_create () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so
#3 0x00007fff4cc65cab in TIDL_subgraphRtCreate () from /devel/edgeai-tidl-tools/tidl_tools/tidl_model_import_onnx.so
#4 0x00007fff4cc43dc6 in TIDL_computeImportFunc () from /devel/edgeai-tidl-tools/tidl_tools/tidl_model_import_onnx.so
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

如果我注释掉 sess.run (...)、则脚本会停止并显示"Segmentation fault (core disposed)"。 下面是它的回溯:

Fullscreen
1
2
3
4
5
6
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fff40f1707c in ownReleaseReferenceInt () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so
(gdb) backtrace
#0 0x00007fff40f1707c in ownReleaseReferenceInt () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so
#1 0x00007fff40f02ba7 in TIDLRT_delete () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so
#2 0x00007fff4cc660bf in TIDL_subgraphRtDelete () from /devel/edgeai-tidl-tools/tidl_tools/tidl_model_import_onnx.so
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我已经测试删除"TIDLCompilationProvider"仅保留"CPUExecutionProvider"、然后我可以编译我的工件并在我的 TDA4上使用它们。 我认为这证明 ONNX 或我的脚本没有问题。

是否发现了该问题? 它看起来像是我身边的恶劣环境、还是类似的东西?
以下是运行 edgeai-tidl-tools/setup.sh 后的我的环境变量:
Fullscreen
1
2
3
4
5
6
7
8
# echo $LD_LIBRARY_PATH
:/devel/edgeai-tidl-tools/tidl_tools:/devel/edgeai-tidl-tools/tidl_tools/osrt_deps
# echo $ARM64_GCC_PATH
/devel/edgeai-tidl-tools/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu
# echo $TIDL_TOOLS_PATH
/devel/edgeai-tidl-tools/tidl_tools
# echo $SOC
am68pa
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
谢谢。
弗雷德
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Fred:

    对拖延答复表示歉意。 您能否确认以下有关正在使用的设置的信息:

    • 使用该模型时、错误是否仅出现在 SDK 的8.6版中、以及使用与先前的 SDK (如8.4版)相同的模型时不会显示任何错误?
    • 模型和构件是否已使用8.6 edgeai-tidl-tools 重新编译、或按原样从之前的 SDK 中复制? 我做了一个快速实验、其中我将模型+构件从8.4 SDK 复制到8.6 SDK 中、导致了错误、因此使用8.4 SDK 编译的模型似乎与8.6不兼容。

    此致、

    Takuma.

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

    Takuma、您好、感谢您的回答。

    输入 onnx 文件是来自 TIDL 外部手电筒工具的量化模型输出。

    也就是说、  将同一个模型与 SDK 8.4搭配使用是可行的、而将其与8.6搭配使用 则会产生异常。

    模型和工件没有从8.4复制到8.6。 我正在尝试生成这些伪影。

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

    你好、Takuma。

    这些错误似乎来自我的 Docker 环境不良。 我再也不知道了。

    但是、如果我设置'debug_level=3'、我会得到一个 SEGFAULT。 您能否在您身边重现问题?

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

    尊敬的 Fred:

    很遗憾、在 DEBUG_LEVEL 设置为3的情况下、我无法重现错误。 我所做的实验是使用 edgeai-tidl-tools 的8.6版本标签设置 Docker 容器、并在编译选项中运行示例"python3 onnxrt_ep.py -c"、并将 debug_level 设置为3。

    为了澄清、在 Docker 容器内的 PC 上运行编译时是否发生了 SEGFAULT、以及您是否能够共享导致错误的日志(还是与初始 POST 中共享的日志相同)?

    此致、

    Takuma.

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

    您好、Takuma、

    我成功地使用您提供的示例脚本和使用 edgeai-tidl-tools 8.6的 Docker 重现了问题。

    您需要  对脚本应用以下补丁:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    diff --git a/examples/osrt_python/ort/onnxrt_ep.py b/examples/osrt_python/ort/onnxrt_ep.py
    index 03eb9f1..9ad065d 100644
    --- a/examples/osrt_python/ort/onnxrt_ep.py
    +++ b/examples/osrt_python/ort/onnxrt_ep.py
    @@ -20,7 +20,8 @@ from model_configs import *
    required_options = {
    "tidl_tools_path":tidl_tools_path,
    -"artifacts_folder":artifacts_folder
    +"artifacts_folder":artifacts_folder,
    +"debug_level":3
    }
    parser = argparse.ArgumentParser()
    @@ -144,8 +145,8 @@ def run_model(model, mIdx):
    test_images = seg_test_images
    delegate_options = {}
    - delegate_options.update(required_options)
    delegate_options.update(optional_options)
    + delegate_options.update(required_options)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

     需要调用 Delegate_options.update (可选_options) 那样  Delegate_options.update (required_options)。 否则、DEBUG_LEVEL 会写回0。

    日志中没有什么有用的东西、但它们在这里。 我无法放入日志的全部内容,因为它太长了,但运行 deeplabv3lite_mobilenetv2.onnx 似乎失败了。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Running_Model : ss-ort-deeplabv3lite_mobilenetv2
    Running shape inference on model ../../../models/public/deeplabv3lite_mobilenetv2.onnx
    tidl_tools_path = /opt/edgeai-tidl-tools/tidl_tools
    artifacts_folder = ../../../model-artifacts//ss-ort-deeplabv3lite_mobilenetv2/
    tidl_tensor_bits = 8
    debug_level = 3
    num_tidl_subgraphs = 16
    tidl_denylist =
    tidl_denylist_layer_name =
    tidl_denylist_layer_type =
    tidl_allowlist_layer_name =
    model_type =
    tidl_calibration_accuracy_level = 7
    tidl_calibration_options:num_frames_calibration = 2
    tidl_calibration_options:bias_calibration_iterations = 5
    mixed_precision_factor = -1.000000
    model_group_id = 0
    power_of_2_quantization = 2
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    尊敬的 Fred:

    感谢您的耐心。 是的、我能够重现错误。 我们将在我们这边更深入地研究这一点。

    对于原始问题、之前提到您可以解决它、但该后续问题是否会阻碍开发? 我主要要求测量优先级。

    此致、

    Takuma.

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

    非阻塞、感谢验证。

x 出现错误。请重试或与管理员联系。