dump数据存盘说明
dump结果目录结构示例如下:
├── dump_path │ └── ptdbg_dump_{version} │ ├── step0 │ │ ├── rank0 │ │ │ ├── dump │ │ │ │ ├── Tensor_permute_1_forward.npy │ │ │ │ ├── MyModule_0_forward_input.npy │ │ │ │ ... │ │ │ │ └── Fcuntion_linear_5_backward_output.npy │ │ │ │ └── dump.pkl │ │ ├── rank1 │ │ │ ├── dump │ │ │ │ └── ... │ │ │ └── dump.pkl │ │ ├── ... │ │ │ │ │ └── rank7 │ ├── step1 │ │ ├── ... │ ├── step2
dump过程中,npy文件在对应算子或者模块被执行后就会落盘,而pkl文件则需要在正常执行PrecisionDebugger.stop()或set_dump_switch("OFF")后才会被落盘保存,异常的程序终止会保存终止前被执行算子的相关npy文件,但是不会生成pkl文件。
其中ptdbg_dump_{version}为默认命名,debugger方式dump不支持修改该文件夹名称,使用set_dump_path函数则支持通过dump_tag参数修改文件夹名称;rank为设备上各卡的ID,每张卡上dump的数据会生成对应dump目录。
精度比对dump场景
精度比对dump场景的结果如下:
- dump.pkl文件:包含dump数据的API名称(命名格式为:{api_type}_{api_name}_{API调用次数}_{前向反向}_{input/output}.{参数序号})、dtype、 shape以及各数据的max、min、mean统计信息。
其中,“参数序号”表示该API下的第n个参数,例如1,则为第一个参数,若该参数为list格式,则根据list继续排序,例如1.1,表示该API的第1个参数的第1个子参数。
- dump目录:目录下为npy格式的dump数据。
前缀
Torch模块
Tensor
torch.Tensor
Torch
torch
Functional
torch.nn.functional
NPU
NPU亲和算子
VF
torch._VF
Aten
torch.ops.aten
Distributed
torch.distributed
当configure_hook或set_dump_switch配置mode参数(例如:mode="api_stack" )时,dump结果的文件名会添加api_stack前缀,dump结果如下:
- api_stack_dump.pkl
- api_stack_dump目录
溢出检测dump场景
PrecisionDebugger模块的hook_name参数或register_hook函数设置了overflow_check时,检测API溢出,dump结果的文件名格式为:{api_type}_{api_name}_{API调用次数}_{前向反向}_{当前溢出次数},dump结果示例如下:
- Tensor_add_1_forward_1.pkl
- Tensor_add_1_forward_1目录