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:运行自动混合精度算法时出现 Segfault

Guru**** 2875980 points

Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1639569/tda4vm-segfault-when-running-automated-mixed-precision-algorithm

器件型号: TDA4VM

大家好!

我将为 TDA4VM 板试用 TIDL 自动混合精密算法。 我使用的是 TI 提供的 EdgeAI TIDL 工具版本 10_01_04_00 cl-ort-resnet18-v1 使用的模型 MIXED_PRECISION_FACTOR 参数设置为 1.3(与 8 位推理相比、延迟可以增加 30%)。 但是、该算法在量化过程中失败、并存在以下误差:

----- 在浮动模式下运行校准以收集张量统计量-----
分段故障(核心转储)
[TIDL Import] 错误:运行校准通过失败、系统命令返回错误:35584 -[tidl_import_core.cpp、678]
[TIDL Import] 错误:运行校准失败 — 函数中失败:tidlRunQuantStatsTool --[tidl_import_core.cpp、1746]
[TIDL Import]【量化】错误: — 函数中失败: TIDL_quantStatsFixedOrFloat --[tidl_import_quantize.cpp、3969]
[TIDL Import] 错误: — 函数中失败: TIDL_executeAutomatedMixedPrecision --[tidl_import_core.cpp、4037]
[TIDL Import] 错误: — 函数中失败: TIDL_import_backend --[tidl_import_core.cpp、4419]
[TIDL Import] 错误: — 函数中失败: TIDL_runtimesPostProcessNet --[tidl_runtims_import_common.cpp、1414]
[TIDL Import]【解析器】错误: — 函数中失败: TIDL_subgraphImport --[tidl_onnxRtImport_EP.cpp、1737]
[TIDL Import]【解析器】错误: — 函数中失败: TIDL_computeInvokeFunc --[tidl_onnxRtImport_EP.cpp、2511]

我将问题追溯到哪里 PC_DSP_TEST_dl_algo.out 调用该工具来收集模型量化的统计信息。 该工具 c7x-mma-tidl/ti_dl/algo/tidl_alg.c 中调用函数 getLayerIdToExecute () 后遇到分段故障 src 此函数返回 超出边界的层 Id、因此随后访问了无效数据。 我怀疑,网络二进制文件,这是由该工具使用,以某种方式被损坏,但我不知道在哪里和为什么。 棘手的一点是、这是一种随机行为、因此有时算法运行时没有出现问题。 我尝试了其他(客户特定)车型、并观察到相同的行为、因此我认为这不是该车型的问题。

我正在使用 EdgeAI TIDL 工具文档中建议的 Docker 环境、因此我可以排除潜在的 I 环境问题。

是否有人观察到了类似的行为、您是否知道如何解决?

注意: 我还尝试在较新的 EdgeAI TIDL 工具版本 (11_01_06_00) 上运行模型质量化、但问题是相同的。

此致、

Mladen

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

    您好、我已经调试并进行了更改。 您可以尝试使用以下工具 10_01_04_00 吗
    e2e.ti.com/.../3162.tidl_5F00_tools.tar.gz

    此致

    Vaibhav

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

    Vaibhav Kumar,

    感谢您解决该问题并再次进行修复。

    我们还设法进行了调试并找到了修复。 最后、我们将 memset sTIDL_Network_t 结构体放在函数中  TIDL_executeAutomatedMixedPrecision () 位于  c7x-mma-tidl/ti_dl/utils/tidlModelImport/tidl_import_core.cpp 中。 我们还修复了释放先前分配的资源的零件(即使这似乎不会影响崩溃)。 我在这里附上 diff 和所有的变化,以供您参考。 您能否确认这也是您的修复程序的更改?

    我还会尝试使用二进制文件并返回结果。

    此致、

    Mladen

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

    是的、与您的一样、我也在同一函数中将初始化的 sTIDL_Network_t 结构归零。 我没有看到任何 diff 连接。

    此致

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

    抱歉、我忘了附上它。 在这里。

    e2e.ti.com/.../tidl_5F00_import_5F00_tools_5F00_patch.txt

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

    我还尝试了您的预构建文件、我确认它 可以解决 问题。

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

    对我来说、更改看起来很好。 如果您有其他问题、您可以创建新 TT。