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:基于 APP_tidl

Guru**** 2427060 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1537984/tda4vm-app_tidl-based

器件型号:TDA4VM


工具/软件:

TDA4 能够支持 TIDL 用例应用、  
1.我们是否可以控制更改/调度 在“C7x"上“上运行 用于 MMA 处理的任务
2.如果是,请指出 SDK 下的源代码文件和相关文档(如果有)  

3.当我 为 SDK 中包含的 YUV 文件运行 app_tidl_od 时、 我会观察到检测时序在 100ms 至 500ms 或更长时间的范围内。  根据 TI、假设使用 SDK 中提供的 tidl_od 模型在 FCW(正向碰撞警告)下使用、检测车辆所需的平均时间是多少。  

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

    尊敬的 Komal:

    1. 最好让 TIDL 处理 C7x/MMA 调度。  可以更改此值、但我们不建议也不支持。

    2.我们不建议这样做,所以文档非常有限,我们只以二进制形式发布 MMA(无源代码)

    3.这一切取决于设备上运行的模型、设备和其他进程。  Model Zoo 中有一组已发布的基准测试可供参考。

    https://github.com/TexasInstruments/edgeai-tensorlab/tree/main/edgeai-modelzoo

    此致、

    Chris

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

    感谢您对所有这些问题的答复。
    My Vision 模型基于 MTCNN、包含  针对特定用例一个接一个地连接的多个阶段(3 个训练模型)。  因此、在这种情况下、如果 我无法控制将它们连接到 DSP 端、我认为将有开销返回 A72 再返回 DSP。 还可以调用存储器副本吗?  在这种情况下、我能否征求您的建议以最佳方式处理?

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

    尊敬的 Komal:

    我无法具体评论您的模型是如何构建的。  但是、在 A 核心上运行某些层 的做法是正确的、这会导致速度变慢、上下文切换确实会产生一定的成本。  您可以在配置中使用“拒绝列表“将上下文切换的数量降至最低。  只需 在此列表的 A 核心上设置一个图层块、而不是单独的不同图层。  存储器部分不会像转换共享公共存储器那样成为大问题、因此不同的内核只是获取一个指向存储器的指针、从而更大限度减少存储器副本。

    这里的关键是策略性地使用拒绝列表来最大程度地减少模型和上下文切换的碎片。

    此致、

    Chris

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

    感谢您的答复。  
    需要更多的澄清。
    1.有多少 内存 可用于  在 C7x<->MMA 上运行 Vision 模型?
    2.> 这里的关键是策略性地使用拒绝列表来最大程度地减少模型和上下文切换的碎片。
    您能否详细说明 这一点或指出要了解的任何文档/代码?

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

    负责的工程师目前不在办公室。 请预计回复将延迟到下周。

    感谢您的耐心。

    此致、
    Christina

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

    感谢您的更新。
    由于此问题待处理、如果您能确保在工程师回来后确定响应的优先级、我将不胜感激。
    期待尽早达成一项决议。

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

    尊敬的 Komal:

    可用存储器取决于器件、每个器件型号的存储器会有所不同。  请查看应用中器件的 TRM、以获取可用存储器。  对于 deny_list、这里是 OSRT 指令。   您可以拒绝一类图层、比如 MaxPool、所有的 MaxPool 图层都将在 ARM 上运行。  也可以特定于特定层、例如/model/backbone/some_other_path_element/MaxPool_0、只有 MaxPool 层将在 ARM 内核上运行。

    以下选项可强制将特定层卸载到 TIDL DSP/ARM。 这些操作既可用于调试目的、也可在需要时通过创建理想仪表组来提高性能

    Name 说明 支持的值/范围 选项类型 其他详细信息
    deny_list:layer_type 此选项强制禁止使用层类型将特定运算符卸载到 TIDL DSP 逗号分隔字符串 模型编译 此选项当前不适用于 TVM、请参阅 deny_list 选项。
    deny_list:layer_name 此选项强制禁止使用层名称将特定运算符卸载到 TIDL DSP 逗号分隔字符串 模型编译 此选项当前不适用于 TVM、请参阅 deny_list 选项
    deny_list 此选项提供的功能与 deny_list:layer_type 相同 逗号分隔字符串 模型编译 为了向后兼容性而进行维护、不建议用于 Tflite/ONNX 运行时
    allow_list:layer_name 此选项强制支持使用层名称将特定运算符卸载到 TIDL DSP 逗号分隔字符串 模型编译 只有指定的图层/图层被加速、其他图层被委派给 ARM。 Tflite/ONNX 运行时处于实验阶段、目前不适用于 TVM

    注意:不能同时启用 allow_list 和 deny_list 选项

    使用示例:
    指定 layer_type 作为选项的一部分:

    • Tflite runtime :指定 tflite builtin ops 中指定的注册码 — 请参阅 Tflite builtin ops  ,例如'deny_list:layer_type':'1,2'以拒绝将'AveragePool2d'和'Conscenation'运算符卸载到 TIDL。
    • ONNX 运行时:指定 ONNX 运算符名称,例如“MaxPol"以“以拒绝将 Max 池运算符卸载到 TIDL
    • TVM 运行时:指定 TVM 中继运算符名称,例如“nn.conv2d"以“以拒绝将卷积运算符卸载到 TIDL

    指定 layer_name 作为选项的一部分:

    • 指定在 Netron 中为图层所观察到的图层名称
    • 对于 ONNX 模型、图层名称在某些情况下可能不会作为图层的一部分出现;在这种情况下、与特定图层的输出 (0) 相对应的输出名称可指定为“deny_list:layer_name“/"allow_list:“:layer_name“选项的一部分

    此致、

    Chris