当前适配昇腾AI处理器的PyTorch通过torch_npu.npu中的init_dump()、set_dump()和finalize_dump()接口来进行算子dump数据的采集。首先init_dump()会进行初始化dump配置,然后通过set_dump()接口通过传入配置文件来配置dump参数,最后通过finalize_dump()来结束dump。以下以Add算子为例,介绍算子dump数据采集方法。
样例脚本如下:
import torch import torch_npu torch_npu.npu.set_device("npu:0") torch_npu.npu.init_dump() torch_npu.npu.set_dump("/home/HwHiAiUser/dump.json") # "/home/HwHiAiUser/dump.json"为配置文件路径,用户自行配置 a = torch.tensor([2, 2]).to("npu:0") a.add_(1) torch_npu.npu.finalize_dump()
其中dump.json配置方法如下:
{ "dump": { "dump_list":[], "dump_path":"/home/HwHiAiUser/dump/output", "dump_mode":"all", "dump_op_switch":"on" } }
字段名 |
说明 |
---|---|
dump_list |
待dump数据的算子模型。为空,无需配置。 |
dump_path |
dump数据文件存储到运行环境的目录,支持配置绝对路径或相对路径:
例如:dump_path配置为/home/HwHiAiUser/output,则dump数据文件存储到运行环境的/home/HwHiAiUser/output目录下。 |
dump_mode |
dump数据模式,配置如下:
|
dump_op_switch |
单算子模型dump数据开关,配置如下:
|
采集的dump数据会在{dump_path}/{time}/{deviceid}/{model_id}/{data_index}目录下生成,例如“/home/HwHiAiUser/output/20200808163566/0/0”。
存放路径及文件命名规则:
cd ${CANN_INSTALL_PATH}/latest/toolkit/tools/operator_cmp/compare
python3 msaccucmp.py convert -d dump_file [-out output] [-f format -s shape] [-o output_tensor] [-i input_tensor] [-v version] [-t type]
参数名 |
描述 |
是否必选 |
---|---|---|
-d --dump_file |
昇腾AI处理器生成的dump文件。 支持指定单个文件;单个路径;同时指定多个文件,文件名用逗号隔开,例如-d /{PATH}/dump_file1,/{PATH}/dump_file2。 |
是 |
-out --output |
转换后的数据存放目录,默认为当前路径。 |
否 |
-f --format |
|
否 |
-s --shape |
format转换需要的shape,当前仅FRACTAL_NZ转换需要配置该参数,格式为([0-9]+,)+[0-9]+,每个数字必须大于0。配置-f时有效。 |
否 |
-o --output_tensor |
转换指定index的output数据,与-i互斥。配置-f时有效。 当-o与-i均未配置时,默认转换所有的input与output。 |
否 |
-i --input_tensor |
转换指定index的input数据,与-o互斥。配置-f时有效。 |
否 |
-v --version |
dump文件类型,1代表protobuf序列化后的数据文件,2代表自定义格式的数据文件。默认值为2。 |
否 |
-t --type |
输出文件的类型。取值为:
默认值为npy。 |
否 |
import numpy as np a = np.load("/home/HwHiAiUser/dumptonumpy/Pooling.pool1.1147.1589195081588018.output.0.npy") b = a.flatten() np.savetxt("/home/HwHiAiUser/dumptonumpy/Pooling.pool1.1147.1589195081588018.output.0.txt", b)