AI开发平台MODELARTS-精度问题诊断:使用精度对比工具ait debug compare
使用精度对比工具ait debug compare
在模型转换场景,误差的累积和算子溢出等都可能导致转换后的模型存在误差。当识别到模型误差较大时,可以使用一键式全流程精度比对工具ait debug compare对比转换前的onnx模型和转换后的OM模型。
- 使用该工具对比onnx模型和OM模型,指定onnx模型路径、 OM模型路径、生成文件的路径以及模型输入shape的信息。其中,-o表示对比结果的保存路径,需要是一个已经存在的路径。
#shell ait debug compare -gm ./model.onnx -om ./text_encoder.om -o ./ --input-shape "input_ids:1,77"
- 执行成功后,会在指定输出目录下输出{timestamp}文件夹,打开对应的文件夹,可以看到result_{timestamp}.csv文件,该文件统计了各个图算子在推理过程中的日志信息。具体各个字段代表的含义可以参考昇腾整网对比文档。
排查精度问题时可以通过检索.csv文件中CosineSimilarity(余弦相似度)和MaxAbsoluteError(最大绝对误差)两列的信息定位第一个发生突变的算子。一般认为余弦相似度小于0.99时算子的精度有偏差,这种情况表明:该突变行对应的Ascend算子和onnx算子的执行结果存在较大差异,从而将排查重点锁定在对应的算子上。
如下图所示,最大绝对误差在Trilu_233这个算子处发生突变(溢出)。如果用户对模型比较了解,可以继续排查模型网络中使用这个算子的地方,否则需要向华为工程师求助。
图3 误差分析
该算子精度问题是由MindSpore Lite 2.1.0版本引入,在华为工程师修复该问题后,端到端的pipeline模型的输出能够对齐。
图4 修复后推理结果