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.

[参考译文] AM68A:用于调试模型的层跟踪检查器

Guru**** 2538950 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1566863/am68a-layer-trace-inspector-for-debugging-model

部件号:AM68A


工具/软件:

您好、

我正在尝试找出为什么我的模型在 TDA 平台上的性能不好。 我尝试集成基于变压器的模型、发现 int16 性能存在一个大问题。  

下面是推理日志,它也有最终特征图的比较:
e2e.ti.com/.../3755.inference.log

您可以看到、只有 38%的特征向量存在误差裕度+–10%的值。  

为了调试问题、我尝试使用 layer_trace_inspector.py (https://github.com/TexasInstruments/edgeai-tidl-tools/blob/95ba2c7ec62bbedeb637d7a5c0273fcede21cac9/scripts/tidl_debug_scripts/layer_trace_inspector.py)、但不知道从哪里获取 ONNX 跟踪。 我已经成功地仅为我的模型找到了 TIDL 布线。

不过、我还是尝试将 TIDL 迹线可视化、发现_float.bin 和.y 值之间有一些缩放(我假设是由于量化)。 请告诉我如何比较它们。 特别是、我使用下一种量化配置:

“Tensor_bits":“:16、“Accurity_Level":“:9、
'advanced_options:add_data_convert_ops ':1、'advanced_options:量化比例_类型':4、'advanced_options:high_resolution_optimization':0、'advanced_options:activation_cliping':1、'advanced_options:weight_cliping_ cliping':1、 “advanced_options:bias_calibration“:1、“advanced_options:per_channel_timization“:1.


谢谢、
罗马

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

    以下是.y 和_float.bin 的示例  

    e2e.ti.com/.../a.zip

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

    尊敬的 Roman:

    您收到的.y 文件来自加速器。  

    float.bin 文件是  这些文件的去量化版本。 它实际上是获取.y 文件/跟踪并取消量化(添加偏置,乘以缩放器)来获取浮点版本。  

    应将 float.bin 与 float.bin 进行比较、方法是在 tensor_bits=32 中运行、或与运行时本身进行比较(例如,为每一层添加一个输出,并将这些相同的跟踪信息保存为 float32)。

    BR、
    Reese

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

    您好;

    我的同事共享了一个脚本、用于将输出添加到您的 ONNX 模型中、这可能会对您有所帮助。 请看一下。

    import onnx
      
    model_name = f"test_model.onnx"
    modified_model_name = model_name.replace(".onnx", "_ref.onnx")
    
    def convert(model_name, modified_model_name):
        """
        This function modifies the ONNX model to include intermediate layer outputs
        as graph outputs. This is useful for debugging and comparison purposes.
        """
        # Load the original ONNX model
        onnx_model = onnx.load(model_name)
        intermediate_layer_value_info = onnx.helper.ValueInfoProto()
        intermediate_layer_value_info.name = ''
    
        for i in range(len(onnx_model.graph.node)):
            for j in range(len(onnx_model.graph.node[i].output)):
                intermediate_layer_value_info.name = onnx_model.graph.node[i].output[j]
                onnx_model.graph.output.append(intermediate_layer_value_info)
    
        onnx.save(onnx_model, modified_model_name)
    
    convert(model_name, modified_model_name)

    如果没有、您也可以查看此信息。

    https://github.com/TexasInstruments/edgeai-tidl-tools/blob/95ba2c7ec62bbedeb637d7a5c0273fcede21cac9/docs/tidl_osr_debug.md

    我们稍后将提供更多信息。  

    谢谢。此致

    Wen Li  

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

    非常感谢!