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:当群组不等于1时、SDK 10.0中去卷积的仿真推理结果为异常、这个问题怎么解决呢?

Guru**** 2455360 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1458427/tda4ah-q1-when-the-group-is-not-equal-to-1-the-simulation-inference-results-of-deconvolution-in-sdk-10-0-are-abnormal-how-can-we-solve-this-problem

器件型号:TDA4AH-Q1

工具与软件:

我现在使用的 SDK 版本是  ti-processor-sdk-rtos-j784s4-evm-10_00_00_05

当组不等于1时、SDK 10.0中解谱的仿真推理结果异常。

我们还验证了在量化过程中的第一次浮点推理期间也存在同样的问题。  

在 我们使用的 SDK 的上一版本8.6 (08_06_00_14)中、组解谱的推理结果是正确的。

我们提供了重现问题的模型和数据、我们希望能够尽快解决。

附件中有两个模型。 可以使用模型 DEPLOY_GroupConv.onnx 重现该问题。

e2e.ti.com/.../ReplicationMaterials.zip

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

    您好!

    我将在下周早些时候介绍一下。

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

    您好!

    我看了你们的两个模型,集团增加了一个额外的维度,并增加了内存需求。  在内部、它创建了一个巨大的数组。  在8.5中可能没有报告、在10.0中报告。  我在9.2、  10.0和10.1上测试了此项、但出现以下错误。  我无法使用8.5进行测试、因为我没有18.04 Linux 计算机、而且我们不再支持8.5。

    NumPy.core._exceptions._ArrayMemoryError:无法分配503。 具有形状(444,828,444,828)和数据类型 float32的数组的 GIB

    此致、

    Chris

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

    您好、

       我使用 tidl_model_import.out 导入 onnx 模型 、而您的导入方法与我的导入方法大不相同。

       附件是我的日志信息。  

    /cfs-file/__key/communityserver-discussions-components-files/791/224_5F00_sdk10_5F00_2025_2D00_01_2D00_14_5F00_14_2D00_13_2D00_39_5F00_1.log

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

    请向我发送有关您如何运行测试的调用字符串。   包括任何调试级别等  我想复制它。

    谢谢!

    Chris

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

    我已经提供了 配置文件 /cfs-file/__key/communityserver-discussions-components-files/791/ReplicationMaterials.zip

    您可以 在此压缩包中找到文件 tidl_import_convTranspose.txt。

    我在    /../test/testvecs/config/import/tidl_import_convTranspose.txt 目录"c7x-mma-tidl/ti_dl/utils/tidlModelImport"中执行命令"./out/tidl_model_import.out ..ModelImport"

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

    在这一问题上是否有新的进展?

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

    请向我发送您用于生成 224_5F00_sdk10_5F00_2025_2D00_01_2D00_14_5F00_14_2D00_13_2D00_39_5F00_1.log的确切命令行。  我将在您的导入中尝试它。  这可能仍然是一个内存问题、只是您的导入没有报告它。

    此致、

    Chris

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

    我使用命令"./out/tidl_model_import.out ../../test/testvecs/config/import/public/onnx/tidl_import_convTranspose.txt

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

    需要多少额外的注意事项?

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

    没关系、这就是它必须在主机上进行导入。  如何在设备上运行它?   我在器件上收到一个与您的错误不同的错误。

    可用的执行提供程序:['TIDLExecutionProvider ','TIDLComplationProvider ','CPUExecutionProvider ']

    运行1个模型-['group_deconv']


    Running_Model : group_decov

    [警告]对于变压器/卷积网络、运行可能失败、用户必须修改限制条件、以便在会话中将 graph_optimization_level 设置为 disable_all。

    libtidl_onnxrt_EP 已加载0x3c14ede0
    最终创建的子图数为:1、-卸载节点- 3、总节点- 3
    应用程序:初始化...!!!
    11027.347985 s:内存:初始...!!!
    11027.348035 s:MEM:初始化 DMA 堆(FD=5)!!
    11027.348166 s:内存:初始化...完成!!!
    11027.348186 s:IPC:初始化...!!!
    11027.380626 s:IPC:初始化...完成!!
    remote_servic: init…!!
    Remote_servic:初始化...完成!!!
    11027.388113s:GTC 频率= 200 MHz
    应用程序:初始化...完成!!!
    11027.388232 s:vx_zone_info:全局启用 vx_zone_error
    11027.388242 s:vx_zone_info:全局启用 vx_zone_warning
    11027.388248 s:vx_zone_info:全局启用 vx_zone_info
    11027.389009 s:vx_zone_info:[tivxPlatformCreateTargetId:134]添加了目标 MPU-0
    11027.389521 s:vx_zone_info:[tivxPlatformCreateTargetId:134]添加了目标 MPU-1
    11027.389665 s:vx_zone_info:[tivxPlatformCreateTargetId:134]添加了目标 MPU-2
    11027.389757 s:vx_zone_info:[tivxPlatformCreateTargetId:134]添加了目标 MPU-3
    11027.389770 s:vx_zone_info:[tivxInitLocal:126] Initialization done!!
    11027.389792 s:vx_zone_info:全局禁用 vx_zone_info
    11027.400090 s:vx_zone_error:[ownContextSendCmd:912]命令确认消息返回失败 cmd_status:-1
    11027.400123 s:vx_zone_error:[ownNodeKernelInit:604]目标内核、node_82的 TIVX_CMD_NODE_CREATE 失败
    11027.400143 s:vx_zone_error:[ownNodeKernelInit:605]请确保已为此内核注册目标回调
    11027.400153 s:vx_zone_error:[ownNodeKernelInit:606]如果目标回调已注册、请确保在此内核的 create 回调中没有出现错误
    11027.400170 s:vx_zone_error:[GraphownNodeKernelInit:690] kernel init for node 0、kernel com.ti.tidl:1:1... failed!!(已失败!)
    11027.400199 s:vx_zone_error:[TIDL 子图 ConvTransspose_48 ]节点内核初始化失败
    11027.400209 s:vx_zone_error:[TIDL 子图 ConvTransspose_48 ]图验证失败
    TIDL_RT_OVX:错误:正在验证 TIDL 图形...失败!!!
    TIDL_RT_OVX:错误:验证 OpenVX 图形失败

    这是在10.01和9.02上进行的。   

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

    尊敬的 Guang:

    我为您提供了一个解决方案、但需要修改模型。  您的模型有128组、而 TIDL 不喜欢这种配置。  解决方案是将128个组分为1个组。   以下是一个示例模型、其中3个组进入单个解压缩层、分为3个组大小为1的输出、进入3个解压缩层。

    我是在10.01上编译的、在10.01 EVM 上运行的、也应该能达到9.2。

    在仿真中编译:

    python3 ./onnxrt_ep.py -c -m model3Group
    ["Model3Group"]
    可用的执行提供程序:['TIDLExecutionProvider ','TIDLComplationProvider ','CPUExecutionProvider ']

    运行1个模型-["model3Group"]


    Running_Model : model3Group


    在模型/home/root/group_deconv/model3Group.onnx 上运行形状推理

    ============== [model compilation started]========

    模型编译将执行以下阶段:
    1.解析
    2.图形优化
    3.量化与校准
    4.记忆规划

    ============== [版本摘要]==========

    -------------------------------------------------------
    TIDL 工具版本| 10_01_00_01 |
    -------------------------------------------------------
    | C7x 固件版本| 10_01_00_01 |
    -------------------------------------------------------
    |运行时版本| 1.15.0|
    -------------------------------------------------------
    |模型选项集版本| 11 |
    -------------------------------------------------------

    注意:此处的运行时版本指定了 ONNXRT_VERSION+TIDL_VERSION
    例如:1.14.0+1000XXXX -> ONNXRT 1.14.0和 TIDL_version 10.00.XX.XX

    ============== [解析已开始]==========

    [TIDL 导入][解析器]警告:未识别为物体检测网络的网络:( 1)忽略网络不是物体检测网络(2)如果网络是物体检测网络,请指定"model_type":"OD"作为 OSRT 编译选项的一部分
    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效
    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效
    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效

    --------------- 子图信息摘要-------------------------------------------------------
    -------------------------------------------------------
    |核心|节点数|子图数|
    -------------------------------------------------------
    | C7x | 9 | 1 |
    | CPU | 0 | x |
    -------------------------------------------------------
    ============== [解析已完成]========

    ============ [optimization for subgraph_0 started]====已启动]====已启动

    -------------------------------------------------------- 优化摘要-------------------------------------------------------
    -------------------------------------------------------
    |层|优化前的节点|优化后的节点|
    -------------------------------------------------------
    TIDL_Deconv2DLayer | 3 | 3 |
    TIDL_ConcatLayer | 1 | 1 |
    TIDL_ReLULayer | 1 | 0 |
    TIDL_SliceLayer | 3 | 3 |
    | TIDL_ConvolutionLayer | 1 | 1 |
    -------------------------------------------------------

    ========== [已完成 subgraph_0的优化]====已完成]====

    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效
    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效
    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效
    软限制为10240
    硬性限制为10240
    内存:初始化...!!!
    内存:初始化...完成!!!
    0.0s:vx_zone_init:Enabled
    0.4s:vx_zone_error:Enabled
    0.8s:vx_zone_warning:Enabled
    0.2172s:vx_zone_init:[tivxInit:190]初始化已完成!!!
    ====== [已启动 subgraph 0的量化和校准]========


    --- 在浮动模式下运行校准以收集张量统计信息-------
    [________________________________________________====] 100 %

    ------- 定点校准迭代[1/1]:--------------------
    [________________________________________________====] 100 %

    ============ [量化和校准已完成]=========

    ================ [Memory Planning Started]============


    --------------- 网络编译器跟踪-------------------------------------------------------
    成功分配内存
    成功创建工作负载

    ============== [已完成内存规划]==========

    正在重新运行网络编译器...
    ================ [Memory Planning Started]============


    --------------- 网络编译器跟踪-------------------------------------------------------
    成功分配内存
    成功创建工作负载

    ============== [已完成内存规划]==========

    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效
    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效
    [TIDL 导入]警告:如果可能、更改为向上采样/重新调整大小、而不是解析。 它将更高效
    ============== 已成功编译子图=======

    已完成的模型- model3Group.onnx


    名称: model3Group ,总时间: 1724.41,卸载时间: 0.24, DDR RW MBs : 0


    内存:Deinit ...!!!
    内存:分配:48564629字节的26个分配
    Mem: free's : 26 free's of 48564629 bytes.
    MEM: OPEN'S : 0个0字节的分配
    MEM: Deinit ...完成!!

    在仿真中运行:

    python3 ./onnxrt_ep.py -m model3Group
    ["Model3Group"]
    可用的执行提供程序:['TIDLExecutionProvider ','TIDLComplationProvider ','CPUExecutionProvider ']

    运行1个模型-["model3Group"]


    Running_Model : model3Group

    libtidl_onnxrt_EP 已加载0x5aabfd430f50
    最终创建的子图数为:1、-卸载节点- 9、总节点- 9
    软限制为10240
    硬性限制为10240
    内存:初始化...!!!
    内存:初始化...完成!!!
    0.0s:vx_zone_init:Enabled
    0.7s:vx_zone_error:Enabled
    0.10s:vx_zone_warning:Enabled
    0.2672s:vx_zone_init:[tivxInit:190]初始化已完成!!
    已完成的模型- model3Group.onnx


    名称: model3Group ,总时间: 0.27,卸载时间: 0.22, DDR RW MBs : 0


    内存:Deinit ...!!!
    内存:分配:26个分配、共8410201字节
    Mem: free's : 26 free's of 8410201 bytes.
    MEM: OPEN'S : 0个0字节的分配
    MEM: Deinit ...完成!!

    器件上运行时出错、但这是 PyTorch 生成的随机权重模型上的 TIDL-ISM。  我认为这与我在 EVM 上进行的设置相关、与大家正在尝试实现的目标密切相关。  该理论仍然有效。   我明天将使用另一个 EVM、并验证这一点。

    以下是用于生成上述网络的代码。  此代码不是在循环中来说明该过程、但对于转换为一个的128个组、循环将很有帮助。   

    e2e.ti.com/.../gendeconvModel.py

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

    此操作将导致性能降低。

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

    尊敬的 Guang:

    中国 FAE 团队针对解卷问题提供了补丁(~3月12日通过 CDDS 获得)。  请要求他们进行访问。

    此致、

    Chris

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

    我们已获取补丁并正在进行验证。