Dump数据对比
数据准备
将precision_tool和precision_data(包括GPU/CPU标杆数据和NPU的精度数据)文件夹上传到Toolkit安装环境的任意目录下,目录结构示例:
├── precision_tool │ ├── cli.py │ ├── ... ├── precision_data │ ├── npu │ │ ├── debug_0 // 存放NPU dump数据 │ ├── tf │ │ ├── dump // 存放GPU/CPU dump数据 │ ├── ...
安装依赖
# graphviz为可选依赖,只有当需要绘制算子子图时才需要安装 pip3 install rich graphviz # ubuntu/Debian sudo apt-get install graphviz # fedora/CentOS sudo yum install graphviz 修改工具precision_tool/lib/config目录下的config.py # 依赖Toolkit包中的atc和msaccucmp.py工具,配置为Toolkit包安装目录 # 默认Toolkit包安装在/usr/local/Ascend,可以不用修改,指定目录安装则需要修改 CMD_ROOT_PATH = '/usr/local/Ascend'
数据对比
精度分析
打开precision_data/temp/vector_compare目录下的csv文件,从上向下查找第一个输出余弦相似度小于0.98的算子,具体可参考《TensorFlow 1.15模型迁移指南》的“整网精度比对结果文件说明”章节;或者使用vcs -f [file_name] -c [cos_sim_threshold] -l [limit]命令(可参考《TensorFlow 1.15模型迁移指南》的“precision_tool命令参考”章节)筛选比对结果,vcs命令默认筛选余弦相似度小于0.98的结果,找到输出的第一个算子。如果阈值0.98无法筛选出结果,可以提高阈值继续筛选。
下图为vcs命令结果举例:
- Left:表示基于NPU运行生成的dump数据的算子名。
- Right:表示基于GPU/CPU运行生成的npy或dump数据的算子名。
- Input和Output:表示该算子各输入输出的余弦相似度算法比对结果,范围是[-1,1],比对的结果如果越接近1,表示两者的值越相近,越接近-1意味着两者的值越相反。
从上图的比对结果可以看到,算子的输入基本一致,但第一个输出与标杆存在明显差异(余弦相似度为0.806927,小于0.98),说明该算子可能存在精度问题;如果算子的输入就存在明显差异,需要继续找输入节点的比对结果。
父主题: GPU/CPU与NPU整网比对