大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。
技术上主攻前端开发、鸿蒙开发和AI算法研究。
努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧
异步Dump
MindSpore通过异步Dump提供了Ascend平台上大型网络的调试能力。
操作步骤
- 创建配置文件data_dump.json。
JSON文件的名称和位置可以自定义设置。
{
"common_dump_settings": {
"op_debug_mode": 0,
"dump_mode": 0,
"path": "/absolute_path",
"net_name": "ResNet50",
"iteration": "0|5-8|100-120",
"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"],
"file_format": "npy"
}
}
- 设置数据Dump的环境变量。
export MINDSPORE_DUMP_CONFIG=${Absolute path of data_dump.json}
如果Dump配置文件没有设置path字段或者设置为空字符串,还需要配置环境变量MS_DIAGNOSTIC_DATA_PATH。
export MS_DIAGNOSTIC_DATA_PATH=${yyy}
- 执行用例Dump数据。
可以在训练脚本中设置set_context(reserve_class_name_in_scope=False),避免Dump文件名称过长导致Dump数据文件生成失败。
- 参考异步Dump数据分析样例解析Dump数据文件。
数据对象目录和数据文件介绍
图编译等级不为O0或O1时,Dump目录结构如下所示,主要特征为存在{step_id}目录,代表用户侧的训练轮次:
{path}/
- {step_id}/
- {time}/
- {device_id}/
- {model_name}/
- {model_id}/
- {iteration_id}/
statistic.csv
{op_type}.{op_name}.{task_id}.{stream_id}.{timestamp}
Opdebug.Node_OpDebug.{task_id}.{stream_id}.{timestamp}
mapping.csv
图编译等级为O0或O1时,Dump目录结构如下所示,此种场景下aclop和aclnn算子的Dump数据会保存于{device_id}目录,"ReduceSum"类通信算子的Dump数据会保存在{iteration_id}目录:
{path}/
- {step_id}/
- {time}/
- {device_id}/
- {model_name}/
- {model_id}/
- {iteration_id}/
statistic.csv
{op_type}.{op_name}.{task_id}.{stream_id}.{timestamp} //aclop 算子
{op_name}.{op_type}.{task_id}.{stream_id}.{timestamp} //aclnn 算子
mapping.csv
statistic.csv
{op_type}.{op_name}.{task_id}.{stream_id}.{timestamp} //aclop 算子
{op_name}.{op_type}.{task_id}.{stream_id}.{timestamp} //aclnn 算子
mapping.csv
数据分析样例
异步Dump不会自动保存.ir文件,要想查看.ir文件,可以在执行用例前通过MindSpore的IR保存开关set_context(save_graphs=2), 执行用例后查看保存的trace_code_graph_{xxx}文件, 可以用vi打开。文件查看方式请参考同步dump的数据分析样例。在图编译等级为O0或O1时,异步Dump保存的算子文件和图文件中的算子名不同,所以此场景不推荐使用异步Dump,建议使用同步Dump。在图编译等级为O2时,由于.ir文件中并不是最终执行图,不能保证算子文件和.ir文件中的算子名一一对应。保存最终的执行图请参考昇腾社区文档DUMP_GE_GRAPH 、DUMP_GRAPH_LEVEL 和DUMP_GRAPH_PATH 。
通过异步Dump的功能,获取到算子异步Dump生成的数据文件。如果异步Dump配置文件中设置的file_format为"npy",可以跳过以下步骤中的1、2,如果没有设置file_format,或者设置为"bin",需要先转换成.npy格式的文件。