开发人员在调试模型时可能会遇到一些异常情况,比如性能、精度异常,需要分析训练过程中特定Cell或算子的输入和输出数据。而在使用异步Dump在Graph模式调试中提供了指定Cell或算子的dump数据功能,即“按cell粒度dump”。
2.1、示例代码
以下代码对自定义网络中卷积层使用dump数据功能。
示例代码如下:
- import mindspore
- import mindspore.nn as nn
- import numpy as npfrom mindspore
- import Tensor, set_dump from mindspore
- import contextimport mindspore.ops as ops
-
- context.set_context(device_target="Ascend", mode=context.GRAPH_MODE)
-
- class PrintDemo(nn.Cell):
- def __init__(self):
- super(PrintDemo, self).__init__()
- self.abs = ops.Abs()
-
- def construct(self, input_pra):
- x = self.abs(input_pra)
- x = x.sum()
- return x
-
- def test():
- input_x = Tensor(np.array([-1.0, 1.0, 0.0]), mindspore.float32)
- input_pra = Tensor(input_x)
- net = PrintDemo()
- set_dump(net.abs, enabled=True)
- net(input_pra)
-
- return net(input_pra)
-
- print(test())
2.2、创建配置文件data_dump.json
“按按Cell粒度Dump”是异步Dump下的一个子功能;通过修改data_dump.json文件中dump_mode 的值来dump特定的算子数据。
- {
- "common_dump_settings": {
- "dump_mode": 2,
- "path": "/home/ma-user/xxx/dump_data_save/",
- "net_name": "ResNet50",
- "iteration": "1|3",
- "saved_data": "tensor",
- "input_output": 0,
- "kernels": ["Default/Conv-op12"],
- "support_device": [0,1,2,3,4,5,6,7],
- "op_debug_mode": 0,
- "file_format": "npy"
- }
- }
2.3、设置环境变量
export MINDSPORE_DUMP_CONFIG={Absolute path of data_dump.json}
2.4、使用加载工具解析input.0.npy文件。
利用此段代码进行加载.npy文件:
- import numpy
-
- numpy.load("/path/Abs.Abs-op0.2.22.1642152199130556.input.0.ND.npy")
此时该算子的输入文件Abs.Abs-op0.2.22.1642152199130556.input.0.ND.npy加载后的输出为:

该算子的输出文件Abs.Abs-op0.2.22.1642152199130556.output.0.ND.npy加载后的输出为:
