Dump工具应用场景——网络训练溢出

现象

网络训练时可能会发生溢出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%。