- Dump功能简介
- 同步Dump
- 异步Dump
1. Dump功能简介
对于静态图模式(GRAPH),Dump功能可以将模型训练中的图、算子的输入输出数据保存到文件
对于动态图模式(PYNATIVE),Dump功能仅支持Ascend后端的溢出检测能力,要看其他的可以直接调用print
Dump可以协助定位,可以比对标杆相同位置算子的输出输出数据,来定位模型的精度问题
2. 同步Dump
1. Ascend开启同步Dump,dump的时候自动关闭内存复用,有时候没dump出现误差(报错),dump的时候误差符合要求或报错消失,就要考虑是内存复用的影响。
2.同步Dump目前支持Ascend、GPU和CPU上的图模式,暂不支持PyNative模式(pynative直接print就可以)
2.1开启同步Dump操作步骤
1.创建json文件
2.设置环境变量 MINDSPORE_DUMP_CONFIG,变量值为json绝对路径
3.启动训练脚本,生成的数据文件保存在json文件中指定的位置
以下是json文件
1.dump_mode:0,表示Dump出该网络中的所有算子数据
2. iteration:”all”表示Dump所有迭代的数据
3. input_output:0表示Dump出算子的输入和算子的输出
设置成1,表示Dump出算子的输入;设置成2,表示Dump出算子的输出
4. enable:设置成true,表示开启同步Dump
设置环境变量
脚本执行完成后,dump数据会在/tmp/dumpdata下面产生, 后缀是npy, 可以直接用numpy.load读取
3. 异步Dump
大型网络(如Bert Large)使用同步Dump时会导致内存溢出,MindSpore通过异步Dump提供了大型网络的调试能力
3.1 异步Dump操作步骤
1.创建json文件
2.设置环境变量 MINDSPORE_DUMP_CONFIG,变量值为json绝对路径
3.启动训练脚本,生成的数据文件保存在json文件中指定的位置
4.若是设置file_format为bin,需要使用run包提供的msaccucmp.py解析dump出来的文件
json
其他配置都和同步的基本一致,file_format若是不设置则取默认值为bin, 保存的文件为bin格式,所以当前保存的dump文件的格式为bin
解析文件:
python /usr/local/Ascend/latest/toolkit/tools/operator_cmp/compare/msaccucmp.py convert -d /tmp/async_dump/test_async_dump/rank_0/test/0/0/ -out /home/dumpdata/ -f NCHW
原始文件:
解析后的文件