mindstudio-probe 1.0.3__py3-none-any.whl → 1.0.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/LICENSE +201 -201
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/METADATA +36 -34
- mindstudio_probe-1.0.4.dist-info/RECORD +276 -0
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/WHEEL +1 -1
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/entry_points.txt +1 -0
- msprobe/README.md +101 -237
- msprobe/{config/config.json → config.json} +49 -49
- msprobe/core/advisor/advisor.py +124 -124
- msprobe/core/advisor/advisor_const.py +59 -59
- msprobe/core/advisor/advisor_result.py +58 -58
- msprobe/core/common/const.py +341 -318
- msprobe/core/common/exceptions.py +99 -99
- msprobe/core/common/{file_check.py → file_utils.py} +478 -283
- msprobe/core/common/log.py +76 -69
- msprobe/core/common/utils.py +385 -616
- msprobe/core/common_config.py +85 -71
- msprobe/core/compare/acc_compare.py +299 -298
- msprobe/core/compare/check.py +95 -95
- msprobe/core/compare/compare_cli.py +49 -49
- msprobe/core/compare/highlight.py +223 -222
- msprobe/core/compare/multiprocessing_compute.py +149 -149
- msprobe/core/compare/npy_compare.py +295 -295
- msprobe/core/compare/utils.py +430 -429
- msprobe/core/data_dump/data_collector.py +154 -144
- msprobe/core/data_dump/data_processor/base.py +314 -293
- msprobe/core/data_dump/data_processor/factory.py +59 -59
- msprobe/core/data_dump/data_processor/mindspore_processor.py +186 -198
- msprobe/core/data_dump/data_processor/pytorch_processor.py +366 -389
- msprobe/core/data_dump/json_writer.py +96 -116
- msprobe/core/data_dump/scope.py +178 -178
- msprobe/core/grad_probe/constant.py +70 -70
- msprobe/core/grad_probe/grad_compare.py +171 -175
- msprobe/core/grad_probe/utils.py +64 -52
- msprobe/docs/01.installation.md +89 -0
- msprobe/docs/02.config_introduction.md +165 -0
- msprobe/docs/03.config_examples.md +247 -0
- msprobe/docs/04.acl_config_examples.md +76 -0
- msprobe/docs/05.data_dump_PyTorch.md +198 -0
- msprobe/docs/06.data_dump_MindSpore.md +243 -0
- msprobe/docs/07.accuracy_checker_PyTorch.md +274 -0
- msprobe/docs/08.accuracy_checker_online_PyTorch.md +198 -0
- msprobe/docs/09.accuracy_checker_MindSpore.md +68 -0
- msprobe/docs/10.accuracy_compare_PyTorch.md +245 -0
- msprobe/docs/11.accuracy_compare_MindSpore.md +202 -0
- msprobe/docs/12.overflow_check_PyTorch.md +79 -0
- msprobe/docs/13.overflow_check_MindSpore.md +31 -0
- msprobe/{pytorch/doc/parse_tool.md → docs/14.data_parse_PyTorch.md} +283 -286
- msprobe/docs/15.free_benchmarking_PyTorch.md +164 -0
- msprobe/{doc/grad_probe/grad_probe.md → docs/17.grad_probe.md} +207 -207
- msprobe/docs/FAQ_PyTorch.md +177 -0
- msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +146 -0
- msprobe/docs/img/free_benchmark_framework.png +0 -0
- msprobe/mindspore/__init__.py +1 -1
- msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +254 -245
- msprobe/mindspore/api_accuracy_checker/api_info.py +69 -69
- msprobe/mindspore/api_accuracy_checker/api_runner.py +155 -151
- msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +196 -196
- msprobe/mindspore/api_accuracy_checker/cmd_parser.py +6 -0
- msprobe/mindspore/api_accuracy_checker/compute_element.py +238 -223
- msprobe/mindspore/api_accuracy_checker/main.py +8 -15
- msprobe/mindspore/api_accuracy_checker/type_mapping.py +113 -113
- msprobe/mindspore/api_accuracy_checker/utils.py +79 -62
- msprobe/mindspore/cell_processor.py +34 -34
- msprobe/mindspore/common/const.py +106 -87
- msprobe/mindspore/common/log.py +37 -37
- msprobe/mindspore/common/utils.py +81 -57
- msprobe/mindspore/compare/distributed_compare.py +75 -75
- msprobe/mindspore/compare/ms_compare.py +219 -117
- msprobe/mindspore/compare/ms_graph_compare.py +348 -317
- msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -399
- msprobe/mindspore/debugger/debugger_config.py +66 -74
- msprobe/mindspore/debugger/precision_debugger.py +126 -107
- msprobe/mindspore/dump/dump_tool_factory.py +35 -35
- msprobe/mindspore/dump/hook_cell/api_registry.py +118 -104
- msprobe/mindspore/dump/hook_cell/hook_cell.py +55 -53
- msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +922 -925
- msprobe/mindspore/dump/hook_cell/wrap_api.py +113 -0
- msprobe/mindspore/dump/jit_dump.py +72 -56
- msprobe/mindspore/dump/kernel_graph_dump.py +59 -60
- msprobe/mindspore/dump/kernel_kbyk_dump.py +64 -65
- msprobe/mindspore/free_benchmark/api_pynative_self_check.py +116 -116
- msprobe/mindspore/free_benchmark/common/config.py +12 -12
- msprobe/mindspore/free_benchmark/common/handler_params.py +17 -17
- msprobe/mindspore/free_benchmark/common/utils.py +71 -71
- msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -842
- msprobe/mindspore/free_benchmark/decorator/dec_forward.py +43 -42
- msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +107 -107
- msprobe/mindspore/free_benchmark/handler/base_handler.py +90 -90
- msprobe/mindspore/free_benchmark/handler/check_handler.py +41 -41
- msprobe/mindspore/free_benchmark/handler/fix_handler.py +36 -36
- msprobe/mindspore/free_benchmark/handler/handler_factory.py +21 -21
- msprobe/mindspore/free_benchmark/perturbation/add_noise.py +67 -67
- msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +21 -21
- msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +63 -63
- msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +51 -0
- msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +35 -34
- msprobe/mindspore/free_benchmark/perturbation/no_change.py +12 -12
- msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +29 -27
- msprobe/mindspore/free_benchmark/self_check_tool_factory.py +33 -33
- msprobe/mindspore/grad_probe/global_context.py +90 -91
- msprobe/mindspore/grad_probe/grad_analyzer.py +231 -231
- msprobe/mindspore/grad_probe/grad_monitor.py +27 -27
- msprobe/mindspore/grad_probe/grad_stat_csv.py +131 -131
- msprobe/mindspore/grad_probe/hook.py +94 -92
- msprobe/mindspore/grad_probe/utils.py +29 -28
- msprobe/mindspore/ms_config.py +128 -126
- msprobe/mindspore/overflow_check/kernel_graph_overflow_check.py +44 -45
- msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +34 -34
- msprobe/mindspore/runtime.py +4 -4
- msprobe/mindspore/service.py +378 -354
- msprobe/mindspore/task_handler_factory.py +24 -24
- msprobe/msprobe.py +105 -107
- msprobe/pytorch/__init__.py +3 -3
- msprobe/pytorch/api_accuracy_checker/common/config.py +53 -55
- msprobe/pytorch/api_accuracy_checker/common/utils.py +214 -165
- msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +213 -213
- msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +606 -581
- msprobe/pytorch/api_accuracy_checker/compare/api_precision_standard.yaml +132 -132
- msprobe/pytorch/api_accuracy_checker/compare/api_precision_threshold.yaml +390 -390
- msprobe/pytorch/api_accuracy_checker/compare/compare.py +386 -381
- msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +73 -73
- msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +245 -244
- msprobe/pytorch/api_accuracy_checker/config.yaml +10 -10
- msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +335 -332
- msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +200 -199
- msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +133 -134
- msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +592 -581
- msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +70 -74
- msprobe/pytorch/api_accuracy_checker/run_ut/torch_ut_setting.json +7 -4
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +197 -202
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +325 -324
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +204 -204
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +219 -218
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +10 -10
- msprobe/pytorch/bench_functions/__init__.py +15 -15
- msprobe/pytorch/bench_functions/apply_adam_w.py +28 -28
- msprobe/pytorch/bench_functions/confusion_transpose.py +19 -19
- msprobe/pytorch/bench_functions/fast_gelu.py +55 -55
- msprobe/pytorch/bench_functions/layer_norm_eval.py +6 -6
- msprobe/pytorch/bench_functions/linear.py +12 -12
- msprobe/pytorch/bench_functions/matmul_backward.py +48 -48
- msprobe/pytorch/bench_functions/npu_fusion_attention.py +509 -421
- msprobe/pytorch/bench_functions/rms_norm.py +15 -15
- msprobe/pytorch/bench_functions/rotary_mul.py +52 -52
- msprobe/pytorch/bench_functions/scaled_mask_softmax.py +26 -26
- msprobe/pytorch/bench_functions/swiglu.py +55 -55
- msprobe/pytorch/common/__init__.py +2 -2
- msprobe/pytorch/common/compare_script.template +14 -14
- msprobe/pytorch/common/log.py +20 -31
- msprobe/pytorch/common/parse_json.py +39 -39
- msprobe/pytorch/common/utils.py +305 -300
- msprobe/pytorch/compare/distributed_compare.py +66 -66
- msprobe/pytorch/compare/mapping.yaml +607 -607
- msprobe/pytorch/compare/match.py +34 -33
- msprobe/pytorch/compare/pt_compare.py +50 -40
- msprobe/pytorch/debugger/debugger_config.py +95 -95
- msprobe/pytorch/debugger/precision_debugger.py +125 -125
- msprobe/pytorch/free_benchmark/__init__.py +8 -8
- msprobe/pytorch/free_benchmark/common/constant.py +70 -70
- msprobe/pytorch/free_benchmark/common/counter.py +71 -71
- msprobe/pytorch/free_benchmark/common/enums.py +37 -37
- msprobe/pytorch/free_benchmark/common/params.py +129 -129
- msprobe/pytorch/free_benchmark/common/utils.py +102 -102
- msprobe/pytorch/free_benchmark/compare/grad_saver.py +179 -179
- msprobe/pytorch/free_benchmark/compare/single_benchmark.py +104 -104
- msprobe/pytorch/free_benchmark/main.py +105 -105
- msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +13 -13
- msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +41 -41
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +90 -90
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +104 -104
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +63 -63
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +68 -68
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +28 -28
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +45 -45
- msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +19 -19
- msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +217 -217
- msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +39 -39
- msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +23 -23
- msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +30 -30
- msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +170 -170
- msprobe/pytorch/function_factory.py +76 -75
- msprobe/pytorch/functional/dump_module.py +39 -39
- msprobe/pytorch/grad_probe/grad_monitor.py +91 -90
- msprobe/pytorch/grad_probe/grad_stat_csv.py +128 -128
- msprobe/pytorch/hook_module/api_registry.py +161 -161
- msprobe/pytorch/hook_module/hook_module.py +120 -120
- msprobe/pytorch/hook_module/support_wrap_ops.yaml +1879 -1877
- msprobe/pytorch/hook_module/utils.py +30 -29
- msprobe/pytorch/hook_module/wrap_aten.py +110 -110
- msprobe/pytorch/hook_module/wrap_distributed.py +78 -78
- msprobe/pytorch/hook_module/wrap_functional.py +105 -105
- msprobe/pytorch/hook_module/wrap_npu_custom.py +93 -84
- msprobe/pytorch/hook_module/wrap_tensor.py +71 -71
- msprobe/pytorch/hook_module/wrap_torch.py +86 -86
- msprobe/pytorch/hook_module/wrap_vf.py +62 -62
- msprobe/pytorch/module_processer.py +138 -138
- msprobe/pytorch/online_dispatch/__init__.py +20 -20
- msprobe/pytorch/online_dispatch/compare.py +236 -236
- msprobe/pytorch/online_dispatch/dispatch.py +271 -271
- msprobe/pytorch/online_dispatch/dump_compare.py +155 -156
- msprobe/pytorch/online_dispatch/single_compare.py +391 -391
- msprobe/pytorch/online_dispatch/torch_ops_config.yaml +49 -49
- msprobe/pytorch/online_dispatch/utils.py +130 -146
- msprobe/pytorch/parse.py +4 -4
- msprobe/pytorch/parse_tool/cli.py +32 -32
- msprobe/pytorch/parse_tool/lib/compare.py +260 -271
- msprobe/pytorch/parse_tool/lib/config.py +52 -52
- msprobe/pytorch/parse_tool/lib/file_desc.py +31 -31
- msprobe/pytorch/parse_tool/lib/interactive_cli.py +102 -102
- msprobe/pytorch/parse_tool/lib/parse_exception.py +54 -54
- msprobe/pytorch/parse_tool/lib/parse_tool.py +158 -158
- msprobe/pytorch/parse_tool/lib/utils.py +316 -321
- msprobe/pytorch/parse_tool/lib/visualization.py +85 -91
- msprobe/pytorch/pt_config.py +188 -187
- msprobe/pytorch/service.py +246 -252
- mindstudio_probe-1.0.3.dist-info/RECORD +0 -272
- msprobe/config/README.md +0 -539
- msprobe/mindspore/doc/compare.md +0 -58
- msprobe/mindspore/doc/dump.md +0 -217
- msprobe/mindspore/dump/hook_cell/wrap_functional.py +0 -91
- msprobe/mindspore/dump/hook_cell/wrap_tensor.py +0 -63
- msprobe/pytorch/doc/FAQ.md +0 -193
- msprobe/pytorch/doc/api_accuracy_checker.md +0 -313
- msprobe/pytorch/doc/api_accuracy_checker_online.md +0 -187
- msprobe/pytorch/doc/dump.md +0 -260
- msprobe/pytorch/doc/msprobe/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/206/320/245/342/226/221/321/206/320/235/320/276dump/321/206/320/260/320/227/321/205/320/227/320/226/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -182
- msprobe/pytorch/doc/ptdbg_ascend_compare.md +0 -240
- msprobe/pytorch/doc/ptdbg_ascend_overview.md +0 -68
- msprobe/pytorch/doc/ptdbg_ascend_quickstart.md +0 -381
- msprobe/pytorch/doc/run_overflow_check.md +0 -25
- msprobe/pytorch/doc//321/205/320/254/320/270/321/207/342/225/221/342/224/220/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/206/320/277/320/244/321/205/320/277/342/225/243.md +0 -90
- msprobe/pytorch/doc//321/206/320/247/320/260/321/206/320/260/320/227/321/206/320/255/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/205/320/254/342/225/221/321/206/320/251/320/277/321/211/320/272/320/234/321/210/320/277/320/221/321/205/320/242/320/234/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -151
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/top_level.txt +0 -0
- /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_1.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_2.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_3.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_4.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_1.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_2.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_3.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_4.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_5.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_6.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_7.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_8.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/YOLOV5S_1.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/YOLOV5S_2.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/accuracy_checking_details.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/accuracy_checking_result.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/api_precision_compare_details.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/api_precision_compare_result.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/auto_analyze_log.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/compare_result_pkl.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/compare_result_pkl_md5.png.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/cpu_info.png +0 -0
- /msprobe/{config → docs}/img/free_benchmark.png +0 -0
- /msprobe/{doc/grad_probe/img/image-1.png → docs/img/grad_probe_image-1.png} +0 -0
- /msprobe/{doc/grad_probe/img/image-2.png → docs/img/grad_probe_image-2.png} +0 -0
- /msprobe/{doc/grad_probe/img/image-3.png → docs/img/grad_probe_image-3.png} +0 -0
- /msprobe/{doc/grad_probe/img/image-4.png → docs/img/grad_probe_image-4.png} +0 -0
- /msprobe/{doc/grad_probe/img/image.png → docs/img/grad_probe_image.png} +0 -0
- /msprobe/{pytorch/doc → docs}/img/module_compare.png +0 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# 1 精度预检工具
|
|
2
|
+
|
|
3
|
+
1. 预检工具在 dump 和 run_ut 的过程中,是否需要同时开启或关闭 jit 编译(jit_compile)?
|
|
4
|
+
|
|
5
|
+
答:是。
|
|
6
|
+
|
|
7
|
+
2. 预检工具对于 type_as 这类涉及数据类型转换操作的 API,是否具有参考性?
|
|
8
|
+
|
|
9
|
+
由于这类 API 在 CPU 侧存在精度先提升后下降的操作,因此这类 API 的有效性的参考价值有限。
|
|
10
|
+
|
|
11
|
+
3. run ut 过程中出现报错:ERROR: Got unsupported ScalarType BFloat16。
|
|
12
|
+
|
|
13
|
+
答:请使用最新版本的工具。
|
|
14
|
+
|
|
15
|
+
4. Dropout 算子,CPU 和 NPU 的随机应该不一样,为什么结果比对是一致的?
|
|
16
|
+
|
|
17
|
+
答:这个结果是正常的,工具对该算子有特殊处理,只判定位置为 0 的位置比例大约和设定 p 值相当。
|
|
18
|
+
|
|
19
|
+
5. 为什么浮点型数据 bench 和 CPU 的 dtype 不一致?
|
|
20
|
+
|
|
21
|
+
答:对于 fp16 的数据,CPU 会上升一个精度 fp32 去计算,这是和算子那边对齐的精度结论,CPU 用更高精度去计算会更接近真实值。
|
|
22
|
+
|
|
23
|
+
6. 添加预检工具后截取操作报错:`IndexError: too many indices for tensor of dimension x` 或 `TypeError: len() of a 0-d tensor`。
|
|
24
|
+
|
|
25
|
+
答:注释工具目录 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 文件中 Tensor: 下的 `- __getitem__`,工具会跳过采集该 API。如果是需要 dump 关键位置 API 也可以考虑根据报错堆栈信息注释引发报错的类型检查。
|
|
26
|
+
|
|
27
|
+
7. Tensor 魔法函数具体对应什么操作?
|
|
28
|
+
|
|
29
|
+
答:
|
|
30
|
+
|
|
31
|
+
| Tensor魔法函数 | 具体操作 |
|
|
32
|
+
| --------------- | ---------------- |
|
|
33
|
+
| `__add__` | + |
|
|
34
|
+
| `__and__` | & |
|
|
35
|
+
| `__bool__` | 返回 Tensor 布尔值 |
|
|
36
|
+
| `__div__` | / |
|
|
37
|
+
| `__eq__` | == |
|
|
38
|
+
| `__ge__` | >= |
|
|
39
|
+
| `__gt__` | > |
|
|
40
|
+
| `__iadd__` | += |
|
|
41
|
+
| `__iand__` | &= |
|
|
42
|
+
| `__idiv__` | /= |
|
|
43
|
+
| `__ifloordiv__` | //= |
|
|
44
|
+
| `__ilshift__` | <<= |
|
|
45
|
+
| `__imod__` | %= |
|
|
46
|
+
| `__imul__` | *= |
|
|
47
|
+
| `__ior__` | \|= |
|
|
48
|
+
| `__irshift__` | >>= |
|
|
49
|
+
| `__isub__` | -= |
|
|
50
|
+
| `__ixor__` | ^= |
|
|
51
|
+
| `__lshift__` | << |
|
|
52
|
+
| `__matmul__` | 矩阵乘法 |
|
|
53
|
+
| `__mod__` | % |
|
|
54
|
+
| `__mul__` | * |
|
|
55
|
+
| `__nonzero__` | 同`__bool__` |
|
|
56
|
+
| `__or__` | \| |
|
|
57
|
+
| `__radd__` | +(反向) |
|
|
58
|
+
| `__rmul__` | *(反向) |
|
|
59
|
+
| `__rshift__` | >> |
|
|
60
|
+
| `__sub__` | - |
|
|
61
|
+
| `__truediv__` | 同`__div__` |
|
|
62
|
+
| `__xor__` | ^ |
|
|
63
|
+
|
|
64
|
+
# 2 精度比对工具
|
|
65
|
+
|
|
66
|
+
## 2.1 工具使用
|
|
67
|
+
|
|
68
|
+
### 2.1.1 dump 指定融合算子
|
|
69
|
+
|
|
70
|
+
数据采集当前支持融合算子的输入输出,需要在 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 中添加,比如以下代码段调用的 softmax 融合算子。
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
def npu_forward_fused_softmax(self, input_, mask):
|
|
74
|
+
resl = torch_npu.npu_scaled_masked_softmax(input_, mask, self.scale, False)
|
|
75
|
+
return resl
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
如果需要 dump 其中调用的 npu_scaled_masked_softmax 算子的输入输出信息,需要在 `support_wrap_ops.yaml` 中的 `torch_npu: ` 中自行添加该融合算子:
|
|
79
|
+
|
|
80
|
+
```yaml
|
|
81
|
+
- npu_scaled_masked_softmax
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
(npu_scaled_masked_softmax 融合算子工具已支持 dump,本例仅供参考)。
|
|
85
|
+
|
|
86
|
+
## 2.2 常见问题
|
|
87
|
+
|
|
88
|
+
1. 在同一个目录多次执行 dump 会冲突吗?
|
|
89
|
+
|
|
90
|
+
答:会,同一个目录多次 dump,会覆盖上一次结果,可以使用 dump_path 参数修改 dump 目录。
|
|
91
|
+
|
|
92
|
+
2. 如何 dump 算子级的数据?
|
|
93
|
+
|
|
94
|
+
答:需要配置 level 为 L2 模式。
|
|
95
|
+
|
|
96
|
+
3. 工具比对发现 NPU 和标杆数据的 API 无法完全对齐?
|
|
97
|
+
|
|
98
|
+
答:torch 版本和硬件差异属于正常情况。
|
|
99
|
+
|
|
100
|
+
## 2.3 异常情况
|
|
101
|
+
|
|
102
|
+
1. HCCL 报错: error code: EI0006。
|
|
103
|
+
|
|
104
|
+
**故障现象**:使用 msprobe 工具时,报错:error code: EI0006。
|
|
105
|
+
|
|
106
|
+
**故障原因**:CANN 软件版本较低导致不兼容。
|
|
107
|
+
|
|
108
|
+
**故障处理**:升级新版 CANN 软件版本。
|
|
109
|
+
|
|
110
|
+
2. torch_npu._C._clear_overflow_npu() RuntimeError NPU error,error code is 107002。
|
|
111
|
+
|
|
112
|
+
如果运行溢出检测功能遇到这个报错,采取以下解决方法:
|
|
113
|
+
|
|
114
|
+
如果是单卡运行,添加如下代码,0 是卡号,选择自己空闲的卡号。
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
torch.npu.set_device('npu:0')
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
如果多卡运行,请在代码中修改对应卡号,比如进程使用卡号为 {rank} 时可以添加如下代码:
|
|
121
|
+
|
|
122
|
+
```python
|
|
123
|
+
torch.npu.set_device(f'npu:{rank}')
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
如果运行精度比对功能遇到这个报错,尝试安装最新版本的 msprobe。
|
|
127
|
+
|
|
128
|
+
3. dump 得到的 `VF_lstm_99_forward_input.1.0.npy`、`VF_lstm_99_forward_input.1.1.npy` 类似的数据是否正常?
|
|
129
|
+
|
|
130
|
+
带 1.0/1.1/1.2 后缀的 npy 是正常现象,例如,当输入数据为 [[tensor1, tensor2, tensor3]] 会生成这样的后缀。
|
|
131
|
+
|
|
132
|
+
4. 进行 compare 报错:The current file contains stack information, please turn on the stack_mode。
|
|
133
|
+
|
|
134
|
+
在比对脚本中,设置 `stack_mode=True`,例如:
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
from msprobe.pytorch import compare
|
|
138
|
+
dump_result_param={
|
|
139
|
+
"npu_json_path": "./npu_dump/dump.json",
|
|
140
|
+
"bench_json_path": "./gpu_dump/dump.json",
|
|
141
|
+
"stack_json_path": "./npu_dump/stack.json",
|
|
142
|
+
"is_print_compare_log": True
|
|
143
|
+
}
|
|
144
|
+
compare(dump_result_param, output_path="./output", stack_mode=True)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
5. dump 指定反向 API 的 kernel 级别的数据报错:NameError:name 'torch_npu' is not defined。
|
|
148
|
+
|
|
149
|
+
答:如果是 npu 环境,请安装 torch_npu;如果是 gpu 环境,暂不支持 dump 指定 API 的 kernel 级别的数据。
|
|
150
|
+
|
|
151
|
+
6. 配置 dump_path 后,使用工具报错:[ERROR] The file path /home/xxx/dump contains special characters。
|
|
152
|
+
|
|
153
|
+
答:请检查你设置的 dump 绝对路径是否包含特殊字符,确保路径名只包含大小写字母、数字、下划线、斜杠、点和短横线;注意,如果执行脚本的路径为 /home/abc++/,设置的 dump_path="./dump",工具实际校验的路径为绝对路径 /home/abc++/dump,++ 为特殊字符,会引发本条报错。
|
|
154
|
+
|
|
155
|
+
7. 无法 dump matmul 权重的反向梯度数据。
|
|
156
|
+
|
|
157
|
+
答:matmul 期望的输入是二维,当输入不是二维时,会将输入通过 view 操作展成二维,再进行 matmul 运算,因此在反向求导时,backward_hook 能拿到的是 UnsafeViewBackward 这步操作里面数据的梯度信息,取不到 MmBackward 这步操作里面数据的梯度信息,即权重的反向梯度数据。典型的例子有,当 linear 的输入不是二维,且无 bias 时,会调用 output = input.matmul(weight.t()),因此拿不到 linear 层的 weight 的反向梯度数据。
|
|
158
|
+
|
|
159
|
+
8. dump.json 文件中的某些 api 的 dtype 类型为 float16,但是读取此 api 的 npy 文件显示的 dtype 类型为 float32。
|
|
160
|
+
|
|
161
|
+
答:msprobe 工具在 dump 数据时需要将原始数据从 npu to cpu 上再转换为 numpy 类型,npu to cpu 的逻辑和 gpu to cpu 是保持一致的,都存在 dtype 可能从 float16 变为 float32 类型的情况,如果出现 dtype 不一致的问题,最终采集数据的 dtype 以 pkl 文件为准。
|
|
162
|
+
|
|
163
|
+
9. 使用 dataloader 后 raise 异常 Exception("msprobe: exit after iteration {}". format(max(self.config.step)))。
|
|
164
|
+
|
|
165
|
+
答:正常现象,dataloader 通过 raise 结束程序,堆栈信息可忽略。
|
|
166
|
+
|
|
167
|
+
10. 添加 msprobe 工具后截取操作报错:`IndexError: too many indices for tensor of dimension x` 或 `TypeError: len() of a 0-d tensor`。
|
|
168
|
+
|
|
169
|
+
答:注释工具目录 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 文件中 `Tensor: ` 下的 `- __getitem__`,工具会跳过采集该 API。如果是需要采集关键位置 API 也可以考虑根据报错堆栈信息注释引发报错的类型检查。
|
|
170
|
+
|
|
171
|
+
11. 添加 msprobe 工具后 F.gelu 触发 ValueError 报错:`activation_func must be F.gelu`等。
|
|
172
|
+
|
|
173
|
+
答:注释工具目录 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 文件中 `functional: ` 下的 `-gelu`,工具会跳过采集该 API。如果需要采集关键位置 api 也可以考虑根据报错堆栈信息注释引发报错的类型检查。
|
|
174
|
+
|
|
175
|
+
12. 添加 msprobe 工具后触发与 AsStrided 算子相关、或者编译相关的报错,如:`Failed to compile Op [AsStrided]`。
|
|
176
|
+
|
|
177
|
+
答:注释工具目录 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 文件中 `Tensor: `下的 `-t` 和 `- transpose`。
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# 无标杆工具场景验证和性能基线报告
|
|
2
|
+
|
|
3
|
+
## 1 环境信息
|
|
4
|
+
|
|
5
|
+
NPU:Atlas A2 训练系列产品
|
|
6
|
+
|
|
7
|
+
CPU:
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
Torch:2.1.0
|
|
12
|
+
|
|
13
|
+
CANN:8.0.T5
|
|
14
|
+
|
|
15
|
+
除上述环境信息影响性能外,API 的数量、种类以及 Shape 都会对性能产生影响,因此本次选取不同场景网络和不同算子进行测试。
|
|
16
|
+
|
|
17
|
+
## 2 模型信息和性能基线
|
|
18
|
+
|
|
19
|
+
大模型在使用 msprobe 采集数据时,建议先简化模型层数,减少采集数据量。
|
|
20
|
+
|
|
21
|
+
以下场景的性能基线测试数据均为多次测试后取平均值,实际运行时性能数据可能会根据环境状态稍有浮动。
|
|
22
|
+
|
|
23
|
+
### [2.1 ModelLink 模型](https://gitee.com/ascend/ModelLink)
|
|
24
|
+
|
|
25
|
+
NUM_LAYER:1
|
|
26
|
+
|
|
27
|
+
NPU 卡数:1
|
|
28
|
+
|
|
29
|
+
主要数据类型:FLOAT16
|
|
30
|
+
|
|
31
|
+
#### 2.1.1 LLaMA2-7B
|
|
32
|
+
|
|
33
|
+
softmax 算子为 FLOAT32,输入输出大小均为 2G,为模型最大显存开销的 API。在该模型下、对无标杆工具处理模式、插装范围、扰动方式组合下的性能和显存基线进行验证。
|
|
34
|
+
|
|
35
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
36
|
+
|-------|--------|------|-----|-------|---------|--------|-------|--------|
|
|
37
|
+
| / | / | / | / | 0.24 | 13.69 | 1 | 1 | 混合精度模式基线 |
|
|
38
|
+
| check | 前 | ["softmax"] | improve_precision | 0.26 | 13.69 | 1.08 | 1 | softmax 本身为高精度,跳过 |
|
|
39
|
+
| check | 前 | ["softmax"] | add_noise | 0.54 | 19.17 | 2.25 | 1.40 | |
|
|
40
|
+
| check | 前 | ["softmax"] | bit_noise | 0.56 | 19.17 | 2.33 | 1.40 | |
|
|
41
|
+
| check | 前 | ["softmax"] | change_value | 0.48 | 14.9 | 2 | 1.09 | |
|
|
42
|
+
| check | 前 | ["softmax"] | no_change | 0.47 | 14.9 | 1.96 | 1.09 | |
|
|
43
|
+
| check | 前 | ["softmax"] | to_cpu | 26.45 | 22.67 | 110.21 | 1.66 | 不建议整网 |
|
|
44
|
+
| check | 前 | ["matmul"] | improve_precision | 0.57 | 13.69 | 2.38 | 1 | |
|
|
45
|
+
| check | 前 | ["matmul"] | change_value | 0.48 | 13.69 | 2 | 1 | |
|
|
46
|
+
| check | 前 | ["matmul"] | to_cpu | 78.43 | 19.20 | 326.79 | 1.40 | 不建议整网 |
|
|
47
|
+
| check | 前 | [] | improve_precision | 3.45 | 18.79 | 14.37 | 1.37 | |
|
|
48
|
+
| check | 前 | [] | add_noise | 4.67 | 19.17 | 19.46 | 1.40 | |
|
|
49
|
+
| check | 前 | [] | bit_noise | 16.99 | 19.17 | 70.79 | 1.40 | |
|
|
50
|
+
| check | 前 | [] | no_change | 3.22 | 14.90 | 13.42 | 1.09 | |
|
|
51
|
+
| check | 反 | ["softmax"] | improve_precision | 6.23 | 25.69 | 25.96 | 1.88 | 不建议整网 |
|
|
52
|
+
| check | 反 | ["softmax"] | change_value | 22.76 | 25.69 | 94.83 | 1.88 | 不建议整网 |
|
|
53
|
+
| check | 反 | ["softmax"] | to_cpu | 141.71 | 26.19 | 590.46 | 1.91 | 不建议整网 |
|
|
54
|
+
| fix | 前 | ["softmax"] | to_cpu | 9.70 | 16.67 | 40.42 | 1.22 | 不支持整网、不支持反向 |
|
|
55
|
+
| fix | 前 | ["softmax"] | improve_precision | 0.26 | 14.67 | 1.08 | 1.07 | 不支持整网、不支持反向 |
|
|
56
|
+
| 预热 | 前 | [] | improve_precision | 155.07 | 24.79 | 646.13 | 1.81 | 低精度模型基线、只测预热的迭代 |
|
|
57
|
+
| 预热 | 反 | [] | improve_precision | 72.29 | 22.01 | 301.21 | 1.61 | 低精度模型基线、只测预热的迭代,grad_output 为高精度的算子跳过 |
|
|
58
|
+
|
|
59
|
+
#### 2.1.2 Aquila2-7B
|
|
60
|
+
|
|
61
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
62
|
+
|----------|------|-----|---|----|-----|-------|------|-------------|
|
|
63
|
+
| / | / | / | / | 0.17 | 13.66 | 1 | 1 | 混合精度模式基线 |
|
|
64
|
+
| check | 前 | [] | improve_precision | 1.57 | 14.24 | 9.24 | 1.04 | |
|
|
65
|
+
| check | 反 | [] | add_noise | 21.05 | 14.19 | 123.82 | 1.04 | |
|
|
66
|
+
| fix | 前 | [] | improve_precision | 0.95 | 15.55 | 5.59 | 1.14 | |
|
|
67
|
+
|
|
68
|
+
#### 2.1.3 Baichuan2-7B
|
|
69
|
+
|
|
70
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s)| 显存峰值(GB)| 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
71
|
+
|----|-----|---|--|----|----|------|-------|---------|
|
|
72
|
+
| / | / | / | / | 0.26 | 12.12 | 1 | 1 | 混合精度模式基线 |
|
|
73
|
+
| check | 前 | [] | improve_precision | 1.02 | 12.27 | 3.92 | 1.01 | |
|
|
74
|
+
| check | 反 | [] | add_noise | 11.15 | 12.67 | 42.88 | 1.05 | |
|
|
75
|
+
| fix | 前 | [] | improve_precision | 0.95 | 12.82 | 3.65 | 1.06 | |
|
|
76
|
+
|
|
77
|
+
#### 2.1.4 Bloom-7B
|
|
78
|
+
|
|
79
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s)| 显存峰值(GB)| 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
80
|
+
|-----|------|------|------|----|-----|-----|-------|----|
|
|
81
|
+
| / | / | / | / | 0.14 | 9.51 | 1 | 1 | 混合精度模式基线 |
|
|
82
|
+
| check | 前 | [] | improve_precision | 1.64 | 11.58 | 11.71 | 1.22 | |
|
|
83
|
+
| check | 反 | [] | add_noise | 17.15 | 9.51 | 122.5 | 1 | |
|
|
84
|
+
| fix | 前 | [] | improve_precision | 0.87 | 10.62 | 6.21 | 1.12 | |
|
|
85
|
+
|
|
86
|
+
#### 2.1.5 Interlm-7B
|
|
87
|
+
|
|
88
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
89
|
+
|-------------|--------|-------|----|------|-----|------|-------|----|
|
|
90
|
+
| / | / | / | / | 0.13 | 10.76 | 1 | 1 | 混合精度模式基线 |
|
|
91
|
+
| check | 前 | [] | improve_precision | 1.19 | 11.68 | 9.15 | 1.09 | |
|
|
92
|
+
| check | 反 | [] | add_noise | 11.69 | 10.89 | 89.92 | 1.01 | |
|
|
93
|
+
| fix | 前 | [] | improve_precision | 0.75 | 11.68 | 5.77 | 1.09 | |
|
|
94
|
+
|
|
95
|
+
#### 2.1.6 Qwen-7B
|
|
96
|
+
|
|
97
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
98
|
+
|--------|-------|-----|-----|----|------|-----|------|------|
|
|
99
|
+
| / | / | / | / | 0.28 | 18.41 | 1 | 1 | 混合精度模式基线 |
|
|
100
|
+
| check | 前 | [] | improve_precision | 2.34 | 23.18 | 8.36 | 1.26 | |
|
|
101
|
+
| check | 反 | [] | add_noise | 22.07 | 19.47 | 78.82 | 1.06 | |
|
|
102
|
+
| fix | 前 | [] | improve_precision | 1.31 | 21.11 | 4.68 | 1.15 | |
|
|
103
|
+
|
|
104
|
+
#### 2.1.7 Gemma-7B
|
|
105
|
+
|
|
106
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
107
|
+
|--------|-------|------|---|----|-----|-----|-----|---------|
|
|
108
|
+
| / | / | / | / | 0.15 | 11.06 | 1 | 1 | 混合精度模式基线 |
|
|
109
|
+
| check | 前 | [] | improve_precision | 1.49 | 13.17 | 9.93 | 1.19 | |
|
|
110
|
+
| check | 反 | [] | add_noise | 16.69 | 11.06 | 111.27 | 1 | |
|
|
111
|
+
| fix | 前 | [] | improve_precision | 0.87 | 12.25 | 5.8 | 1.11 | |
|
|
112
|
+
|
|
113
|
+
### [2.2 ModelZoo-PyTorch 模型](https://gitee.com/ascend/ModelZoo-PyTorch)
|
|
114
|
+
|
|
115
|
+
#### 2.2.1 ResNet50-Cifar
|
|
116
|
+
|
|
117
|
+
NPU 卡数:1
|
|
118
|
+
|
|
119
|
+
主要数据类型:FLOAT16
|
|
120
|
+
|
|
121
|
+
主要算子为 conv2d,每个 step 有 51 个, 因此对 conv2d 进行检测。CV 模型、依赖 mmcv 实现(如果不修改 mmcv 代码、工具无法获取 step 信息和反向信息)。
|
|
122
|
+
|
|
123
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
124
|
+
|------------|---------|--------|-----|------|---|--------|-------|----|
|
|
125
|
+
| / | / | / | / | 0.09 | 7.63 | 1 | 1 | 基线 |
|
|
126
|
+
| check | 前 | ["conv2d"] | improve_precision | 0.889 | 7.94 | 9.81 | 1.04 | |
|
|
127
|
+
| fix | 前 | ["conv2d"] | improve_precision | 0.328 | 7.47 | 3.64 | 0.91 | |
|
|
128
|
+
| fix | 前 | ["conv2d"] | to_cpu | 12.23 | 7.47 | 135.88 | 0.91 | |
|
|
129
|
+
|
|
130
|
+
#### 2.2.2 OpenSora1.0
|
|
131
|
+
|
|
132
|
+
NPU 卡数:4
|
|
133
|
+
|
|
134
|
+
主要数据类型:FLOAT16
|
|
135
|
+
|
|
136
|
+
每张卡每个 step 中 linear 算子个数为 257 个,FA 算子个数为 83(FA 算子反向无效)。
|
|
137
|
+
|
|
138
|
+
| 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
|
|
139
|
+
|------------|------|-------|----|----|-----|-----|------|-----|
|
|
140
|
+
| / | / | / | / | 0.99 | 17.61 | 1 | 1 | 混合精度模式基线 |
|
|
141
|
+
| check | 前 | ["linear","npu_fusion_attention"] | improve_precision | 3.88 | 17.61 | 3.92 | 1 | |
|
|
142
|
+
| check | 前 | ["linear","npu_fusion_attention"] | add_noise | 3.46 | 17.61 | 3.49 | 1 | |
|
|
143
|
+
| check | 反 | ["linear"] | improve_precision | 12.61 | 17.61 | 12.74 | 1 | |
|
|
144
|
+
| check | 反 | ["linear"] | add_noise | 9.8 | 17.61 | 9.90 | 1 | |
|
|
145
|
+
| fix | 前 | ["linear"] | to_cpu | 18.83 | 17.61 | 19.02 | 1 | |
|
|
146
|
+
| fix | 前 | ["linear"] | improve_precision | 2.83 | 17.61 | 2.86 | 1 | |
|
|
Binary file
|
msprobe/mindspore/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
from msprobe.mindspore.debugger.precision_debugger import PrecisionDebugger
|
|
1
|
+
from msprobe.mindspore.debugger.precision_debugger import PrecisionDebugger
|