dump模式说明
- seed_all和set_dump_path在训练主函数main一开始就调用,避免随机数固定不全。
- register_hook须在set_dump_path之后调用,避免dump数据路径设置错误。
- 进行CPU数据dump时,请安装torch包而非npu_torch包,避免工具无法识别使用场景,导致失败。
- 在进行NPU dump采集时,TASK_QUEUE_ENABLE环境变量会导致算子下发和执行异步进行,因此在算子级别dump前需要将TASK_QUEUE_ENABLE关闭,需要在执行运行命令前配置环境变量。可参考以下命令。
export TASK_QUEUE_ENABLE=0
目前ptdbg工具提供了以下数据dump模式,可以在set_dump_switch函数中配置不同的参数来设置:
set_dump_switch(switch, mode='all', scope=[], api_list=[], filter_switch='ON', dump_mode='all')
设置dump范围。建议在register_hook函数之后的脚本内任意位置插入,但进行精度问题排查建议,先从第一个迭代开始的位置调用并dump整网数据。
函数示例
以下均以dump部分API数据为例,API名可以从首次dump整网数据的结果csv文件中的NPU Name或Bench Name列获取。
- dump指定API/API列表。
set_dump_switch("ON", mode="list", scope=["Tensor_permute_1_forward", "Tensor_transpose_2_forward", "Torch_relu_3_backward"])
- dump指定范围。以下样例代码会dump Tensor_abs_1_forward到 Tensor_transpose_3_forward之间的所有API。
set_dump_switch("ON", mode="range", scope=["Tensor_abs_1_forward", "Tensor_transpose_3_forward"])
- STACK模式,只dump堆栈信息。以下样例代码dump "Tensor_abs_1_forward" 到 "Tensor_transpose_3_forward" 之间所有API的STACK信息。
set_dump_switch("ON", mode="stack", scope=["Tensor_abs_1_forward", "Tensor_transpose_3_forward"])
- dump指定前向API的ACL级别数据。
register_hook(model, acc_cmp_dump, dump_mode='acl', dump_config='./dump.json') set_dump_switch("ON", mode="acl", scope=["Tensor_permute_1_forward"])
需要配置register_hook的dump_mode='acl'和dump_config配置文件。
- dump指定反向API的ACL级别数据。
register_hook(model, acc_cmp_dump, dump_mode='acl', dump_config='./dump.json') set_dump_switch("ON", mode="acl", scope=["Functional_conv2d_1_backward"]) set_backward_input(["./npu_dump/dump_conv2d_v2.0/rank0/dump/Functional_conv2d_1_backward_input.0.npy"])
需要配置register_hook的dump_mode='acl'和dump_config配置文件,并通过set_backward_input设置反向API输入的.npy文件。
- dump指定API/API列表的算子级别的输入输出数据。
set_dump_switch("ON", mode="acl", scope=["Tensor_abs_1_forward"])
- dump指定某一类API的API级别输入输出数据。
set_dump_switch("ON", mode="api_list", api_list=["relu"])
mode="api_list"时不配置scope。
- dump全部api级别输入输出数据以及相应堆栈信息。
set_dump_switch("ON", mode="api_stack")
mode="api_stack"时不配置scope。
- dump全部API级别输入输出数据并包含bool和整型的tensor以及浮点、bool和整型的标量,默认不配置为ON,会过滤bool和整型数据。
set_dump_switch("ON", filter_switch="OFF")
配置filter_switch="OFF"同时也可以配置mode、scope和api_list,除dump ACL级别数据。
父主题: 精度比对工具说明