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.

[参考译文] TDA4VH-Q1:编译期间在 MUL 层进行图形分割—如何处理子图形分离?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1507193/tda4vh-q1-graph-split-at-mul-layer-during-compilation-how-to-handle-subgraph-separation

器件型号:TDA4VH-Q1
Thread:TDA4VM 中讨论的其他器件

工具/软件:

您好、

使用 edgeai-tidl-tools 编译模型时、我遇到了将图形拆分为两个子图的问题。

具体来说,模型中间有一个 MUL 层,它将两个张量与形状[1、64、24、40]和[1、64、 1、1]。
在此 MUL 操作中、编译器将模型分成两个子图。

我的问题是:
我应该如何处理这种图形分离?

是否有建议的方法来重建或修改模型、以使图形保持完整?

或者是否有办法确保完全支持这种类型的广播 MUL 操作、而不会导致子图形分割?

供参考:

我使用的是 SDK 9.2

如有任何建议或指导、将非常感谢。

此致、
Minho

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

    你好、Minho、

    当某些层无法在 C7X 内核上运行时、就会发生这种情况。    遇到不受支持的层时、编译器会将模型拆分为在 C7x 上运行的子图、必须在 ARM 内核上运行的子图(或层)、以及在 C7x 上运行的一个子图或多个子图。   

    在您的特定 MUL 层中、请确保遵守有关张量和输入的这些说明。  这些说明针对10.1、请参阅9.1的详细信息。

    Add/Mul/Sub/Div TIDL_EltWiseLayer
    • Add/Mul/Sub/Div 中的常量张量要求该层的输入尺寸作为网络的一部分存在
    • Add/Mul/Sub/Div 层仅支持2个输入
    • Add/Mul/Sub/Div 中的非单个变量输入尺寸的数量必须小于<= 6
    • Add/MUL 图层中的变量输入必须具有相同的尺寸或可广播
    • Sub/Div 中不支持两个变量输入
    • 只有具有相似维度的操作数或两个输入的广播支持模式时、才支持 Eltwise 运算符(Add/Mul layer)
    • Sub/Div 层中的常量张量必须是数字或1D 向量、只有一个维度可以大于1
    • 1D 矢量维度应与通道或宽度维度匹配
    MatMul/gemm TIDL_InnerProductLayer
    • 非单胎变量输入尺寸的数量必须小于<= 4
    • 滤波器张量输入应至少具有2个维度
    • 偏置张量输入应为矢量(1、N)、N 应与输出尺寸匹配
    • 偏置矢量的维度可以是[1、N]或[N]
    • 仅支持的 gem 参数为 transA = 0、alpha = 1.0和 beta = 1.0。 同一层将作为 TIDL 中的内部产品或完全连接层进行处理
    • TIDL 中不支持 GEM 层当偏置大小!=输出大小时、请使用 tidl-onnx-model-optimizer  将 GEM 转换为(MatMul + ADD)组合
    • 不支持带有符号输入和无符号输出的 MatMUL
    • TDA4VM 不支持带有符号和无符号输入组合的 MatMul、仅固件版本>= 10_00_07_00时才支持

    此致、

    Chris