From 2da42d367e5feb775bfdd497d53e885ce3bde6b9 Mon Sep 17 00:00:00 2001 From: user_10012209 <734267852@qq.com> Date: Wed, 22 Nov 2023 18:08:07 +0800 Subject: [PATCH 1/7] =?UTF-8?q?[api=5Faccuracy=5Fchecker&ptdbg=5Fascend]?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=89=8B=E5=86=8C=E4=BC=98=E5=8C=96&?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=90=88=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api_accuracy_checker/README.md | 6 + ...03\275\350\257\264\346\230\216_v4.0.T2.md" | 10 +- ...76\345\272\246\346\257\224\345\257\271.md" | 119 +++++++++--------- 3 files changed, 73 insertions(+), 62 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/README.md b/debug/accuracy_tools/api_accuracy_checker/README.md index c2db434f71..eceb7fc870 100644 --- a/debug/accuracy_tools/api_accuracy_checker/README.md +++ b/debug/accuracy_tools/api_accuracy_checker/README.md @@ -102,6 +102,12 @@ Ascend模型精度预检工具能在昇腾NPU上扫描用户训练模型中所 ``` 数据默认会存盘到'./ut_error_data'路径下(相对于启动run_ut的路径),有需要的话,用户可以通过msCheckerConfig.update_config来配置保存路径,参数为error_data_path +## API预检白名单 + +精度预检工具可以对指定API进行预检操作,只需要修改att\debug\accuracy_tools\api_accuracy_checker\hook_module目录下的support_wrap_ops.yaml文件。 + +support_wrap_ops.yaml文件当前记录所有PyTorch API名称,可以直接编辑该文件,删除不需要的API,保留需要预检的API。 + ## API预检指标 API预检通过测试,则在accuracy_checking_details.csv文件中的“pass”列标记“pass”,否则标记“error”或“warning”,详细规则如下: diff --git "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" index 928308a027..ceddf9bd0b 100644 --- "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" +++ "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" @@ -574,7 +574,7 @@ configure_hook可配置多种dump模式,示例如下: 仅支持NPU环境。 -- 示例11:dump指定API的ACL级别溢出数据 +- 示例11:dump溢出API的ACL级别数据 ```python debugger.configure_hook(mode="acl", acl_config="./dump.json") @@ -623,6 +623,7 @@ debugger.stop() ```python from ptdbg_ascend import * debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump", step=[0,2], enable_dataloader=True) + # 请勿将以上初始化流程插入到循环代码中 ``` - 示例2:开启溢出检测dump @@ -630,6 +631,7 @@ debugger.stop() ```python from ptdbg_ascend import * debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check", step=[0,2], enable_dataloader=True) + # 请勿将以上初始化流程插入到循环代码中 ``` ### 示例代码(手动模式) @@ -640,7 +642,8 @@ debugger.stop() ```python from ptdbg_ascend import * - debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump") + debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump", step=[0]) + # 请勿将以上初始化流程插入到循环代码中 # 模型初始化 # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop() @@ -661,7 +664,8 @@ debugger.stop() ```python from ptdbg_ascend import * - debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check") + debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check", step=[0]) + # 请勿将以上初始化流程插入到循环代码中 # 模型初始化 # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop() diff --git "a/debug/accuracy_tools/ptdbg_ascend/doc/\345\234\250\347\272\277\347\262\276\345\272\246\346\257\224\345\257\271.md" "b/debug/accuracy_tools/ptdbg_ascend/doc/\345\234\250\347\272\277\347\262\276\345\272\246\346\257\224\345\257\271.md" index b0a98e8852..317c99573c 100644 --- "a/debug/accuracy_tools/ptdbg_ascend/doc/\345\234\250\347\272\277\347\262\276\345\272\246\346\257\224\345\257\271.md" +++ "b/debug/accuracy_tools/ptdbg_ascend/doc/\345\234\250\347\272\277\347\262\276\345\272\246\346\257\224\345\257\271.md" @@ -1,89 +1,90 @@ -# **PyTorch在线精度比对工具使用指南** +# **PyTorch NPU在线精度比对工具使用指南** -本文主要介绍ptdbg_ascend 在线精度比对功能使用,ptdbg_ascend工具的原理及安装请参见《[PyTorch精度工具](https://gitee.com/ascend/att/blob/master/debug/accuracy_tools/ptdbg_ascend/README.md)》。本节只介绍在线精度比对部分 +PyTorch NPU在线精度比对是ptdbg_ascend工具实现在PyTorch训练过程中直接完成精度比对并输出比对结果的功能。 + +在线精度比对实现的是NPU与CPU之间的精度比对。 ## PyTorch NPU在线精度比对总体流程 1. 准备NPU训练工程。 -2. 在环境下安装ptdbg_ascend工具。 +2. 在NPU环境下安装ptdbg_ascend工具,参见《[PyTorch精度工具](https://gitee.com/ascend/att/blob/master/debug/accuracy_tools/ptdbg_ascend/README.md)》。 -3. 在训练脚本内插入ptdbg_ascend工具在线比对接口。 +3. 在训练脚本内插入ptdbg_ascend工具在线精度比对接口。 -4. 执行训练在线精度比对NPU和CPU执行结果 +4. 执行训练并获取在线精度比对NPU和CPU分别执行后的精度比对结果。 5. 比对结果分析。 -## PyTorch NPU在线精度比 +## PyTorch NPU在线精度比对 ### 总体说明 - 本节主要介绍NPU精度比对所需要的函数以及示例。 -- 在线精度比对工具通过截获Pytorch框架中部分Aten Ir及其输入输出,并将输入转到CPU执行,在线比对NPU和CPU的输出结果 +- 在线精度比对工具通过截获PyTorch框架中部分Aten Ir及其输入输出,并将输入数据转到CPU执行,最后将NPU和CPU的执行结果进行精度比对得到比对结果。 ### 约束 -- Pytorch 只支持2.0及其以上版本 -- 只支持Aten Ir级在线精度比对,所有Aten Ir可以通过dir(torch.ops.aten)查看,其中部分IR不支持 在线比对:Aten Ir无对应CPU实现;NPU/CPU同AtenIR 实现逻辑不一致,导致同输入不同输出 -- 正反向不支持同时在线精度比对,不支持跨step在线精度比对 +- Pytorch 只支持2.0及其以上版本。 +- 只支持Aten Ir级在线精度比对,所有Aten Ir可以通过dir(torch.ops.aten)查看,其中部分IR不支持在线比对:Aten Ir无对应CPU实现、NPU和CPU同AtenIR实现逻辑不一致,导致同输入不同输出。 +- 正反向不支持同时在线精度比对,不支持跨step在线精度比对。 ### 场景示例 -1.在线精度比对 +1. 在NPU训练脚本中添加在线精度比对接口,示例如下: + ```python -from ptdbg_ascend import seed_all -from ptdbg_ascend.online_dispatch import PtdbgDispatch - - # 在main函数开始前固定随机数 - seed_all() - - - ... - - # 在需要调试精度的正向或反向代码前设置 - # 正向示例 - with PtdbgDispatch(dump_mode="auto", dump_path="/home/dump"): - output = model_cpu(inputs) - # 反向示例 - with PtdbgDispatch(dump_mode="auto", dump_path="/home/dump"): - loss.backward() + from ptdbg_ascend import seed_all + from ptdbg_ascend.online_dispatch import PtdbgDispatch + + # 在main函数开始前固定随机数 + seed_all() + + + ... + + # 在需要调试精度的正向或反向代码前设置 + # 正向示例 + with PtdbgDispatch(dump_mode="auto", dump_path="/home/dump"): + output = model_cpu(inputs) + # 反向示例 + with PtdbgDispatch(dump_mode="auto", dump_path="/home/dump"): + loss.backward() ``` +2. 执行训练。 -2.找出精度不达标的Aten IR - -执行过程中会打屏Failed,Failed在比对结果csv中的Accuracy Reached or Not列标记为No,并在Dump目录下存盘精度不达标Aten IR的输入输出 -![图片说明](http://image.huawei.com/tiny-lts/v1/images/d83d564e337e80c7cfb557ca3600d0d4_1689x178.png@900-0-90-f.png) - -精度不达标的判断条件如下: - -1) Cosine < 0.99 且 MaxAbsError > 0.001时,精度不达标 - -2) Cosine < 0.9,精度不达标 +3. 找出精度不达标的Aten IR。 -3) MaxAbsError > 1,精度不达标 + 执行过程中会打屏Failed,Failed在比对结果csv中的Accuracy Reached or Not列标记为No,并在Dump目录下存盘精度不达标Aten IR的输入输出。 + ![图片说明](http://image.huawei.com/tiny-lts/v1/images/d83d564e337e80c7cfb557ca3600d0d4_1689x178.png@900-0-90-f.png) +### 计算精度评价指标 +1. Cosine < 0.99 且 MaxAbsError > 0.001时,精度不达标; +2. Cosine < 0.9,精度不达标; +3. MaxAbsError > 1,精度不达标。 - - ### 在线精度比对参数设置说明 - | 参数名称 | 说明 | 是否必选 | - | -------- | ----------------------------------------------- | -------- | - | dump_mode| 可取值"all"、"list"、"auto"、"off",默认值为 off,不Dump数据 | 否 | - | api_list | dump_mode设置为list时设置,需要Dump Aten ir api名字,默认为None,Aten ir名字可以通过dir(torch.ops.aten)查看 | 否 | - | dump_path| dump文件生成的路径 | 是 | - | tag | 传入tag字符串,成为dump文件夹名一部分,默认为None | 否 | - | process_num | 多进程并发数默认为0| 否 | - | debug | debug信息打印,默认为False | 否 | +| 参数名称 | 说明 | 是否必选 | +| -------- | ----------------------------------------------- | -------- | +| dump_mode| dump模式,可取值"all"、"list"、"auto"、"off",默认值为off(表示不Dump数据)。 | 否 | +| api_list | dump范围,dump_mode="list"时设置,需要Dump Aten Ir API名称,默认为None,Aten Ir API名称可以通过dir(torch.ops.aten)查看。 | 否 | +| dump_path| dump文件生成的路径。 | 是 | +| tag | 传入tag字符串,成为dump文件夹名一部分,默认为None。 | 否 | +| process_num | 多进程并发数,默认为0。 | 否 | +| debug | debug信息打印,默认为False。 | 否 | ### dump数据存盘说明 -存盘文件夹名:ptdbg+版本号+tag+rank卡号+时间戳,下划线连接tag为用户输入标记,默认无。 -子目录下会有1个比对csv结果文件,npu文件夹下包含Aten IR在npu上的输入输出,cpu文件夹下只包含cpu输出 - - ptdbg_v3.2_rank4_20230911170521 - ├── compare_result_rank4_20230911170521.csv - ├── cpu - │   ├── native_batch_norm_backward_10_output.0.npy - │ ............ - └── npu - ├── native_batch_norm_backward_10_input.0.npy - ............ +dump数据存盘目录名格式:`ptdbg_{version}_tag_rankid_{timestamp}`。 + +子目录下包含1个比对结果csv文件、cpu和npudump数据目录,npu目录下包含Aten IR在NPU上的输入输出的dump数据,由于CPU的输入是直接使用NPU的输入执行,因此cpu目录下只包含执行输出的dump数据。 + +```bash +ptdbg_v3.2_rank4_20230911170521 +├── compare_result_rank4_20230911170521.csv +├── cpu +│   ├── native_batch_norm_backward_10_output.0.npy +│ ............ +└── npu + ├── native_batch_norm_backward_10_input.0.npy + ............ +``` -- Gitee From ae6fbea436d510483d37168e9b63243f7ec0f150 Mon Sep 17 00:00:00 2001 From: user_10012209 <734267852@qq.com> Date: Wed, 22 Nov 2023 18:16:24 +0800 Subject: [PATCH 2/7] =?UTF-8?q?[api=5Faccuracy=5Fchecker&ptdbg=5Fascend]?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=89=8B=E5=86=8C=E4=BC=98=E5=8C=96&?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=90=88=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...12\237\350\203\275\350\257\264\346\230\216_v3.0.md" | 10 +++++++--- ...237\350\203\275\350\257\264\346\230\216_v4.0.T1.md" | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v3.0.md" "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v3.0.md" index 1dd70c19fa..03ed6bb611 100644 --- "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v3.0.md" +++ "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v3.0.md" @@ -566,7 +566,7 @@ configure_hook可配置多种dump模式,示例如下: 仅支持NPU环境。 -- 示例11:dump指定API的ACL级别溢出数据 +- 示例11:dump溢出API的ACL级别数据 ```python debugger.configure_hook(mode="acl", acl_config="./dump.json") @@ -615,6 +615,7 @@ debugger.stop() ```python from ptdbg_ascend import * debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump", step=[0,2], enable_dataloader=True) + # 请勿将以上初始化流程插入到循环代码中 ``` - 示例2:开启溢出检测dump @@ -622,6 +623,7 @@ debugger.stop() ```python from ptdbg_ascend import * debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check", step=[0,2], enable_dataloader=True) + # 请勿将以上初始化流程插入到循环代码中 ``` ### 示例代码(手动模式) @@ -632,7 +634,8 @@ debugger.stop() ```python from ptdbg_ascend import * - debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump") + debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump", step=[0]) + # 请勿将以上初始化流程插入到循环代码中 # 模型初始化 # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop() @@ -653,7 +656,8 @@ debugger.stop() ```python from ptdbg_ascend import * - debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check") + debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check", step=[0]) + # 请勿将以上初始化流程插入到循环代码中 # 模型初始化 # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop() diff --git "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T1.md" "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T1.md" index 1d046591f2..20c61de585 100644 --- "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T1.md" +++ "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T1.md" @@ -566,7 +566,7 @@ configure_hook可配置多种dump模式,示例如下: 仅支持NPU环境。 -- 示例11:dump指定API的ACL级别溢出数据 +- 示例11:dump溢出API的ACL级别数据 ```python debugger.configure_hook(mode="acl", acl_config="./dump.json") @@ -615,6 +615,7 @@ debugger.stop() ```python from ptdbg_ascend import * debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump", step=[0,2], enable_dataloader=True) + # 请勿将以上初始化流程插入到循环代码中 ``` - 示例2:开启溢出检测dump @@ -622,6 +623,7 @@ debugger.stop() ```python from ptdbg_ascend import * debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check", step=[0,2], enable_dataloader=True) + # 请勿将以上初始化流程插入到循环代码中 ``` ### 示例代码(手动模式) @@ -632,7 +634,8 @@ debugger.stop() ```python from ptdbg_ascend import * - debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump") + debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="dump", step=[0]) + # 请勿将以上初始化流程插入到循环代码中 # 模型初始化 # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop() @@ -653,7 +656,8 @@ debugger.stop() ```python from ptdbg_ascend import * - debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check") + debugger = PrecisionDebugger(dump_path="./dump_path", hook_name="overflow_check", step=[0]) + # 请勿将以上初始化流程插入到循环代码中 # 模型初始化 # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop() -- Gitee From d7b1be10147f3d89f96856e120e1fa3c4adeeb47 Mon Sep 17 00:00:00 2001 From: user_10012209 <734267852@qq.com> Date: Thu, 23 Nov 2023 14:59:53 +0800 Subject: [PATCH 3/7] =?UTF-8?q?[api=5Faccuracy=5Fchecker&ptdbg=5Fascend]?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=89=8B=E5=86=8C=E4=BC=98=E5=8C=96&?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=90=88=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/api_accuracy_checker/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/README.md b/debug/accuracy_tools/api_accuracy_checker/README.md index eceb7fc870..d269264ecd 100644 --- a/debug/accuracy_tools/api_accuracy_checker/README.md +++ b/debug/accuracy_tools/api_accuracy_checker/README.md @@ -11,23 +11,23 @@ Ascend模型精度预检工具能在昇腾NPU上扫描用户训练模型中所 3. 支持随机生成模式和真实数据模式 4. 单API测试,排除整网中的累计误差问题 -## 使用方式 - -1. 安装预检工具 +## 工具安装 - 将att仓代码下载到本地,并配置环境变量。假设下载后att仓路径为 $ATT_HOME,环境变量应配置为: +1. 将att仓代码下载到本地,并配置环境变量。假设下载后att仓路径为 $ATT_HOME,环境变量应配置为: ```bash export PYTHONPATH=$PYTHONPATH:$ATT_HOME/debug/accuracy_tools/ ``` - 安装依赖tqdm、rich、pyyaml +2. 安装依赖tqdm、rich、pyyaml ```bash pip3 install tqdm rich pyyaml ``` -2. 在训练脚本(如main.py)中加入以下代码导入工具dump模块,启动训练即可自动抓取网络所有API信息 +## 使用方式 + +1. 在训练脚本(如main.py)中加入以下代码导入工具dump模块,启动训练即可自动抓取网络所有API信息 - 如果训练脚本是通过torch.utils.data.dataloader方式加载数据,就可以在训练脚本中加入以下代码导入工具dump模块,启动训练即可自动抓取网络所有API信息 -- Gitee From bcc17d021f550aebb00007c03ae242051fb2b40c Mon Sep 17 00:00:00 2001 From: user_10012209 <734267852@qq.com> Date: Mon, 27 Nov 2023 08:57:45 +0800 Subject: [PATCH 4/7] =?UTF-8?q?[api=5Faccuracy=5Fchecker&ptdbg=5Fascend]?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=89=8B=E5=86=8C=E4=BC=98=E5=8C=96&?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=90=88=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...45\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" index ceddf9bd0b..77134afff2 100644 --- "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" +++ "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" @@ -1232,7 +1232,7 @@ if __name__ == "__main__": # 注册工具 set_dump_path("./dump_data/npu") - set_dump_wwitch("ON") + set_dump_witch("ON") register_hook(module, acc_cmp_dump) x = torch.randn(2, 2) @@ -1242,7 +1242,7 @@ if __name__ == "__main__": module_dump_end() # 结束模块级精度数据dump loss = out.sum() loss.bachward() - set_dump_wwitch("OFF") + set_dump_witch("OFF") ``` ## dump数据存盘说明 -- Gitee From 3378885d95abf36fd85da7e0162836750017cc77 Mon Sep 17 00:00:00 2001 From: user_10012209 <734267852@qq.com> Date: Mon, 27 Nov 2023 10:55:43 +0800 Subject: [PATCH 5/7] =?UTF-8?q?[api=5Faccuracy=5Fchecker&ptdbg=5Fascend]?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=89=8B=E5=86=8C=E4=BC=98=E5=8C=96&?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=90=88=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/api_accuracy_checker/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/README.md b/debug/accuracy_tools/api_accuracy_checker/README.md index d269264ecd..72125bbc96 100644 --- a/debug/accuracy_tools/api_accuracy_checker/README.md +++ b/debug/accuracy_tools/api_accuracy_checker/README.md @@ -68,14 +68,14 @@ Ascend模型精度预检工具能在昇腾NPU上扫描用户训练模型中所 ```Python from api_accuracy_checker.dump import msCheckerConfig - msCheckerConfig.update_config(dump_path="my/dump/path", real_data=True, target_iter=1) + msCheckerConfig.update_config(dump_path="my/dump/path", real_data=True, target_iter=[1]) ``` - | 参数名称 | 说明 | 是否必选 | - | ----------------- | ------------------------------------------------------------ | -------- | - | dump_path | 设置dump路径,须为已存在目录,默认为当前目录。 | 否 | - | real_data | 真实数据模式,可取值True或False,默认为False,配置为True后开启真实数据模式,dump信息增加forward_real_data和backward_real_data目录,目录下保存每个API输入的具体数值。开启真实数据模式目前仅支持单卡,且会存盘较多数据,可能对磁盘空间有较大冲击。 | 否 | - | target_iter | 指定dump某个step的数据,默认为1,仅支持dump1个step,须指定为训练脚本中存在的step。 | 否 | + | 参数名称 | 说明 | 是否必选 | + | ----------- | ------------------------------------------------------------ | -------- | + | dump_path | 设置dump路径,须为已存在目录,默认为当前目录。 | 否 | + | real_data | 真实数据模式,可取值True或False,默认为False,配置为True后开启真实数据模式,dump信息增加forward_real_data和backward_real_data目录,目录下保存每个API输入的具体数值。开启真实数据模式目前仅支持单卡,且会存盘较多数据,可能对磁盘空间有较大冲击。 | 否 | + | target_iter | 指定dump某个step的数据,默认为[1],须指定为训练脚本中存在的step。target_iter为list格式,可配置逐个step,例如:target_iter=[1,2,3];也可以配置step范围,例如:target_iter=list(range(1,10)),表示dump第1到第10个step。 | 否 | 3. 将API信息输入给run_ut模块运行精度检测并比对,运行如下命令: -- Gitee From 2ca27b0b948a9829135bf63fdee64d94992022c2 Mon Sep 17 00:00:00 2001 From: user_10012209 <734267852@qq.com> Date: Wed, 29 Nov 2023 17:21:11 +0800 Subject: [PATCH 6/7] =?UTF-8?q?[ascend=5Fptdbg]=E5=AE=89=E8=A3=85=E6=89=8B?= =?UTF-8?q?=E5=86=8C=E6=96=B0=E5=A2=9E4.0.T2=E5=8C=85=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/ptdbg_ascend/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debug/accuracy_tools/ptdbg_ascend/README.md b/debug/accuracy_tools/ptdbg_ascend/README.md index 40325fa550..80a9da216c 100644 --- a/debug/accuracy_tools/ptdbg_ascend/README.md +++ b/debug/accuracy_tools/ptdbg_ascend/README.md @@ -10,6 +10,7 @@ | ptdbg_ascend版本 | 发布日期 | 支持PyTorch版本 | 下载链接 | 参考指南 | 校验码 | | ---------------- | ---------- | -------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | + | 4.0.T2 | 2023-11-29 | 1.11.0/2.0/2.1 | [ptdbg_ascend-4.0.T2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/package/ptdbg_ascend/4.0/ptdbg_ascend-4.0.T2-py3-none-any.whl) | [ptdbg_ascend精度工具功能说明_v4.0.T2](doc/ptdbg_ascend精度工具功能说明_v4.0.T2.md) | d7d8a5e6e75b488e5b476532546bbef8af9e5ac0988e00a0d09118d7854d66ea | | 4.0.T1 | 2023-11-09 | 1.11.0/2.0/2.1 | [ptdbg_ascend-4.0.T1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/package/ptdbg_ascend/4.0/ptdbg_ascend-4.0.T1-py3-none-any.whl) | [ptdbg_ascend精度工具功能说明_v4.0.T1](doc/ptdbg_ascend精度工具功能说明_v4.0.T1.md) | 2a3dd23c9573fbd6b78c128cbfcd9f2fdf09b66d0ca5619e4095781d3ba5761c | | 3.0 | 2023-10-16 | 1.8.1/1.11.0/2.0/2.1 | [ptdbg_ascend-3.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/package/ptdbg_ascend/3.0/ptdbg_ascend-3.0-py3-none-any.whl) | [ptdbg_ascend精度工具功能说明_v3.0](doc/ptdbg_ascend精度工具功能说明_v3.0.md) | eb177ec795f8ae8b0c937a3cf543914f535bb64c76ba2e520fc6f0456ff6740b | | 2.0 | 2023-7-07 | 1.8.1/1.11.0/2.0 | [ptdbg_ascend-2.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/package/ptdbg_ascend/2.0/ptdbg_ascend-2.0-py3-none-any.whl) | [ptdbg_ascend精度工具功能说明_v2.0](doc/ptdbg_ascend精度工具功能说明_v2.0.md) | 85e046f133f0f40ed660337ce8207249b1dac47ac668910625bea49809f31d66 | @@ -117,6 +118,7 @@ ptdbg_ascend精度工具的安装方式包括:**下载whl包安装**和**源 | ptdbg_ascend版本 | 发布日期 | 支持PyTorch版本 | 下载链接 | 参考指南 | 校验码 | | ---------------- | ---------- | -------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | + | 4.0.T2 | 2023-11-29 | 1.11.0/2.0/2.1 | [ptdbg_ascend-4.0.T2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/package/ptdbg_ascend/4.0/ptdbg_ascend-4.0.T2-py3-none-any.whl) | [ptdbg_ascend精度工具功能说明_v4.0.T2](doc/ptdbg_ascend精度工具功能说明_v4.0.T2.md) | d7d8a5e6e75b488e5b476532546bbef8af9e5ac0988e00a0d09118d7854d66ea | | 4.0.T1 | 2023-11-09 | 1.11.0/2.0/2.1 | [ptdbg_ascend-4.0.T1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/package/ptdbg_ascend/4.0/ptdbg_ascend-4.0.T1-py3-none-any.whl) | [ptdbg_ascend精度工具功能说明_v4.0.T1](doc/ptdbg_ascend精度工具功能说明_v4.0.T1.md) | 2a3dd23c9573fbd6b78c128cbfcd9f2fdf09b66d0ca5619e4095781d3ba5761c | | 3.0 | 2023-10-16 | 1.8.1/1.11.0/2.0/2.1 | [ptdbg_ascend-3.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/package/ptdbg_ascend/3.0/ptdbg_ascend-3.0-py3-none-any.whl) | [ptdbg_ascend精度工具功能说明_v3.0](doc/ptdbg_ascend精度工具功能说明_v3.0.md) | eb177ec795f8ae8b0c937a3cf543914f535bb64c76ba2e520fc6f0456ff6740b | | 2.0 | 2023-7-07 | 1.8.1/1.11.0/2.0 | [ptdbg_ascend-2.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/package/ptdbg_ascend/2.0/ptdbg_ascend-2.0-py3-none-any.whl) | [ptdbg_ascend精度工具功能说明_v2.0](doc/ptdbg_ascend精度工具功能说明_v2.0.md) | 85e046f133f0f40ed660337ce8207249b1dac47ac668910625bea49809f31d66 | -- Gitee From 64c85ea126d415485faa2058d25c621c90a540c0 Mon Sep 17 00:00:00 2001 From: user_10012209 <734267852@qq.com> Date: Fri, 1 Dec 2023 17:36:52 +0800 Subject: [PATCH 7/7] =?UTF-8?q?[api=5Faccuracy=5Fchecker&ptdbg=5Fascend]?= =?UTF-8?q?=E6=A3=80=E8=A7=86=E6=84=8F=E8=A7=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/api_accuracy_checker/README.md | 2 +- ...\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/README.md b/debug/accuracy_tools/api_accuracy_checker/README.md index 72125bbc96..7a5bc61132 100644 --- a/debug/accuracy_tools/api_accuracy_checker/README.md +++ b/debug/accuracy_tools/api_accuracy_checker/README.md @@ -75,7 +75,7 @@ Ascend模型精度预检工具能在昇腾NPU上扫描用户训练模型中所 | ----------- | ------------------------------------------------------------ | -------- | | dump_path | 设置dump路径,须为已存在目录,默认为当前目录。 | 否 | | real_data | 真实数据模式,可取值True或False,默认为False,配置为True后开启真实数据模式,dump信息增加forward_real_data和backward_real_data目录,目录下保存每个API输入的具体数值。开启真实数据模式目前仅支持单卡,且会存盘较多数据,可能对磁盘空间有较大冲击。 | 否 | - | target_iter | 指定dump某个step的数据,默认为[1],须指定为训练脚本中存在的step。target_iter为list格式,可配置逐个step,例如:target_iter=[1,2,3];也可以配置step范围,例如:target_iter=list(range(1,10)),表示dump第1到第10个step。 | 否 | + | target_iter | 指定dump某个step的数据,默认为[1],须指定为训练脚本中存在的step。target_iter为list格式,可配置逐个step,例如:target_iter=[0,1,2];也可以配置step范围,例如:target_iter=list(range(0,9)),表示dump第0到第8个step。 | 否 | 3. 将API信息输入给run_ut模块运行精度检测并比对,运行如下命令: diff --git "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" index 77134afff2..700ab067fd 100644 --- "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" +++ "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T2.md" @@ -451,7 +451,7 @@ PrecisionDebugger(dump_path=None, hook_name=None, rank=None, step=[], enable_dat | dump_path | 设置dump数据目录路径,参数示例:"./dump_path"。
默认在dump_path目录下生成`ptdbg_dump_{version}`目录,并在该目录下生成`dump.pkl`文件以及`dump`数据文件保存目录。
当**configure_hook**函数配置了mode参数时,`dump.pkl`文件以及`dump`数据文件保存目录名称添加mode参数值为前缀,详情请参见“**dump数据存盘说明**”。
未配置dump_path时,也可以通过环境变量ASCEND_WORK_PATH配置dump路径,此时dump数据将落盘在${ASCEND_WORK_PATH}/dump_data下,自定义配置dump_path优先级高于环境变量,dump_path和环境变量需要二选一。 | 否 | | hook_name | dump模式,可取值dump和overflow_check,表示dump和溢出检测功能,二选一。 | 是 | | rank | 指定对某张卡上的数据进行dump或溢出检测,默认未配置(表示dump所有卡的数据),须根据实际卡的Rank ID配置。应配置为大于0的正整数,且须根据实际卡的Rank ID配置,若所配置的值大于实际训练所运行的卡的Rank ID,则dump数据为空,比如当前环境Rank ID为0~7,实际训练运行0~3卡,此时若配置Rank ID为4或不存在的10等其他值,此时dump数据为空。 | 否 | -| step | 指定dump某个step的数据,默认未配置,须指定为训练脚本中存在的step。step为list格式,可配置逐个step,例如:step=[1,2,3];也可以配置step范围,例如:step=list(range(1,10)),表示dump第1到第10个step。 | 否 | +| step | 指定dump某个step的数据,默认未配置,须指定为训练脚本中存在的step。step为list格式,可配置逐个step,例如:step=[0,1,2];也可以配置step范围,例如:step=list(range(0,9)),表示dump第0到第8个step。 | 否 | | enable_dataloader | 自动控制开关,可取值True(开启)或False(关闭),默认为False。配置为True后自动识别dump step参数指定的迭代,并在该迭代执行完成后退出训练,此时start和stop函数可不配置,开启该开关要求训练脚本是通过torch.utils.data.dataloader方式加载数据;配置为False则需要配置start和stop函数,并在最后一个stop函数后或一个step结束的位置添加debugger.step()。 | 否 | ### configure_hook函数(可选) @@ -1232,7 +1232,7 @@ if __name__ == "__main__": # 注册工具 set_dump_path("./dump_data/npu") - set_dump_witch("ON") + set_dump_switch("ON") register_hook(module, acc_cmp_dump) x = torch.randn(2, 2) @@ -1242,7 +1242,7 @@ if __name__ == "__main__": module_dump_end() # 结束模块级精度数据dump loss = out.sum() loss.bachward() - set_dump_witch("OFF") + set_dump_switch("OFF") ``` ## dump数据存盘说明 -- Gitee