网络执行过程中,可能存在部分计算过程在相同输入的情况下给出了不同的输出的问题。
当出现以上随机问题时,可以通过执行两次训练,并分别采集各算子的运算结果(即dump数据),通过比对分析,从而快速定位到导致随机问题的算子层。
mv precision_data/npu/debug_0/ precision_data/npu/debug_1
python3 ./precision_tool/cli.py
进入交互命令行界面:
PrecisionTool >
如需退出,可执行ctrl + c。
vc -lt -rt precision_data/npu/debug_1/dump/20211016164504/1/ge_default_20211016164504_1/1/0 precision_data/npu/debug_0/dump/20211016180613/1/ge_default_20211016180613_1/1/0
在out_dir目录生成精度比对结果,可参考整网精度比对结果文件说明进行数据分析。
python3 precision_tool/cli.py
PrecisionTool > ni xxx
当precision_data/npu/目录下同时存在debug_0和debug_1的时候,ni命令会同时解析两个文件夹下相同算子名的dump文件,从该解析结果中,可以比较直观的看出数据差异。
基于整网比对结果,一般采用余弦相似度做初步的可疑算子筛选(注意:余弦相似度较高也不一定说明没有问题,但较低一般代表可能存在问题),精度对比结果可以给出一个大致的分析方向。