比对步骤(推理场景融合算子精度问题排查)
说明
- 当指定的比对数据文件大小超过1GB或全网层信息文件、量化算子映射关系文件等json文件大小超过100MB时,比对过程可能耗时较长,系统提示:'The size (%d) of %s more than the XX, it needs more time to run.'。
- 基于相同模型(开/关融合)、昇腾AI处理器运行生成的dump数据进行整网比对且指定-s或-r参数时,需同时指定-f和-cf参数。
- 一般情况下离线模型精度比对在转换离线模型时都是默认开启算子融合功能的。为了排查融合后的算子产生的精度问题,可以将模型转换时的算子融合功能关闭,生成关融合的dump数据文件与开融合的dump数据文件进行比对。这种情况下需要同时指定-f参数(开融合的算子映射文件)和-cf(关融合的算子映射文件)。
有关关闭算子融合功能的详细介绍请参见《ATC工具使用指南》的“参数说明>高级功能参数>模型调优选项>--fusion_switch_file”。
操作步骤
- 开启和关闭算子融合功能的离线模型在昇腾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/tools/operator_cmp/compare目录。
- 执行Tensor比对命令。
由于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
Tensor比对结果result_*.csv文件内容如图1所示。表1 输出参数说明 参数
说明
NPUDump
表示开启算子融合功能的离线模型的算子名。
GroundTruth
表示关闭算子融合功能的离线模型的算子名。