在进行迁移后的训练网络dump数据前,您需要完成训练网络开发、编译和运行,确保具备可执行的训练工程。
import os ... def main(): ... os.environ['DUMP_GE_GRAPH'] = '2'
import npu_device # 在初始化的时候添加以下配置 npu_device.global_options().dump_config.enable_dump = True npu_device.global_options().dump_config.dump_path = "/home/HwHiAiUser/output" npu_device.global_options().dump_config.dump_step = "0|5|10" npu_device.global_options().dump_config.dump_mode = "all" npu.device.global_options().dump_config.dump_data = "stats" npu.device.global_options().dump_config.dump_layer = "nodename1 nodename2 nodename3"
参数名 |
描述 |
---|---|
dump_config.enable_dump |
是否开启Data Dump功能,默认值:False。
|
dump_config.dump_path |
Dump文件保存路径。enable_dump为True时,该参数必须配置。 该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。
|
dump_config.dump_step |
指定采集哪些迭代的Data Dump数据。默认值:None,表示所有迭代都会产生dump数据。 多个迭代用“|”分割,例如:0|5|10;也可以用"-"指定迭代范围,例如:0|3-5|10。 |
dump_config.dump_mode |
Data Dump模式,用于指定dump算子输入还是输出数据。取值如下:
|
dump_config.dump_data |
指定算子dump内容类型,取值:
大规模训练场景下,通常dump数据量太大并且耗时长,可以先dump所有算子的统计数据,根据统计数据识别可能异常的算子,然后再指定dump异常算子的input或output数据。 |
dump_config.dump_layer |
指定需要dump的算子。取值为算子名,多个算子名之间使用空格分隔。 |
路径key |
说明 |
备注 |
---|---|---|
dump_path |
2中设置的dump_path路径(如果设置的是相对路径,则为拼接后的全路径)。 |
- |
time |
dump数据文件落盘的时间。 |
格式为:YYYYMMDDHHMMSS |
deviceid |
Device设备ID号。 |
- |
model_name |
子图名称。 |
model_name层可能存在多个文件夹,dump数据取计算图名称对应目录下的数据。 如果model_name出现了“.”、“/”、“\”、空格时,转换为下划线表示。 |
model_id |
子图ID号。 |
- |
data_index |
迭代数,用于保存对应迭代的dump数据。 |
如果指定了dump_step,则data_index和dump_step一致;如果不指定dump_step,则data_index序号从0开始计数,每dump一个迭代的数据,序号递增1。 |
dump文件 |
命名规则格式为{op_type}.{op_name}.{taskid}.{stream_id}.{timestamp}。如果按命名规则定义的文件名称长度超过了OS文件名称长度限制(一般是255个字符),则会将该dump文件重命名为一串随机数字,映射关系可查看同目录下的mapping.csv。 |
如果op_type、op_name出现了“.”、“/”、“\”、空格时,转换为下划线表示。 |
由于“ge”开头的dump图文件数量较大,且dump数据文件中的model_name层可能存在多个文件夹,实际仅需要找到计算图文件,且仅需要model_name为计算图名称的文件夹。以下提供两种方法帮助用户快速找到对应的文件。
grep Iterator *_Build.txt
如上图所示,“ge_proto_00292_Build.txt”文件即是我们需要找到的计算图文件。
graph { name: "ge_default_20201209083353_71" op { name: "atomic_addr_clean0_71" type: "AtomicAddrClean" attr { key: "_fe_imply_type" value { i: 6 } }