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:[TIDL] Tflite 自定义模型导入崩溃

Guru**** 2540530 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1384935/tda4vm-tidl-tflite-custom-model-import-crash

器件型号:TDA4VM

工具与软件:

您好!

我正在尝试导入包含以下结构的模型:

model = tf.keras.Sequential([
  tf.keras.layers.Conv1D(filters=16, kernel_size=(7), padding='same', activation='tanh', input_shape=(24, 5)),
  tf.keras.layers.Conv1D(filters=16, kernel_size=(7), padding='same', activation='tanh'),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(2, activation='relu'),
])

将模型转换为 tflite 时、Conv1D 层被更改为扩展 Dims + Conv2D + Reshape。

使用 tflite 模型导入器(16位)导入后、runtime_visualizing.svg 显示应卸载第一个卷积后的整形:


但是、看看第一个子图、整形图缺失:


如果我现在将 tanh 激活添加到拒绝列表中、它仍会尝试为第一个重拍创建单独的子图、但由于未添加重拍、导入将与空的子图崩溃:
VX_ZONE_ERROR:[tivxAddKernelTIDL:269] invalid values for num_input_tensors or num_output_tensors 
VX_ZONE_ERROR:[vxGetStatus:1020] Reference is NULL


此外、我感到困惑、为什么在最后一个子图中、在 tanh 和整形操作之间添加 DataConvert 图层:

该 DataConvert 的输入和输出类型相同。


我还注意到、从 PROCESSOR-SDK-RTOS J721E (09.02.00.05)导入 tidl_tools 库时、我收到以下消息:
TIDL ALLOWLISTING LAYER CHECK -- [TIDL_TanhLayer]  should be removed in import process. This activation type is not supported for >8bit input/output data type !!

但是、使用 edgeai-tidl-tools 提供的 tidl_tools 库(09_02_07_00)时、我没有收到消息。 这些库是否比使用 PSDK 编译的库更新?


我知道、我们可能应该在原始模型中使用 Conv2D、以防止扩展调光+整形图层、但仍然不应该发生这种崩溃。

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

    您好!

    您能试一下最新的 TIDL 工具实验吗?SDK 标签:9.2.9.0、让我知道观察结果吗?

    同样从上述问题来看、您似乎已经解释了多个案例、您能否在9.2.9.0验证后总结观察/问题/问题、并在此处告知我们。

    谢谢  

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

    您好!

    感谢您的答复。

    我使用 TIDL 工具9.2.9.0获得相同的结果。

    以下是观察/问题总结:

    1. 我导入上述模型、从而实现运行时可视化:

      因此第一个子图应包含 Conv2d、Tanh 和 Reshape 层。 在子图中、缺少整形图层:

      观察结果:整形图层缺失。
    2. 在第二个子图中、它看起来是这样的:

      如您所见、此子图按预期具有重新样式、但有一个数据转换层、这似乎只是进行了一些调整。 不确定在整形图层之前为什么需要这样做。
      问题:为什么这里需要 DataConvert ,为什么这里没有丢失的内容?
    3. 我导入上述模型、但在拒绝列表中使用 tanh ("deny_list:layer_type":"28"、)。 它现在应该创建四个子图(卷曲2d、整形、卷曲2d、整形+完全连接)。
      当导入器尝试创建第二个子图时、仍然没有整形图层、从而导致空的子图和模型导入器崩溃:
      VX_ZONE_ERROR:[tivxAddKernelTIDL:269] invalid values for num_input_tensors or num_output_tensors 
      VX_ZONE_ERROR:[vxGetStatus:1020] Reference is NULL

      观察结果:模型导入器创建一个空子图并崩溃。 我想这不应该发生。

    我希望这一总结澄清了情况。

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

    您可以在此处共享模型文件、编译标志等吗?

    在最新工具上、TIDL num_bits = 32也会出现此问题吗?

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

    您好!
    以下是具有上述架构和随机权重的示例模型文件: e2e.ti.com/.../test_5F00_model.zip

    SoC 是 am68pa。
    编译委托选项应如下所示:

    'tensor_bits'      : 16,
    'debug_level'      :  1,
    'accuracy_level'   :  0,
    'max_num_subgraphs': 16,
    'deny_list:layer_type': '28'


    我在 num_bits = 32时尝试了它、第一个重拍仍然缺失。 在拒绝列表中、tanh 仍然会创建一个空的子图、但它不会崩溃。
    我还以8/16位(9.2.9.0)进行了重试、注意到它停留在相应的 TIDL_subgraphRtInvoke 中。 之前使用 wtih 9.2.7.0时、它会卡在相应的 TIDL_subgraphRtCreate 中。

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

    感谢您的回答、由于带宽有限、我计划在下周回到这个问题。

    非常感谢您的耐心。