比对步骤(融合算子精度问题排查)
一般情况下离线模型精度比对在转换离线模型时都是默认开启算子融合功能的。为了排查融合后的算子产生的精度问题,可以将模型转换时的算子融合功能关闭,生成关融合的dump数据文件与开融合的dump数据文件进行比对。这种情况下需要同时指定-f参数(开融合的算子映射文件)和-cf(关融合的算子映射文件)。
有关关闭算子融合功能的详细介绍请参见《ATC工具使用指南》的“参数说明>高级功能参数>模型调优选项>--fusion_switch_file”。
融合算子精度问题排查操作步骤:
- 开启算子融合功能的离线模型在昇腾AI处理器上运行生成dump数据;关闭算子融合功能的离线模型在昇腾AI处理器上运行生成dump数据。
数据分别保存在:
- /home/HwHiAiUser/MyApp_mind/resnet50_on
- /home/HwHiAiUser/MyApp_mind/resnet50_off
- 以HwHiAiUser用户登录开发环境。
- 生成json文件。
Ascend-cann-toolkit安装目录/ascend-toolkit/latest/bin/atc --mode=1 --om=/home/HwHiAiUser/data_on/resnet50.om --json=/home/HwHiAiUser/data/resnet50_on.json
使用开启算子融合功能的离线模型生成resnet50_on.json文件。
Ascend-cann-toolkit安装目录/ascend-toolkit/latest/bin/atc --mode=1 --om=/home/HwHiAiUser/data_off/resnet50.om --json=/home/HwHiAiUser/data/resnet50_off.json
使用关闭算子融合功能的离线模型生成resnet50_off.json文件。
- 进入/home/HwHiAiUser/Ascend/ascend-toolkit/latest/toolkit/tools/operator_cmp/compare目录。
- 执行Vector比对命令。
由于dump和npy比对数据文件是由多个文件组成,故下文操作步骤中-m和-g参数须指定数据文件所在的父目录。如:/home/HwHiAiUser/MyApp_mind/resnet50,其中resnet50文件夹下直接保存比对数据文件。
目录结构示例如下:
root@xxx:/home/HwHiAiUser/MyApp_mind/resnet50# tree . ├── BatchMatMul.bert_encoder_layer_0_attention_self_MatMul_1.24.1614717261785536 ├── BatchMatMul.bert_encoder_layer_0_attention_self_MatMul.21.1614717261768864 ├── BatchMatMul.bert_encoder_layer_10_attention_self_MatMul_1.235.1614717263664916 #仅为示例,此处省略剩余文件名。
python3 msaccucmp.py compare -m /home/HwHiAiUser/MyApp_mind/resnet50_on -g /home/HwHiAiUser/MyApp_mind/resnet50_off -f /home/HwHiAiUser/data/resnet50_on.json -cf /home/HwHiAiUser/data/resnet50_off.json -out /home/HwHiAiUser/result
Vector比对结果result_*.csv文件内容如图1所示。表1 输出参数说明 参数
说明
LeftOp
表示开启算子融合功能的离线模型的算子名。
RightOp
表示关闭算子融合功能的离线模型的算子名。