# msprobe工具应用–网络训练溢出

msprobe工具应用场景–网络训练溢出

**1. 问题现象**

在动态图场景下，部分算子在错误的输入下可能会溢出。

**2. 问题分析**

msprobe进行溢出dump：使用msprobe进行溢出dump。

**3. 配置**

1.  用户脚本：

```
  from msprobe.mindspore import PrecisionDebugger
 
  debugger = PrecisionDebugger(config_path='./config.json')
  # 在训练循环中启动工具
  debugger.start()
  # 训练循环体
  ...
  # 结束工具
  debugger.stop()
```

2.配置项：

MindSpore 场景：

动态图场景：支持 API 级别（"L1"）或 Cell 级别（"L0"）的溢出检测。

静态图场景：支持 Kernel 级别（"L2"）的溢出检测。

MSAdapter 场景：

支持 API 级别（"L1"）或模块级别（"L0"）的溢出检测。

task: 必须设置为 "overflow\_check"，表示启用溢出检测功能。

dump\_path: 指定溢出数据的存储路径。

rank: 指定需要检测的设备 rank，留空则表示所有 rank。

step: 指定需要检测的训练步骤（iteration），留空则表示所有步骤。

level: 检测的粒度级别：

MSAdapter、MindSpore 动态图: 支持 "L0"（API 级别）或 "L1"（模块级别）。

MindSpore 静态图: 必须设置为 "L2"（kernel 级别），且模型编译优化等级（jit\_level）必须为 "O2" 3。

overflow\_check: 配置溢出检测的详细参数：

overflow\_nums: 最大溢出次数，表示第 N 次溢出后停止检测。默认为 1，设置为 -1 表示持续检测直到训练结束。

check\_mode（仅适用于 MindSpore 静态图场景）: 溢出类型，可选 "aicore"、"atomic" 或 "all"，默认为 "all"。

**配置示例：**

```
 {
     "task": "overflow_check",
     "dump_path": "/home/data_dump",
     "rank": [ ],
     "step": [ ],
     "level": "L0",
     "overflow_check": {
         "overflow_nums": -1
     }
 }
```

**性能**

开启溢出dump，在不溢出的情况下，性能会膨胀2-3倍。如果发生溢出，性能影响则与溢出数据量有关

**资源占用**

磁盘：只保存溢出算子的输出，占用较少。

显存：理论上不会增加显存占用。

**注意事项**

1.  路径设置：

    确保path字段设置为绝对路径，避免因路径错误导致数据无法保存。

    工具读写的路径（如 config\_path、dump\_path 等）只能包含大小写字母、数字、下划线、斜杠、点和短横线。

2.  数据采集范围

    确保溢出检测的API或模块在 start 和 stop 接口之间被调用，否则数据可能无法被采集。

    如果API是通过直接导入（如 from torch import relu）调用的，工具可能无法对其进行patch，导致数据缺失。

3.  溢出数据的控制

    可以通过配置 overflow\_number 控制溢出dump的数据个数，当达到指定数值后，溢出数据将不再dump。

4.  框架与版本限制

    在MindSpore框架下，静态图场景的L2 Level数据采集需要MindSpore版本高于2.5.0，并且需要使用特定编包选项安装的whl包。

5.  数据完整性与格式

    在dump.json中，API或Module的统计信息可能出现 null 或 None 值，常见原因包括输入输出为None、工具不支持某些数据类型，或Tensor的dtype为bool。

    在动态图场景下，使用 mindspore.jit 装饰的部分会以静态图模式执行，此时的Kernel级数据采集方式与静态图场景相同。

6.  工具性能与兼容性

    使用 msprobe 工具可能会增加运行时的耗时，尤其是在初始化阶段。

    工具在某些场景下可能会出现流同步失败或GlobalLock报错，这些问题可能需要修复工具版本或调整配置。

通过以上配置和注意事项，可以有效定位和解决动态图算子溢出问题。

