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.

[参考译文] AM67A:当 tensor_bits = 16、时、编译后的模型完全不可用

Guru**** 2535150 points
Other Parts Discussed in Thread: AM67A

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1564807/am67a-when-tensor_bits-16-the-compiled-model-becomes-completely-unusable

器件型号:AM67A


工具/软件:

大家好、我有疑问。 编译模型时使用该工具 edgeai-tidl-tools 版本 11_00_06_00 和 settensor_bits = 8 ,编译的模型工作正常(虽然精度太低)。 但当我更改tensor_bits = 16后,编译后的模型将完全不可用。

我也尝试在中添加一些图层output_feature_16bit_names_list、但只要我在其中添加任何内容、编译后的模型就根本不能使用。 你知道为什么会发生这种情况吗?

Tensor_bits = 8:

Tensor_bits = 16:

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

    你好 Ylinly Yi、

    这当然不是预期的行为。 我们将找到一个分辨率。

    请协助回答以下问题:

    1. 编译 tensor_bits=16 模型时是否显示了任何警告或错误日志? 如果您愿意从 PC 共享编译日志、请执行此操作。
      1. 我建议为您的模型设置 debug_level=2(作为 model_configs.py 条目中的 runtime_option、或作为 edgeai-tidl-tools/examples/osrt_python 中 common_utils.py 中的全局设置)
      2. 还请将推理日志与同一 debug_level=2 共享
    2. 我假设在 AM67A 目标器件上会出现这种行为。 您是否看到 x86 PC 仿真的相同结果? 如果目标和 PC 给出不同的结果、则这是器件端的错误。
      1. 某些错误日志可能表明型号可在 PC 上工作、但在设备上不工作。  
    3. 您能否为我提供 8 位和 16 位模式的模型工件? 我知道这可能是敏感的 IP——这对我很有帮助、但不是 100%必需的。 您的工件/tempDir 文件中的 SVG 文件也就足够了。  
    4. 您是否正在使用对象检测元架构? 相关文档[1]。 我问,因为斜角箱是一个有趣的情况,但我不相信我们的元体系结构具备这种能力
    5. 使用  output_feature_16bit_names_list 时、您是否仍在使用 tensor_bits=16? 此选项仅在与 tensor_bits=8 一起使用时有效

    根本无法使用编译后的模型

    您的意思是精度太差以至于毫无用处、或者模型根本无法运行?

    奇怪的是、  在 16 位名称列表中添加任何图层都会导致这种行为。 请注意、仅当 tensor_bits=8 时才应使用该选项。 如果将 names-list 参数设置为不存在的图层名称、是否也会显示错误?

    [1] https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/docs/tidl_fsg_od_meta_arch.md

    BR、
    Reese

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

    以下是我设置 tensor_bits = 16 且 debug_level = 2 并运行 python3 onnxrt_ep.py -c -o 时的日志 我没有看到任何明显的错误。

    e2e.ti.com/.../edgeai-tidl-tools.log

    对于 x86 PC 仿真、我是否应该运行 python3 onnxrt_ep.py? 如果是、则 x86 PC 上的结果是正确的、但 AM67A 上的结果则不正确。

    8 位模式的模型工件如下:

    https://e2e.ti.com/home/tong/8
    16 位模式的模型工件如下:

    e2e.ti.com/.../16

    4.我没有使用 meta_arch_type。

    使用 OUTPUT_FEATURE_16bit_names_list 时、我设置 tensor_bits = 8。
    当 tensor_bits = 16 时、编译的模型在 AM67A 上运行、但会生成不正确的边界框、如下所示:

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

    尊敬的 Yliny Yi:

    看起来您上传了一些我无法查看/访问的日志文件/工件。 您可以将它们拖放到下一次答复的评论窗口中吗? 也许它们对您的用户是私人的

    [报价 userid=“665283" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1564807/am67a-when-tensor_bits-16-the-compiled-model-becomes-completely-unusable/6026746

    对于 x86 PC 仿真、我是否应该运行 python3 onnxrt_ep.py? 如果是、则 x86 PC 上的结果是正确的、但 AM67A 上的结果则不正确。

    [/报价]

    是的、正确。 如果您以“python3 onnxrt_ep.py -m model_name“的方式运行、则应仿真加速器。 这要求存在模型工件(意味着您事先编译)——默认位置很好。 如果我看到日志文件、可以验证它是否正在与 TIDL 仿真一起运行。

    • 同时使用“-d"标签“标签运行也将“禁用卸载“并在 CPU 上运行。 我们不想在这一阶段这样做

    现在假设它确实在模拟模式下运行、那么这是有用的信息--它表明 PC 和目标在执行方面有一些区别、在这些地方它们通常不应该这样做。  

    • 通常、此处的差异意味着与存储器处理相关的问题(例如无法分配)或某个层内的错误。
    [报价 userid=“665283" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1564807/am67a-when-tensor_bits-16-the-compiled-model-becomes-completely-unusable/6026746

    4.我没有使用 meta_arch_type。

    使用 OUTPUT_FEATURE_16bit_names_list 时、我设置 tensor_bits = 8。
    当 tensor_bits = 16 时、编译的模型在 AM67A 上运行、但会生成不正确的边界框、如下所示:

    [/报价]

    明白了、谢谢。  

    因此请确认我:当您在 tensor_bits=16 的 PC 上运行或在 output_feature_16bit_names_list 中定义的任何内容时 、编译不会出现问题。 在 PC 上运行时、您会看到正确的结果。 当您在目标上运行时、会得到无意义的噪声输出。  

    这是正确的吗?

    提供日志和模型工件后、我将更深入地了解并寻求解决方法。 如果以上几点是真的、我也会向我们的团队提交一个错误。  

    BR、
    Reese

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

    还请提供此模型的 model-config.py 条目。 请在 runtime_options 字典中包含您正在使用的任何非默认选项

    例如 https://github.com/TexasInstruments/edgeai-tidl-tools/blob/23b72b5781569a261792d98f6c17503b30b4a283/examples/osrt_python/model_configs.py#L1030 

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

    抱歉、您能看到这样的结果吗? 带有tensor_bits = 16和的日志debug_level = 2

    e2e.ti.com/.../edgeai_2D00_tidl_2D00_tools.log

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

    “best_iketest35"
    :“:
    “model_path":“:os.path.join (models_base_path、“best_iketest35.onnx")“)
    “num_images":“:numImages
    “task_type":“:“检测“
    “预处理“dict (
    调整大小=448
    作物=448
    data_layout=“NCHW",“,</s>、
    resize_with_pad=False
    REVERSE_CHANNES=False
    )、
    “会话“dict (
    session_name=“onnxrt",“,</s>、
    model_path=os.path.join (models_base_path、“best_iketest35.onnx")“)
    INPUT_Mean =[0、0、0]
    INPUT_SCALE=[0.0039215686270.003921568627、0.003921568627]、
    Input_optimization=True
    )、
    “extra_info":“:dict (
    num_images=numImages
    NUM_CLASS=15
    framework=“",“,</s>、
    label_offset_type=“n2n+1",“,</s>、
    OD_TYPE=“YoloV11_OBB",“,</s>、
    )、
    }、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ylinly、

    [报价 userid=“665283" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1564807/am67a-when-tensor_bits-16-the-compiled-model-becomes-completely-unusable/6031153

    抱歉、您能看到这样的结果吗? 带有tensor_bits = 16和的日志debug_level = 2

    [/报价]

    是的、我现在看到了您的日志。 以这种方式包含文件效果很好。

    我同意、 日志看起来很好--没有什么关系。 对于使用此调试级别编译的模型、日志完全正常。  

    还请在 DEBUG_LEVEL 设置为 2 的情况下、在 TARGET/EVM 上提供运行时日志。 还请再次提供 8 位和 16 位版本的模型工件 — 在前面的消息中无法访问这些工件。

    tensor_bits = 16 时的另一个输出问题:

    •  这些值是否都在预期范围内? 即介于[0、1 之间的置信水平、分级编号、框尺寸均在帧内

    BR、
    Reese