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.

[参考译文] TDA4AH-Q1:TIDL-RT 调用不能运行多次

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1312245/tda4ah-q1-tidl-rt-invoke-cannot-be-run-several-times

器件型号:TDA4AH-Q1

我的代码是参考以下代码编写的: https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/examples/tidlrt_cpp/classification.cpp

我可以通过多次调用 TIDLRT_invoke 来重复使用 ResNet 模型、我测试了重复使用模型多达1000次、结果成功。

然而,当我用我的自定义模型替换 ResNET 模型后,当重复使用时间达到第20次间隔时,过程就会冻结。

差异如下:

1.将 ResNet 替换为模型

2.将输入数据大小从 ResNet 更改为模型大小

3. 将 输出数据大小从 ResNET 更改为模型的大小

我的模型的最初几轮是正确的,但当达到~20轮时,它只是挂起的。

如何调试该问题?

这是内存问题吗?

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

    您好!  

    您能执行以下操作并共享日志吗?

    在应用程序中为 TIDL 节点设置 traceLogLevel = 2并启用宏 TIVX_TIDL_TARGET_DEBUG  vx_tidl_target.c 文件中对其进行了修改。

    这将为您提供一些来自 C7x 和 TIDL 算法的额外日志。

    您是否能够为两个模型共享相同的信息? (即工作和非工作)

    此致、

    尼基尔

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

    TIVX_TIDL_TARGET_DEBUG   vx_tidl_target.c 文件中对其进行了修改。

    这是否需要重新编译

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

    您好!

    您能否共享完整的日志?

    即、从您触发应用的位置开始?  

    在运行应用程序以从 C7x 获取日志之前、您能否运行./EVM vision_apps_init.sh (如果在 EVM 上运行)

    未设置 TIVX_TIDL_TARGET_DEBUG,但我认为这需要一些编译。

    是的、这需要重新编译 TIOVX (如果您使用的是 SDK 8.6或更低版本)

    此致、

    尼基尔

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

    您好!

    正如我看到的、您正在使用 OSRT 流程。

    您使用的是什么 SDK 标签?

    您能否共享修改过的源代码? 执行您所添加的更改、如上所述。

    请分享所有需要的文件、以及您为构建和运行自定义示例以及 std 模型而执行的一组指令/cmd、以便我可以在结束时重现此问题。

    您可以共享包含所有所需文件的 zip 文件夹、对于说明(分步式)、您可以在此处附上回复、以便在我结束时进行交叉验证。

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

    嘿 Pratik、

    感谢您的帮助! 我的经理告诉我不要与您分享我们的模型、我对此感到遗憾。

    您能根据以前提供的日志提供任何建议吗?

    谢谢!

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

    在这种情况下、您能否分享玩具(虚拟)模型、该模型应该会重现上述问题、以便团队可以尝试重现和检查。

    发布此内容、我将尝试通过开发团队运行模型、并可以帮助更多

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

    感谢您的帮助!

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

    请检查更新后的回复。

    谢谢  

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

    嘿 Pratik、

    感谢您的快速响应。

    我会向我的经理询问这方面的情况。

    我认为提供虚拟模型是合理的,我会看到他们说什么。

    谢谢~

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

    嘿 Pratik、

    很抱歉我迟到了回复。

    我目前的问题是:

    1.我怎么知道一个模型需要多少 MSMC 的尺寸呢? (我提供的日志假设我的 MSMC 大小不足够)

      我能否理解 tidl 模型推理的存储器使用情况、因为:(1)将模型加载到 DDR (2)输入 tensor 输出张量和 MMSC SRAM 上的中间层?

    2.我的上一个主题: e2e.ti.com/.../tda4vh-q1-model-inference-time-difference

    表示 MSMCSIZE_KB 的值不能被改变吗? 但为什么会这样呢?

    我的猜测是 ti-processor-sdk-rtos-j784s4-evm-09_00_00_02/vision_apps/platform/j784s4/rtos/gen_linker_mem_map.py 使用 c7x_1_MSMC_size = 3MB

    我是否可以将此值更改为5 MB 并按照以下步骤操作: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1100081/sk-tda4vm-graph-failed-problem-on-tda4-board/4081432#4081432 将 k3-j721e-edgeai-apps.dtbo 和 k3-j721e-vision-apps.dtbo 放入我的 SD 卡?

    之后、我想 在 转换模型时、我可以在 device_config.cfg 中设置 MSMCSIZE_KB=4896吗?

    3.是否有任何 util 可执行文件来监视和打印所有当前的内存使用情况,如 DDR、MMSC 高速缓存、MMSC SRAM?

    4.您有什么建议可以通过监控某些东西来调试这个"挂起问题"吗?

    谢谢!

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

    1.我怎么知道一个模型需要多少 MSMC 的尺寸呢? (我提供的日志假设我的 MSMC 大小不足够)

      我能否理解 tidl 模型推理的存储器使用情况、因为:(1)将模型加载到 DDR (2)输入 tensor 输出张量和 MMSC SRAM 上的中间层?

    [/报价]

    首先让我先从"Logs 说 MSMC size 不够用"开始、简单的结论是 NC 已经给出了一些估计、并根据器件可使用的 MSMC mem 大小、它远超这个值!  

    其次、是的模型存储在 DDR 中、我们通过利用 L2、L3和 DDR 的内部存储器架构来处理中间层、以实现高效的执行流程、此决策作为 NC 的一部分属于 TI 内部决策、用户无法控制对其进行更改。

    2.我的上一个主题: e2e.ti.com/.../tda4vh-q1-model-inference-time-difference

    表示 MSMCSIZE_KB 的值不能被改变吗? 但为什么会这样呢?

    我的猜测是 ti-processor-sdk-rtos-j784s4-evm-09_00_00_02/vision_apps/platform/j784s4/rtos/gen_linker_mem_map.py 使用 c7x_1_MSMC_size = 3MB

    [/报价]

    观察结果正确、该共享存储器和 TIDL 对该存储器的某些部分具有固定控制、这正是配置文件 MSMC 参数中定义的内容

    我是否可以将此值更改为5 MB 并按照以下步骤操作: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1100081/sk-tda4vm-graph-failed-problem-on-tda4-board/4081432#4081432 将 k3-j721e-edgeai-apps.dtbo 和 k3-j721e-vision-apps.dtbo 放入我的 SD 卡?

    之后、我想 在 转换模型时、我可以在 device_config.cfg 中设置 MSMCSIZE_KB=4896吗?

    [/报价]

    本地 MSMC 限制为3 MB、您所指的线程特定于 DDR。

    有任何 util 可执行文件来监控和打印所有当前的内存使用情况,如 DDR、MMSC 高速缓存、MMSC SRAM ?
    [/quote]
    [/quote][/quote]

    我希望您正在寻找模型的当前内存使用情况(在层级别/操作员执行级别)? 我们不支持这些打印  

    现在、

    来到模型手部问题、您是否可以再次确认您正在使用由 TIDL RT 导入工具生成的模型工件上的 osrt CPP 流程?? 或者你正在使用 osrt tidl 流进行模型编译? 如有问题、请分享模型。

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

    来到模型手部问题、您是否可以再次确认您正在使用由 TIDL RT 导入工具生成的模型工件上的 osrt CPP 流程?? 或者你正在使用 osrt tidl 流进行模型编译? 如有问题、请分享模型。

    模型与挂起的问题是使用 tidlrt 导入工具转换和使用 tidlrt cpp 代码下 osrt repo 推理 github.com/.../classification.cpp (这让我困惑哈哈,有一个叫做 tidlrt 运行时下 osrt tidl 流)

    此设置的输出正确、但无法多次重新运行。

    另一方面、

    之前、我们使用 osrt flow 进行转换、并使用 osrt tidlrt_cpp 进行推理、输出是错误的、但可以多次重新运行。

    之后、我们发现问题是由使用长输出名称引起的。

    如果我们将输出重命名为短名称、则输出是正确的、并且可以多次重新运行。

    我想我的问题现在已经解决了!

    非常感谢您的帮助!

    此致!

    STT