diff --git a/debug/accuracy_tools/msprobe/pytorch/visualization/README.md b/debug/accuracy_tools/msprobe/pytorch/visualization/README.md new file mode 100644 index 0000000000000000000000000000000000000000..96b413a5f75aa01c8146b5328259a6deabb0a1cb --- /dev/null +++ b/debug/accuracy_tools/msprobe/pytorch/visualization/README.md @@ -0,0 +1,155 @@ +# PyTorch模型分级可视化工具 + +分级可视化工具将MindStudio精度调试工具dump的精度数据进行解析,还原模型图结构,实现模型各个层级的精度数据比对,方便用户理解模型结构、分析精度问题。 + +工具支持PyTorch版本:2.1/2.2 + +## 1.依赖安装 + +分级可视化工具依赖**MindStudio精度调试工具**和**tensorboard。** + +### 安装MindStudio精度调试工具 + +[MindStudio精度调工具安装](https://gitee.com/louyujing/att_graph/tree/master/debug/accuracy_tools/msprobe#%E5%B7%A5%E5%85%B7%E5%AE%89%E8%A3%85) + +### 安装tensorboard + +[tensorboard下载](https://mindstudio-sample.obs.cn-north-4.myhuaweicloud.com/tbgraph/tensorboard-2.15.1-py3-none-any.whl) + +``pip3 install``即可。 + +## 2.dump模型结构数据 +[数据采集](https://gitee.com/ascend/mstt/blob/master/debug/accuracy_tools/msprobe/pytorch/doc/dump.md) + +**需要选择level为L0(module信息)或者mix(module信息+api信息),才能采集到模型结构数据**。 +dump之前需要准备一个json文件作为配置项输入,参考的json内容: + +``` +{ + "task": "statistics", + "dump_path": "your path", + "rank": [], + "step": [0], + "level": "L0", + "seed": 1234, + "is_deterministic": false, + "tensor": { + "scope": [], + "list": [], + "data_mode": [ + "all" + ], + "backward_input": "", + "file_format": "npy" + }, + "statistics": { + "scope": [], + "list": [], + "data_mode": [ + "all" + ], + "summary_mode": "statistics" + }, + "overflow_check": { + "overflow_nums": 1, + "check_mode": "all" + } +} +``` + +## 3.生成图结构文件 + +### 下载分级可视化源码 + +``` +git clone https://gitee.com/ascend/mstt.git +cd mstt/debug +git checkout pre-research +``` + +### 图构建和比对 + +**如果只是想查看一个模型的结构,请选择单图构建**; +**如果想比较两个模型的结构差异和精度数据差异,请选择双图比对**。 + +将**dump_path/step?/rank?**传入构图接口,总之传入的路径下必须包含dump.json、construct.json和stack.json。 + +#### 单图构建 + +展示模型结构和精度数据。 + +**在分级可视化源码mstt/debug路径下创建.py文件,执行如下python代码**: + +``` +from accuracy_tools.msprobe.pytorch.visualization.test import build_graph + +dump_path = 'dump_path/step0/rank0' +out_path = 'out_path' +build_graph(dump_path, out_path) +``` + +#### 双图比对 + +展示模型结构、结构差异、精度数据和精度比对指标、精度是否疑似有问题(精度比对指标差异越大颜色越深)。 + +**在分级可视化源码mstt/debug路径下创建.py文件,执行如下python代码**: + +``` +from accuracy_tools.msprobe.pytorch.visualization.test import compare_graph + +npu_path = 'dump_path_npu/step0/rank0' +bench_path = 'dump_path_bench/step0/rank0' +out_path = 'out_path' + +compare_graph(npu_path, bench_path, out_path) +``` + + +比对完成后将在**out_path**下生成一个**.vis文件。** + +## 4.启动tensorboard + +将生成vis文件的路径**out_path**传入--logdir + +``` +tensorboard --logdir out_path --bind_all +``` + +启动后会打印日志。 +``TensorBoard 2.15.1 at http://localhost.localdomain:6008/ (Press CTRL+C to quit)`` +localhost.localdomain是机器地址,6008是端口号。 + +**如果链接打不开,可以尝试使用vscode连接服务器,在vscode终端输入:** + +``` +tensorboard --logdir out_path +``` + +CTRL+C点击链接即可 + +## 5.浏览器查看 + +推荐使用谷歌浏览器,在浏览器中输入机器地址+端口号回车,出现TensorBoard页面,右上方选择GRAPHS即可展示模型结构图。 + +节点需要双击打开。 + +## 6.图比对说明 + +### 颜色 + +颜色越深,精度比对差异越大,越可疑。 + +### 疑似有精度问题判定 + +#### 真实数据模式 +所有输入的最小双千指标和所有输出的最小双千指标的差值的绝对值,大于0.1。 + +``One Thousandth Err Ratio(双千分之一)、Five Thousandths Err Ratio(双千分之五)精度指标:是指NPU的Tensor中的元素逐个与对应的标杆数据对比,相对误差大于千分之一、千分之五的比例占总元素个数的比例小于千分之一、千分之五`` + +#### 统计量模式 +所有输入输出的统计量相对diff值,大于0.5,其中小值域相对diff值(小于1e-3)不参与判定。 + +``相对diff值:abs((npu统计值 - bench统计值) / bench统计值)`` + +#### md5模式 +任意输入输出的md5值不同。