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.

[参考译文] J784S4XEVM:帮助了解 TIDL 运行时延迟和 GMAC

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1635184/j784s4xevm-help-understanding-tidl-runtime-latency-and-gmacs

器件型号: J784S4XEVM

您好、

我正在分析使用 TIDL 编译的几个 ONNX 模型、并对延迟、编译器和一些运行时行为有一些问题。 我将附加分层性能分析 Excel 文件以供参考。

1 - YOLOX 与 AODNet:延迟与 GMAC 不成比例

我比较了 YOLOX 和 AODNet:

YOLOX:~13.31GMAC、122 层、总层延迟~18.6ms
AODNet:~0.58 GMAC、17 层、总层延迟~10.8ms

YOLOX 的 GMAC×高×μ s、但延迟仅高 1.7 μ s。 AODNet 是一个全卷积网络,它只使用 5 个卷积层加上凹凸,输入分辨率为 640×512,没有池化层。

为什么 AODNet 由于其 GMAC 更低且层更少而不显著加快?

AODNet 是否受到内存带宽的限制、或者是否有诸如 DMA、平铺效率低下等开销在这种拓扑中占主导地位?

2- Concat/EltWise 延迟高于预期

在 ESTNORNNet 中、ConcatLayer 和 EltWiseLayer 与 Conv 相比表现出非常低的 GMAC、但它们测得的延迟很高、尤其是在第 26-27–28 层附近。

在 TIDL 上、Concat/EltWise 可能比 Conv 慢的常见原因是什么?

如果存在导致这些操作在较慢路径上运行的已知模式、我应该在编译日志中查找什么?

3:转置卷积与标准卷积性能

如果内核大小、跨度等等相等、TIDL 是否执行与 Conv 具有类似性能的 ConvTranspose、或者由于实施差异或与硬件的映射不同、ConvTranspose 通常会变慢?

BatchNorm 层在 TIDL 编译后出现

我的原始网络不包含 BatchNorm 图层,但编译后我看到插入了 BN 类图层。 TIDL 为什么添加这些滤波器?

5-不同的培训框架

您建议使用 edgeai-tensorlab (https://github.com/TexasInstruments/edgeai-tensorlab)进行培训/导出、还是可以使用我自己的培训框架和 ONNX 导出器?

如果使用我自己的管道:

estnornn_cycle_report.xlsxyolox_model_report.xlsxaodnet_model_report.xlsxaodnet_cycle_report.xlsxyolox_cycle_report.xlsxestnornn_model_report.xlsx 哪些导出器设置或 ONNX 约束对于实现最佳 TIDL 性能(OPSET,支持的操作,避免动态形状,凹痕模式等)最重要?
是否有任何关于图形模式的指导来帮助 TIDL 优化和避免 CPU 回退?

感谢您的支持。
此致

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

    你好、Dogukan、  


    1、 虽然 YOLOX 是一款具有较高 GMAC 的型号,但根据您使用的 YOLOX 版本,它已经过优化,能够在我们的 DSP 上很好地运行。 AODNet 不是我熟悉的模型,因此我需要查看模型文件来进一步评论这一点。 您提到 AODNet 的输入分辨率为 640X512、也非常大。 您正在测试的 YOLOX 的输入分辨率是否相似? 此外,当编译 AODNet 模型时,它是否在 1 个子图形上完全运行? 我需要查看这两个模型文件才能进行进一步评论。

    MMA(我们的加速器与 C7x DSP 配对)将优化 Conv 层、该层通常比不在 MMA 上运行的 Concat/Eltwise 更快。 Concat for AODNet 根据您的 Excel 数字,占用的层周期最多,但需要看到您的模型工件才能看到 Concat 的输入参数是什么。

    2-3. 我建议仔细研究这些运算符的限制条件、以确保您不会遇到任何可能导致更长推理的边缘情况 -->github.com/.../operators.md

    对于编译和 PC 推理、将调试级别设置为 2 后、您将看到有关在 CPU 上运行时在 DSP 上运行的层的信息。

    如前所述、MMA 优化了 Conv 层、并且能够比其他层(包括 Concat/Eltwise)更快地运行这些层。

    对于 ConvTranspose,与 Conv 相比,它确实有不同的实现方式,您也可以在上面的运算符列表中看到。 ConvTransposal 的一些实现也针对 MMA 进行了优化 (8x8stride2、4x4stride2、2x2stride2)。

    4.将为某些情况添加 BatchNorm、例如、如果您启用了标准化参数、或者为某些数据转换添加了 BatchNorm。 进入批规范的数据类型是什么?

    5.我建议您使用自己的培训框架和 ONNX 导出器。 根据 SDK 的不同、操作集可能会发生变化、但目前正在使用的操作如下:
    ONNX - 1.14.0
    ONNX 运行时 — 1.15.0 (OPSET-19 ON-8 IR)

    避免动态形状、并在编译期间查看是否有显示为不受支持的图层。 您也可以通过上面的链接与运算符进行检查。 导出后、我建议也使用 onnxsim 或 tidl_onnx_model_optimizer 运行优化器
    --> github.com/.../tidl_onnx_model_optimizer)

    如果您可以在编译和推理、模型、配置文件和获得的工件期间共享日志、这将有助于提供更多背景信息供我们进行评论。 此外、您正在运行哪个 SDK 版本?

    此致、

    Christina Kuruvilla