PyTorch1.5.0版本适用的精度比对工具请参见《CANN 开发工具指南》(开放态)中的“精度比对工具使用指南”章节中 章节。
PyTorch1.5.0版本适用的精度比对工具请参见《CANN 开发工具指南》(开放态)中的“精度比对工具使用指南”章节中 章节。
用户通过算子溢出检测功能检测算子是否有溢出,然后采集溢出算子的数据,从而帮助开发人员快速定位并解决算子精度问题。
本功能只提供CANN层面IR级别的算子溢出检测,且只支持AI CORE算子。使用单算子溢出检测功能时,请不要同时开启APEX的动态Loss Scale模式和使用tensor融合功能。请使用单P对模型进行训练,不使用分布式。
# check_overflow为溢出检测控制开关 # dump_path为dump文件保存路径 with torch.utils.dumper(check_overflow=check_overflow, dump_path=${dump_path}, load_file_path='${文件加载路径}') as dump: # 添加需要检测算子溢出的代码片段s xxx xxxx
运行一个step,模型运行过程中,如果有算子溢出,会打印出相应IR的名字。若训练过程中采集到了dump数据,则会在{dump_path}路径下生成dump数据的.h5文件。
export ACL_DUMP_DATA=1 # 算子数据dump功能,调试时使用,可选,开启设置为1,关闭设置为0
h5copy -pv -i "./input.h5" -o "./output.h5" -s "/op1/seqid/" -d "/op1/seqid/"
若需要提取多个算子,则修改-s、-d参数,多次执行该命令,可以把多算子追加提取到output.h5中。
{ "dump": { "dump_list":[] "dump_path":"./output_IR2TBE"# 映射结果输出路径 "dump_mode":"all" "dump_op_switch":"on" } }
字段名 |
说明 |
---|---|
dump_list |
待dump数据的算子模型。为空,无需配置。 |
dump_path |
dump数据文件存储到运行环境的目录,支持配置绝对路径或相对路径:
|
dump_mode |
dump数据模式,配置如下:
|
dump_op_switch |
单算子模型dump数据开关,配置如下:
|
with torch.utils.dumper(use_load=True, dump_path="./",load_file_path="./output.h5", load_with_acl_dump=True) as dump: # 模型计算代码,需用户自己添加 # x = model(input_data)
运行一步完整的模型计算过程,在计算过程中load遇到output.h5中的数据后,自动开启acl dump功能,执行IR,并dump出IR相对应的TBE算子的输入输出数据,IR执行结束,acl dump结束。运行成功后,在acl.json配置文件中的dump_path路径下查看输出结果文件。
采集的dump数据会在{dump_path}/{time}/{deviceid}/{model_id}/{data_index}目录下生成。
存放路径及文件命名规则:
cd ${CANN_INSTALL_PATH}/latest/toolkit/tools/operator_cmp/compare
python3 msaccucmp.py convert -d /home/HwHiAiUser/dump -out /home/HwHiAiUser/dumptonumpy -v 2
-d参数支持传入单个文件,对单个dump文件进行转换,也支持传入目录,对整个path下所有的dump文件进行转换。
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)