AI开发平台MODELARTS-精度问题诊断:使用精度对比工具ait debug compare

时间:2023-11-13 08:49:18

使用精度对比工具ait debug compare

在模型转换场景,误差的累积和算子溢出等都可能导致转换后的模型存在误差。当识别到模型误差较大时,可以使用一键式全流程精度比对工具ait debug compare对比转换前的onnx模型和转换后的OM模型。

  1. 使用该工具对比onnx模型和OM模型,指定onnx模型路径、 OM模型路径、生成文件的路径以及模型输入shape的信息。其中,-o表示对比结果的保存路径,需要是一个已经存在的路径。

    #shell
    ait debug compare -gm ./model.onnx -om ./text_encoder.om -o ./ --input-shape "input_ids:1,77"

  2. 执行成功后,会在指定输出目录下输出{timestamp}文件夹,打开对应的文件夹,可以看到result_{timestamp}.csv文件,该文件统计了各个图算子在推理过程中的日志信息。具体各个字段代表的含义可以参考昇腾整网对比文档

    排查精度问题时可以通过检索.csv文件中CosineSimilarity(余弦相似度)和MaxAbsoluteError(最大绝对误差)两列的信息定位第一个发生突变的算子。一般认为余弦相似度小于0.99时算子的精度有偏差,这种情况表明:该突变行对应的Ascend算子和onnx算子的执行结果存在较大差异,从而将排查重点锁定在对应的算子上。

    如下图所示,最大绝对误差在Trilu_233这个算子处发生突变(溢出)。如果用户对模型比较了解,可以继续排查模型网络中使用这个算子的地方,否则需要向华为工程师求助。

    图3 误差分析

    该算子精度问题是由MindSpore Lite 2.1.0版本引入,在华为工程师修复该问题后,端到端的pipeline模型的输出能够对齐。

    图4 修复后推理结果

support.huaweicloud.com/bestpractice-modelarts/modelarts_10_2008.html