AI开发平台MODELARTS-精度校验:自动精度对比

时间:2024-08-12 10:55:25

自动精度对比

在某些场景下,比如算子溢出、误差累积等都可能会导致模型转换前后的模型存在误差,通过精度测试节的精度校验工具可以度量模型输出的精度误差的大小。当误差较大时,可以使用精度对比工具对比转换前后的ONNX模型和OM模型。其中OM模型在使用converter_lite工具进行模型转换时会同步生成。

# shell
cd /usr/local/Ascend/ascend-toolkit/latest/tools/msquickcmp
mkdir -p ~/work/output
python main.py -m ~/work/resnet50.onnx -om ~/work/resnet50.om -o ~/work/output --input-shape "input.1:1,3,224,224"

精度对比命令执行成功后,将会在指定的输出目录中生成result_{timestamp}.csv文件。

图2 精度对比生成文件

打开 CS V文件后可以通过CosineSimilarity列和MaxAbsoluteError列排查第一个数值发生突变的行,这种情况一般表明:该突变行对应的Ascend算子和ONNX算子的执行结果存在较大差异,从而将排查重点锁定在对应的算子中。

图3 执行结果

如下图所示,最大绝对误差在295行发生了突变,且突变值约为65504,说明softmax算子输出的结果发生了溢出(FP16的最大值为65504),需要重点分析softmax算子为什么会执行出错,也可以联系华为工程师进行分析。

图4 最大绝对误差
support.huaweicloud.com/bestpractice-modelarts/modelarts_10_1162.html