随机错误检测
使用场景
网络执行过程中,可能存在部分计算过程在相同输入的情况下给出了不同的输出的问题。
当出现以上随机问题时,可以通过执行两次训练,并分别采集各算子的运算结果(即dump数据),通过比对分析,从而快速定位到导致随机问题的算子层。
操作步骤
- 参考基于NPU Dump精度数据,在NPU环境执行训练,采集dump数据,该数据默认保存在precision_data/npu/debug_0目录下。
- 将以上数据转存到precision_data/npu/debug_1目录下。
mv precision_data/npu/debug_0/ precision_data/npu/debug_1
- 再次在NPU环境执行训练,采集dump数据,该数据默认保存在precision_data/npu/debug_0目录下。
- 启动PrecisionTool交互命令行。
python3 ./precision_tool/cli.py
进入交互命令行界面:
PrecisionTool >
如需退出,可执行ctrl + c。
- 使用vc -lt [left_path] -rt [right_path] -g [graph]命令进行整网数据对比。
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目录生成精度比对结果,可参考整网精度比对结果文件说明进行数据分析。
- 针对以上结果,还可以使用precision_tool的ni (-n) [op_name] -s [save sub graph deep]命令进行单层数据比对分析。
python3 precision_tool/cli.py
PrecisionTool > ni xxx
当precision_data/npu/目录下同时存在debug_0和debug_1的时候,ni命令会同时解析两个文件夹下相同算子名的dump文件,从该解析结果中,可以比较直观的看出数据差异。
父主题: 精度调优