现象
网络训练时可能会发生溢出loss或梯度为nan,需要定位到首个溢出算子。
思路
使用溢出Dump查看第一个溢出算子。
但有些场景数据是逐步变大,首溢出算子输入很大,这种场景推荐使用统计值dump保存全量数据。
配置
- 配置项:“op_debug_mode”: 3
- 相关配置:支持指定step(iteration字段),不支持指定算子(kernels字段不生效),支持统计信息与Tensor(saved_data字段)
- 特定配置:overflow_number,指定溢出dump的数据个数。
{
"common_dump_settings": {
"op_debug_mode": 3,
"dump_mode": 0,
"path": "/absolute_path",
"net_name": "ResNet50",
"iteration": "all",
"saved_data": "tensor",
"input_output": 0,
"kernels": ["Default/Conv-op12"],
"support_device": [0,1,2,3,4,5,6,7],
"statistic_category": ["max", "min", "l2norm"],
"overflow_number": 0
},
"e2e_dump_settings": {
"trans_flag": true,
}
}
性能
不溢出时,性能膨胀2-3倍,溢出时与溢出数据量有关
资源占用
磁盘
跟溢出数量有关系,可以在common_dump_settings配置overflow_number,指定溢出dump的数据个数,执行溢出算子Dump的数量。
显存
膨胀不超过5%。