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.
Files changed (262) hide show
  1. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/LICENSE +201 -201
  2. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/METADATA +36 -34
  3. mindstudio_probe-1.0.4.dist-info/RECORD +276 -0
  4. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/WHEEL +1 -1
  5. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/entry_points.txt +1 -0
  6. msprobe/README.md +101 -237
  7. msprobe/{config/config.json → config.json} +49 -49
  8. msprobe/core/advisor/advisor.py +124 -124
  9. msprobe/core/advisor/advisor_const.py +59 -59
  10. msprobe/core/advisor/advisor_result.py +58 -58
  11. msprobe/core/common/const.py +341 -318
  12. msprobe/core/common/exceptions.py +99 -99
  13. msprobe/core/common/{file_check.py → file_utils.py} +478 -283
  14. msprobe/core/common/log.py +76 -69
  15. msprobe/core/common/utils.py +385 -616
  16. msprobe/core/common_config.py +85 -71
  17. msprobe/core/compare/acc_compare.py +299 -298
  18. msprobe/core/compare/check.py +95 -95
  19. msprobe/core/compare/compare_cli.py +49 -49
  20. msprobe/core/compare/highlight.py +223 -222
  21. msprobe/core/compare/multiprocessing_compute.py +149 -149
  22. msprobe/core/compare/npy_compare.py +295 -295
  23. msprobe/core/compare/utils.py +430 -429
  24. msprobe/core/data_dump/data_collector.py +154 -144
  25. msprobe/core/data_dump/data_processor/base.py +314 -293
  26. msprobe/core/data_dump/data_processor/factory.py +59 -59
  27. msprobe/core/data_dump/data_processor/mindspore_processor.py +186 -198
  28. msprobe/core/data_dump/data_processor/pytorch_processor.py +366 -389
  29. msprobe/core/data_dump/json_writer.py +96 -116
  30. msprobe/core/data_dump/scope.py +178 -178
  31. msprobe/core/grad_probe/constant.py +70 -70
  32. msprobe/core/grad_probe/grad_compare.py +171 -175
  33. msprobe/core/grad_probe/utils.py +64 -52
  34. msprobe/docs/01.installation.md +89 -0
  35. msprobe/docs/02.config_introduction.md +165 -0
  36. msprobe/docs/03.config_examples.md +247 -0
  37. msprobe/docs/04.acl_config_examples.md +76 -0
  38. msprobe/docs/05.data_dump_PyTorch.md +198 -0
  39. msprobe/docs/06.data_dump_MindSpore.md +243 -0
  40. msprobe/docs/07.accuracy_checker_PyTorch.md +274 -0
  41. msprobe/docs/08.accuracy_checker_online_PyTorch.md +198 -0
  42. msprobe/docs/09.accuracy_checker_MindSpore.md +68 -0
  43. msprobe/docs/10.accuracy_compare_PyTorch.md +245 -0
  44. msprobe/docs/11.accuracy_compare_MindSpore.md +202 -0
  45. msprobe/docs/12.overflow_check_PyTorch.md +79 -0
  46. msprobe/docs/13.overflow_check_MindSpore.md +31 -0
  47. msprobe/{pytorch/doc/parse_tool.md → docs/14.data_parse_PyTorch.md} +283 -286
  48. msprobe/docs/15.free_benchmarking_PyTorch.md +164 -0
  49. msprobe/{doc/grad_probe/grad_probe.md → docs/17.grad_probe.md} +207 -207
  50. msprobe/docs/FAQ_PyTorch.md +177 -0
  51. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +146 -0
  52. msprobe/docs/img/free_benchmark_framework.png +0 -0
  53. msprobe/mindspore/__init__.py +1 -1
  54. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +254 -245
  55. msprobe/mindspore/api_accuracy_checker/api_info.py +69 -69
  56. msprobe/mindspore/api_accuracy_checker/api_runner.py +155 -151
  57. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +196 -196
  58. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +6 -0
  59. msprobe/mindspore/api_accuracy_checker/compute_element.py +238 -223
  60. msprobe/mindspore/api_accuracy_checker/main.py +8 -15
  61. msprobe/mindspore/api_accuracy_checker/type_mapping.py +113 -113
  62. msprobe/mindspore/api_accuracy_checker/utils.py +79 -62
  63. msprobe/mindspore/cell_processor.py +34 -34
  64. msprobe/mindspore/common/const.py +106 -87
  65. msprobe/mindspore/common/log.py +37 -37
  66. msprobe/mindspore/common/utils.py +81 -57
  67. msprobe/mindspore/compare/distributed_compare.py +75 -75
  68. msprobe/mindspore/compare/ms_compare.py +219 -117
  69. msprobe/mindspore/compare/ms_graph_compare.py +348 -317
  70. msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -399
  71. msprobe/mindspore/debugger/debugger_config.py +66 -74
  72. msprobe/mindspore/debugger/precision_debugger.py +126 -107
  73. msprobe/mindspore/dump/dump_tool_factory.py +35 -35
  74. msprobe/mindspore/dump/hook_cell/api_registry.py +118 -104
  75. msprobe/mindspore/dump/hook_cell/hook_cell.py +55 -53
  76. msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +922 -925
  77. msprobe/mindspore/dump/hook_cell/wrap_api.py +113 -0
  78. msprobe/mindspore/dump/jit_dump.py +72 -56
  79. msprobe/mindspore/dump/kernel_graph_dump.py +59 -60
  80. msprobe/mindspore/dump/kernel_kbyk_dump.py +64 -65
  81. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +116 -116
  82. msprobe/mindspore/free_benchmark/common/config.py +12 -12
  83. msprobe/mindspore/free_benchmark/common/handler_params.py +17 -17
  84. msprobe/mindspore/free_benchmark/common/utils.py +71 -71
  85. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -842
  86. msprobe/mindspore/free_benchmark/decorator/dec_forward.py +43 -42
  87. msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +107 -107
  88. msprobe/mindspore/free_benchmark/handler/base_handler.py +90 -90
  89. msprobe/mindspore/free_benchmark/handler/check_handler.py +41 -41
  90. msprobe/mindspore/free_benchmark/handler/fix_handler.py +36 -36
  91. msprobe/mindspore/free_benchmark/handler/handler_factory.py +21 -21
  92. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +67 -67
  93. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +21 -21
  94. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +63 -63
  95. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +51 -0
  96. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +35 -34
  97. msprobe/mindspore/free_benchmark/perturbation/no_change.py +12 -12
  98. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +29 -27
  99. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +33 -33
  100. msprobe/mindspore/grad_probe/global_context.py +90 -91
  101. msprobe/mindspore/grad_probe/grad_analyzer.py +231 -231
  102. msprobe/mindspore/grad_probe/grad_monitor.py +27 -27
  103. msprobe/mindspore/grad_probe/grad_stat_csv.py +131 -131
  104. msprobe/mindspore/grad_probe/hook.py +94 -92
  105. msprobe/mindspore/grad_probe/utils.py +29 -28
  106. msprobe/mindspore/ms_config.py +128 -126
  107. msprobe/mindspore/overflow_check/kernel_graph_overflow_check.py +44 -45
  108. msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +34 -34
  109. msprobe/mindspore/runtime.py +4 -4
  110. msprobe/mindspore/service.py +378 -354
  111. msprobe/mindspore/task_handler_factory.py +24 -24
  112. msprobe/msprobe.py +105 -107
  113. msprobe/pytorch/__init__.py +3 -3
  114. msprobe/pytorch/api_accuracy_checker/common/config.py +53 -55
  115. msprobe/pytorch/api_accuracy_checker/common/utils.py +214 -165
  116. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +213 -213
  117. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +606 -581
  118. msprobe/pytorch/api_accuracy_checker/compare/api_precision_standard.yaml +132 -132
  119. msprobe/pytorch/api_accuracy_checker/compare/api_precision_threshold.yaml +390 -390
  120. msprobe/pytorch/api_accuracy_checker/compare/compare.py +386 -381
  121. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +73 -73
  122. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +245 -244
  123. msprobe/pytorch/api_accuracy_checker/config.yaml +10 -10
  124. msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +335 -332
  125. msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +200 -199
  126. msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +133 -134
  127. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +592 -581
  128. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +70 -74
  129. msprobe/pytorch/api_accuracy_checker/run_ut/torch_ut_setting.json +7 -4
  130. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +197 -202
  131. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +325 -324
  132. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +204 -204
  133. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +219 -218
  134. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +10 -10
  135. msprobe/pytorch/bench_functions/__init__.py +15 -15
  136. msprobe/pytorch/bench_functions/apply_adam_w.py +28 -28
  137. msprobe/pytorch/bench_functions/confusion_transpose.py +19 -19
  138. msprobe/pytorch/bench_functions/fast_gelu.py +55 -55
  139. msprobe/pytorch/bench_functions/layer_norm_eval.py +6 -6
  140. msprobe/pytorch/bench_functions/linear.py +12 -12
  141. msprobe/pytorch/bench_functions/matmul_backward.py +48 -48
  142. msprobe/pytorch/bench_functions/npu_fusion_attention.py +509 -421
  143. msprobe/pytorch/bench_functions/rms_norm.py +15 -15
  144. msprobe/pytorch/bench_functions/rotary_mul.py +52 -52
  145. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +26 -26
  146. msprobe/pytorch/bench_functions/swiglu.py +55 -55
  147. msprobe/pytorch/common/__init__.py +2 -2
  148. msprobe/pytorch/common/compare_script.template +14 -14
  149. msprobe/pytorch/common/log.py +20 -31
  150. msprobe/pytorch/common/parse_json.py +39 -39
  151. msprobe/pytorch/common/utils.py +305 -300
  152. msprobe/pytorch/compare/distributed_compare.py +66 -66
  153. msprobe/pytorch/compare/mapping.yaml +607 -607
  154. msprobe/pytorch/compare/match.py +34 -33
  155. msprobe/pytorch/compare/pt_compare.py +50 -40
  156. msprobe/pytorch/debugger/debugger_config.py +95 -95
  157. msprobe/pytorch/debugger/precision_debugger.py +125 -125
  158. msprobe/pytorch/free_benchmark/__init__.py +8 -8
  159. msprobe/pytorch/free_benchmark/common/constant.py +70 -70
  160. msprobe/pytorch/free_benchmark/common/counter.py +71 -71
  161. msprobe/pytorch/free_benchmark/common/enums.py +37 -37
  162. msprobe/pytorch/free_benchmark/common/params.py +129 -129
  163. msprobe/pytorch/free_benchmark/common/utils.py +102 -102
  164. msprobe/pytorch/free_benchmark/compare/grad_saver.py +179 -179
  165. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +104 -104
  166. msprobe/pytorch/free_benchmark/main.py +105 -105
  167. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +13 -13
  168. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +41 -41
  169. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +90 -90
  170. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +104 -104
  171. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +63 -63
  172. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +68 -68
  173. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +28 -28
  174. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +45 -45
  175. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +19 -19
  176. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +217 -217
  177. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +39 -39
  178. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +23 -23
  179. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +30 -30
  180. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +170 -170
  181. msprobe/pytorch/function_factory.py +76 -75
  182. msprobe/pytorch/functional/dump_module.py +39 -39
  183. msprobe/pytorch/grad_probe/grad_monitor.py +91 -90
  184. msprobe/pytorch/grad_probe/grad_stat_csv.py +128 -128
  185. msprobe/pytorch/hook_module/api_registry.py +161 -161
  186. msprobe/pytorch/hook_module/hook_module.py +120 -120
  187. msprobe/pytorch/hook_module/support_wrap_ops.yaml +1879 -1877
  188. msprobe/pytorch/hook_module/utils.py +30 -29
  189. msprobe/pytorch/hook_module/wrap_aten.py +110 -110
  190. msprobe/pytorch/hook_module/wrap_distributed.py +78 -78
  191. msprobe/pytorch/hook_module/wrap_functional.py +105 -105
  192. msprobe/pytorch/hook_module/wrap_npu_custom.py +93 -84
  193. msprobe/pytorch/hook_module/wrap_tensor.py +71 -71
  194. msprobe/pytorch/hook_module/wrap_torch.py +86 -86
  195. msprobe/pytorch/hook_module/wrap_vf.py +62 -62
  196. msprobe/pytorch/module_processer.py +138 -138
  197. msprobe/pytorch/online_dispatch/__init__.py +20 -20
  198. msprobe/pytorch/online_dispatch/compare.py +236 -236
  199. msprobe/pytorch/online_dispatch/dispatch.py +271 -271
  200. msprobe/pytorch/online_dispatch/dump_compare.py +155 -156
  201. msprobe/pytorch/online_dispatch/single_compare.py +391 -391
  202. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +49 -49
  203. msprobe/pytorch/online_dispatch/utils.py +130 -146
  204. msprobe/pytorch/parse.py +4 -4
  205. msprobe/pytorch/parse_tool/cli.py +32 -32
  206. msprobe/pytorch/parse_tool/lib/compare.py +260 -271
  207. msprobe/pytorch/parse_tool/lib/config.py +52 -52
  208. msprobe/pytorch/parse_tool/lib/file_desc.py +31 -31
  209. msprobe/pytorch/parse_tool/lib/interactive_cli.py +102 -102
  210. msprobe/pytorch/parse_tool/lib/parse_exception.py +54 -54
  211. msprobe/pytorch/parse_tool/lib/parse_tool.py +158 -158
  212. msprobe/pytorch/parse_tool/lib/utils.py +316 -321
  213. msprobe/pytorch/parse_tool/lib/visualization.py +85 -91
  214. msprobe/pytorch/pt_config.py +188 -187
  215. msprobe/pytorch/service.py +246 -252
  216. mindstudio_probe-1.0.3.dist-info/RECORD +0 -272
  217. msprobe/config/README.md +0 -539
  218. msprobe/mindspore/doc/compare.md +0 -58
  219. msprobe/mindspore/doc/dump.md +0 -217
  220. msprobe/mindspore/dump/hook_cell/wrap_functional.py +0 -91
  221. msprobe/mindspore/dump/hook_cell/wrap_tensor.py +0 -63
  222. msprobe/pytorch/doc/FAQ.md +0 -193
  223. msprobe/pytorch/doc/api_accuracy_checker.md +0 -313
  224. msprobe/pytorch/doc/api_accuracy_checker_online.md +0 -187
  225. msprobe/pytorch/doc/dump.md +0 -260
  226. 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
  227. msprobe/pytorch/doc/ptdbg_ascend_compare.md +0 -240
  228. msprobe/pytorch/doc/ptdbg_ascend_overview.md +0 -68
  229. msprobe/pytorch/doc/ptdbg_ascend_quickstart.md +0 -381
  230. msprobe/pytorch/doc/run_overflow_check.md +0 -25
  231. 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
  232. 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
  233. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/top_level.txt +0 -0
  234. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_1.png +0 -0
  235. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_2.png +0 -0
  236. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_3.png +0 -0
  237. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_4.png +0 -0
  238. /msprobe/{pytorch/doc → docs}/img/GPT-3_1.png +0 -0
  239. /msprobe/{pytorch/doc → docs}/img/GPT-3_2.png +0 -0
  240. /msprobe/{pytorch/doc → docs}/img/GPT-3_3.png +0 -0
  241. /msprobe/{pytorch/doc → docs}/img/GPT-3_4.png +0 -0
  242. /msprobe/{pytorch/doc → docs}/img/GPT-3_5.png +0 -0
  243. /msprobe/{pytorch/doc → docs}/img/GPT-3_6.png +0 -0
  244. /msprobe/{pytorch/doc → docs}/img/GPT-3_7.png +0 -0
  245. /msprobe/{pytorch/doc → docs}/img/GPT-3_8.png +0 -0
  246. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_1.png +0 -0
  247. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_2.png +0 -0
  248. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_details.png +0 -0
  249. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_result.png +0 -0
  250. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_details.png +0 -0
  251. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_result.png +0 -0
  252. /msprobe/{pytorch/doc → docs}/img/auto_analyze_log.png +0 -0
  253. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl.png +0 -0
  254. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl_md5.png.png +0 -0
  255. /msprobe/{pytorch/doc → docs}/img/cpu_info.png +0 -0
  256. /msprobe/{config → docs}/img/free_benchmark.png +0 -0
  257. /msprobe/{doc/grad_probe/img/image-1.png → docs/img/grad_probe_image-1.png} +0 -0
  258. /msprobe/{doc/grad_probe/img/image-2.png → docs/img/grad_probe_image-2.png} +0 -0
  259. /msprobe/{doc/grad_probe/img/image-3.png → docs/img/grad_probe_image-3.png} +0 -0
  260. /msprobe/{doc/grad_probe/img/image-4.png → docs/img/grad_probe_image-4.png} +0 -0
  261. /msprobe/{doc/grad_probe/img/image.png → docs/img/grad_probe_image.png} +0 -0
  262. /msprobe/{pytorch/doc → docs}/img/module_compare.png +0 -0
@@ -1,68 +0,0 @@
1
- # **精度比对工具**
2
-
3
- ## 简介
4
-
5
- 在PyTorch训练网络,对同一模型或API调试过程中,遇到API相关的计算精度问题,定位时费时费力。
6
-
7
- msprobe的精度比对工具,用来进行PyTorch整网API粒度的数据dump、精度比对和溢出检测,从而定位PyTorch训练场景下的精度问题。
8
-
9
- **使用场景**
10
-
11
- 主要的使用场景包括:
12
-
13
- - 同一模型,从CPU或GPU移植到NPU中存在精度下降问题,对比NPU芯片中的API计算数值与CPU或GPU芯片中的API计算数值,进行问题定位。
14
- - 同一模型,进行迭代(模型、框架版本升级或设备硬件升级)时存在的精度下降问题,对比相同模型在迭代前后版本的API计算数值,进行问题定位。
15
-
16
- ## 原理介绍
17
-
18
- 精度对比工具,通过在PyTorch模型中注册hook,跟踪计算图中API的前向传播与反向传播时的输入与输出,排查存在计算精度误差,进行问题的精准定位。
19
-
20
- **精度比对流程**
21
-
22
- 1. 当模型在CPU或GPU上进行正向和反向传播时,分别dump每一层的数值输入与输出。
23
-
24
- 2. 当模型在NPU中进行计算时,采用相同的方式dump下相应的数据。
25
-
26
- 3. 通过对比dump出的数值,计算余弦相似度和最大绝对误差的方式,定位和排查NPU API存在的计算精度问题。如下图所示。
27
-
28
- 精度比对逻辑图
29
-
30
- ![module_compare](img/module_compare.png)
31
-
32
- **API匹配条件**
33
-
34
- 进行精度比对时,需要判断CPU或GPU的API与NPU的API是否相同可比对,须满足以下匹配条件:
35
-
36
- - 两个API的名称相同,API命名规则:`{api_type}.{api_name}.{api调用次数}.{正反向}.{输入输出}.index`,如:Functional.conv2d.1.backward.input.0。
37
- - 两个API的输入输出Tensor数量和各个Tensor的Shape相同。
38
-
39
- 通常满足以上两个条件,工具就认为是同一个API,成功进行API的匹配,后续进行相应的计算精度比对。
40
-
41
- ## 精度比对总体流程
42
-
43
- 1. 准备CPU或GPU训练工程。
44
-
45
- 2. 在环境下安装msprobe工具。详见《[MindStudio精度调试工具](../../README.md)》的“工具安装”章节。
46
-
47
- 3. 在训练脚本内添加msprobe工具dump接口PrecisionDebugger采集标杆数据。详见《[精度数据采集](./dump.md)》。
48
-
49
- 4. 执行训练dump数据。
50
-
51
- 5. 将CPU或GPU训练工程迁移为NPU训练工程。详见《[PyTorch模型迁移调优指南](https://www.hiascend.com/document/detail/zh/Pytorch/60RC1/ptmoddevg/trainingmigrguide/PT_LMTMOG_0003.html)》。
52
-
53
- 6. 在NPU环境下安装msprobe工具。详见《[MindStudio精度调试工具](../../README.md)》的“工具安装”章节。
54
-
55
- 7. 在NPU训练脚本内添加msprobe工具dump接口PrecisionDebugger采集标杆数据。详见《[精度数据采集](./dump.md)》。
56
-
57
- 8. NPU环境下执行训练dump数据。
58
-
59
- 9. 执行精度比对。
60
-
61
- 1. 创建并配置精度比对脚本,例如compare.py。
62
-
63
- 2. 执行CPU或GPU dump与NPU dump数据的精度比对。
64
-
65
- 3. 比对结果分析。
66
-
67
- 详见《[CPU或GPU与NPU精度数据比对](./ptdbg_ascend_compare.md)》。
68
-
@@ -1,381 +0,0 @@
1
- # **精度比对工具**
2
-
3
- 本文主要介绍msprobe的精度比对工具的快速入门和场景化示例。
4
-
5
- 本文介绍的操作需要安装msprobe工具,详见《[MindStudio精度调试工具](../../README.md)》的“工具安装”章节。
6
-
7
- 本文介绍的操作主要是精度数据dump和精度比对,详细操作指导可参考《[精度数据采集](./dump.md)》和《[CPU或GPU与NPU精度数据比对](./ptdbg_ascend.md)》。
8
-
9
- ## 快速入门
10
-
11
- ### 单卡场景精度比对
12
-
13
- **精度分析建议**
14
-
15
- PyTorch训练场景的精度问题分析建议参考以下思路进行精度比对和比对结果分析:
16
-
17
- 1. 整网比对:dump整网数据并进行精度比对,初步定位异常范围。
18
-
19
- 对于模型数据庞大(比如达到T级别)的场景,不推荐直接dump整网比对,整网dump可能导致磁盘不足,需要预留足够的存储空间或者分多次dump。
20
-
21
- 2. 缩小范围:根据Accuracy Reached or Not找出不符合精度标准的API。
22
-
23
- 3. 范围比对:对不符合精度标准的API重新dump详细信息。
24
-
25
- 4. 分析原因并优化:分析API精度不符合标准的原因并进行优化调整。
26
-
27
- 5. 整网比对:重新进行整网比对,判断优化后的API是否已符合精度标准以及是否出现新的精度问题。
28
-
29
- 6. 重复1~5步,直到不存在精度问题为止。
30
-
31
- **精度分析示例**
32
-
33
- 1. 修改dump配置文件config.json。
34
-
35
- ```json
36
- {
37
- "task": "tensor",
38
- "dump_path": "./npu_dump",
39
- "rank": [],
40
- "step": [],
41
- "level": "L1",
42
- "seed": 1234,
43
- "is_deterministic": false,
44
-
45
- "tensor": {
46
- "scope": [],
47
- "list": [],
48
- "data_mode": ["all"],
49
- "summary_mode": "statistics"
50
- }
51
- }
52
- ```
53
-
54
- 2. 在训练脚本内添加msprobe工具,dump整网数据。
55
-
56
- 分别dump CPU或GPU以及NPU数据,在PyTorch训练脚本插入dump接口,示例代码如下(下面以NPU为例,CPU或GPU dump基本相同):
57
-
58
- ```python
59
- from msprobe.pytorch import PrecisionDebugger
60
- debugger = PrecisionDebugger(config_path="./config.json", dump_path="./npu_dump")
61
- # 请勿将以上初始化流程插入到循环代码中
62
-
63
- # 模型初始化
64
- # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop()
65
- debugger.start()
66
-
67
- # 需要dump的代码片段1
68
-
69
- debugger.stop()
70
- debugger.start()
71
-
72
- # 需要dump的代码片段2
73
-
74
- debugger.stop()
75
- debugger.step()
76
- ```
77
-
78
- 3. 比对整网数据。
79
-
80
- 第1步中的NPU dump数据目录为npu_dump,假设GPU dump数据目录为gpu_dump;dump将生成dump.json、stack.json、construct.json文件以及dump数据目录。
81
-
82
- 创建并配置精度比对脚本,以创建compare.py为例,示例代码如下:
83
-
84
- ```python
85
- from msprobe.pytorch import compare
86
- input_param={
87
- "npu_json_path": "./npu_dump/dump.json",
88
- "bench_json_path": "./bench_dump/dump.json",
89
- "stack_json_path": "./npu_dump/stack.json",
90
- "is_print_compare_log": True
91
- }
92
- compare(input_param, output_path="./output", stack_mode=True)
93
- ```
94
-
95
- 执行比对:
96
-
97
- ```bash
98
- python3 compare.py
99
- ```
100
-
101
- 在output目录下生成结果文件,包括:`compare_result_{timestamp}.xlsx`和`advisor_{timestamp}.txt`
102
-
103
- 4. 找出存在问题的API。
104
-
105
- 1. 根据`advisor_{timestamp}.txt`或打屏信息的提示,可找到存在精度问题的算子(Suspect Nodes)和专家建议(Expert Advice)。
106
-
107
- ![auto_analyze_log](img/auto_analyze_log.png)
108
-
109
- 2. 根据第2步结果文件`compare_result_{timestamp}.xlsx`中的Accuracy Reached or No字段显示为NO的API,针对该API执行后续比对操作,分析该API存在的精度问题。
110
-
111
- 5. (可选)重新比对。
112
-
113
- 根据第3步的dump数据重新配置compare.py并执行比对,可以对单API模型进行问题复现。
114
-
115
- **注意**:部分API存在调用嵌套关系,比如functional.batch_norm实际调用torch.batch_norm,该场景会影响kernel init初始化多次,导致功能异常。
116
-
117
- ### 溢出检测场景
118
-
119
- 溢出检测是针对NPU的PyTorch API,检测是否存在溢出的情况。当前仅支持识别aicore浮点溢出。
120
-
121
- 溢出检测原理:针对溢出阶段,开启acl dump模式,重新对溢出阶段执行,落盘数据。
122
-
123
- 建议按照如下步骤操作:
124
-
125
- 1. 修改dump配置文件config.json。
126
-
127
- ```json
128
- {
129
- "task": "overflow_check",
130
- "dump_path": "./npu_dump",
131
- "rank": [],
132
- "step": [],
133
- "level": "L1",
134
- "seed": 1234,
135
- "is_deterministic": false,
136
-
137
- "overflow_check": {
138
- "overflow_nums": 3
139
- }
140
- }
141
- ```
142
-
143
- 2. 在NPU训练脚本内添加msprobe工具,执行溢出检测dump。
144
-
145
- ```python
146
- from msprobe.pytorch import PrecisionDebugger
147
- debugger = PrecisionDebugger(config_path="./config.json", dump_path="./npu_dump")
148
- # 请勿将以上初始化流程插入到循环代码中
149
-
150
- # 模型初始化
151
- # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop()
152
- debugger.start()
153
-
154
- # 需要dump的代码片段1
155
-
156
- debugger.stop()
157
- debugger.start()
158
-
159
- # 需要dump的代码片段2
160
-
161
- debugger.stop()
162
- debugger.step()
163
- ```
164
-
165
- 多卡使用时各卡单独计算溢出次数。
166
-
167
- 3. NPU环境下执行训练dump溢出数据。
168
-
169
- 针对输入正常但输出存在溢出的API,会在训练执行目录下将溢出的API信息dump并保存为`dump.json`通过《[溢出解析工具](./run_overflow_check.md)》对json文件进行解析,输出溢出API为正常溢出还是非正常溢出,从而帮助用户快速判断。
170
-
171
- 溢出解析工具执行命令如下:
172
-
173
- ```bash
174
- msprobe -f pytorch run_overflow_check -api_info ./dump.json
175
- ```
176
-
177
- 反向过程溢出的API暂不支持精度预检功能。
178
-
179
-
180
- 当重复执行溢出检测dump操作时,需要删除上一次dump目录下的溢出检测dump数据,否则将因重名而报错。
181
-
182
- **注意事项**
183
-
184
- * (暂不支持)level为L2场景下,会增加npu的内存消耗,请谨慎开启。
185
- * (暂不支持)l部分API存在调用嵌套关系,比如functional.batch_norm实际调用torch.batch_norm,该场景会影响acl init初始化多次,导致level为L2功能异常。
186
- * 混合精度动态loss scale场景下,正常训练会有"Gradient overflow. SKipping step"日志,添加溢出检测后日志消失,可以通过设置环境变量export OVERFLOW_DEBUG_MODE_ENABLE=1,并将register_hook位置调整amp.initialize之前解决。此功能需要cann包配套支持,不支持版本执行报错EZ3003。
187
-
188
- ## 场景化示例
189
-
190
- ### 多卡场景精度比对
191
-
192
- 精度工具支持多卡场景的精度比对,多卡场景的dump步骤与单卡场景完全一致,请参见“**单卡场景精度比对**”章节,不同的是多卡数据精度比对时需要使用“compare_distributed”函数进行比对。
193
-
194
- 如下示例:
195
-
196
- 说明:多机多卡场景需要每个节点单独执行比对操作。
197
-
198
- 假设NPU dump 数据目录为npu_dump,GPU dump数据目录为gpu_dump。
199
-
200
- 1. 创建比对脚本,例如compare_distributed.py,拷贝如下代码。
201
-
202
- ```python
203
- from msprobe.pytorch import *
204
- compare_distributed('./npu_dump/step0', './gpu_dump/step0', './output')
205
- ```
206
-
207
- dump数据目录须指定到step级。
208
-
209
- 2. 执行比对:
210
-
211
- ```bash
212
- python3 compare_distributed.py
213
- ```
214
-
215
- 两次运行须用相同数量的卡,传入`compare_distributed`的两个文件夹下须有相同个数的rank文件夹,且不包含其他无关文件,否则将无法比对。
216
-
217
- **多卡set_dump_path注意事项**
218
-
219
- 多卡一般为多进程,须保证每个进程都正确调用PrecisionDebugger,或把PrecisionDebugger插入到import语句后,如:
220
-
221
- ```python
222
- from msprobe.pytorch import PrecisionDebugger
223
- debugger = PrecisionDebugger(config_path="./config.json", dump_path="./npu_dump")
224
- ```
225
-
226
- 如此可保证set_dump_path在每个进程都被调用。
227
-
228
- ### NPU vs NPU精度比对
229
-
230
- 对于NPU vs NPU场景,是针对同一模型,进行迭代(模型、API版本升级或设备硬件升级)时存在的精度下降问题,对比相同模型在迭代前后版本的API计算数值,进行问题定位。
231
-
232
- 一般情况下迭代涉及NPU自定义算子,因此,可以仅dump NPU自定义算子进行比对。比对精度问题分析请参见“**单卡场景精度比对**”章节。
233
-
234
- 工具当前支持dump NPU自定义算子如下:
235
-
236
- | 序号 | NPU自定义算子 |
237
- | :--- | ----------------------------------------------- |
238
- | 1 | torch_npu.one_ |
239
- | 2 | torch_npu.npu_sort_v2 |
240
- | 3 | torch_npu.npu_transpose |
241
- | 4 | torch_npu.npu_broadcast |
242
- | 5 | torch_npu.npu_dtype_cast |
243
- | 6 | torch_npu.empty_with_format |
244
- | 7 | torch_npu.npu_one_hot |
245
- | 8 | torch_npu.npu_stride_add |
246
- | 9 | torch_npu.npu_ps_roi_pooling |
247
- | 10 | torch_npu.npu_roi_align |
248
- | 11 | torch_npu.npu_nms_v4 |
249
- | 12 | torch_npu.npu_iou |
250
- | 13 | torch_npu.npu_nms_with_mask |
251
- | 14 | torch_npu.npu_pad |
252
- | 15 | torch_npu.npu_bounding_box_encode |
253
- | 16 | torch_npu.npu_bounding_box_decode |
254
- | 17 | torch_npu.npu_batch_nms |
255
- | 18 | torch_npu.npu_slice |
256
- | 19 | torch_npu._npu_dropout |
257
- | 20 | torch_npu.npu_indexing |
258
- | 21 | torch_npu.npu_ifmr |
259
- | 22 | torch_npu.npu_max |
260
- | 23 | torch_npu.npu_scatter |
261
- | 24 | torch_npu.npu_layer_norm_eval |
262
- | 25 | torch_npu.npu_alloc_float_status |
263
- | 26 | torch_npu.npu_confusion_transpose |
264
- | 27 | torch_npu.npu_bmmV2 |
265
- | 28 | torch_npu.fast_gelu |
266
- | 29 | torch_npu.npu_sub_sample |
267
- | 30 | torch_npu.npu_deformable_conv2d |
268
- | 31 | torch_npu.npu_mish |
269
- | 32 | torch_npu.npu_anchor_response_flags |
270
- | 33 | torch_npu.npu_yolo_boxes_encode |
271
- | 34 | torch_npu.npu_grid_assign_positive |
272
- | 35 | torch_npu.npu_normalize_batch |
273
- | 36 | torch_npu.npu_masked_fill_range |
274
- | 37 | torch_npu.npu_linear |
275
- | 38 | torch_npu.npu_bert_apply_adam |
276
- | 39 | torch_npu.npu_giou |
277
- | 40 | torch_npu.npu_ciou |
278
- | 41 | torch_npu.npu_diou |
279
- | 42 | torch_npu.npu_sign_bits_pack |
280
- | 43 | torch_npu.npu_sign_bits_unpack |
281
- | 44 | torch_npu.npu_flash_attention |
282
- | 45 | torch_npu.npu_scaled_masked_softmax |
283
- | 46 | torch_npu.npu_rotary_mul |
284
- | 47 | torch_npu.npu_roi_align |
285
- | 48 | torch_npu.npu_roi_alignbk |
286
- | 49 | torch_npu.npu_ptiou |
287
- | 50 | torch_npu.npu_fusion_attention |
288
- | 51 | torch_npu.npu_dropout_with_add_softmax |
289
- | 52 | torch_npu.npu_random_choice_with_mask |
290
- | 53 | torch_npu.npu_rotated_iou |
291
- | 54 | torch_npu.npu_conv2d |
292
- | 55 | torch_npu.npu_conv3d |
293
- | 56 | torch_npu.npu_softmax_cross_entropy_with_logits |
294
- | 57 | torch_npu.npu_all_gather_base_mm |
295
- | 58 | torch_npu.npu_swiglu |
296
- | 59 | torch_npu.npu_rms_norm |
297
- | 60 | torch_npu.npu_mm_reduce_scatter_base |
298
- | 61 | torch_npu.npu_mm_all_reduce_base |
299
- | 62 | torch_npu.npu_conv_transpose2d |
300
- | 63 | torch_npu.npu_convolution |
301
- | 64 | torch_npu.npu_convolution_transpose |
302
- | 65 | torch_npu.npu_min |
303
- | 66 | torch_npu.npu_nms_rotated |
304
- | 67 | torch_npu.npu_reshape |
305
- | 68 | torch_npu.npu_rotated_box_decode |
306
- | 69 | torch_npu.npu_rotated_box_encode |
307
- | 70 | torch_npu.npu_rotated_overlaps |
308
- | 71 | torch_npu.npu_silu |
309
- | 72 | torch_npu.npu_fused_attention_score |
310
- | 73 | torch_npu.npu_multi_head_attention |
311
- | 74 | torch_npu.npu_gru |
312
- | 75 | torch_npu.npu_incre_flash_attention |
313
- | 76 | torch_npu.npu_prompt_flash_attention |
314
- | 77 | torch_npu.npu_lstm |
315
- | 78 | torch_npu.npu_apply_adam |
316
-
317
- ### 通信API的数据dump
318
-
319
- 通信类API数据可以使用全量dump方式获取,若只dump通信类API数据,可以使用如下示例:
320
-
321
- 1. 修改dump配置文件config.json。
322
-
323
- ```json
324
- {
325
- "task": "tensor",
326
- "dump_path": "./npu_dump",
327
- "rank": [],
328
- "step": [],
329
- "level": "L1",
330
- "seed": 1234,
331
- "is_deterministic": false,
332
-
333
- "tensor": {
334
- "scope": [],
335
- "list": ["distributed"],
336
- "data_mode": ["all"],
337
- "summary_mode": "statistics"
338
- }
339
- }
340
- ```
341
-
342
- 2. 在训练脚本内添加msprobe工具,dump整网数据。
343
-
344
- ```python
345
- from msprobe.pytorch import PrecisionDebugger
346
- debugger = PrecisionDebugger(config_path="./config.json", dump_path="./npu_dump")
347
- # 请勿将以上初始化流程插入到循环代码中
348
-
349
- # 模型初始化
350
- # 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop()
351
- debugger.start()
352
-
353
- # 需要dump的代码片段1
354
-
355
- debugger.stop()
356
- debugger.start()
357
-
358
- # 需要dump的代码片段2
359
-
360
- debugger.stop()
361
- debugger.step()
362
- ```
363
-
364
- 通信类API支持列表:
365
-
366
- | 序号 | Distributed |
367
- | :--- | -------------------- |
368
- | 1 | send |
369
- | 2 | recv |
370
- | 3 | broadcast |
371
- | 4 | all_reduce |
372
- | 5 | reduce |
373
- | 6 | all_gather |
374
- | 7 | gather |
375
- | 8 | isend |
376
- | 9 | irecv |
377
- | 10 | scatter |
378
- | 11 | reduce_scatter |
379
- | 12 | _reduce_scatter_base |
380
- | 13 | _all_gather_base |
381
-
@@ -1,25 +0,0 @@
1
- # **溢出解析工具**
2
-
3
- 针对训练过程中的溢出检测场景(当《[精度数据采集](./dump.md)》开启溢出检测dump时),对于输入正常但输出存在溢出的API,会在训练执行目录下将溢出的API信息按照前向和反向分类,dump并保存为`dump.json`,前向过程溢出的API可通过该工具对`dump.json`进行解析,输出溢出API为正常溢出还是非正常溢出,从而帮助用户快速判断。
4
-
5
- 工具支持PyTorch版本:1.11/2.0/2.1/2.2。
6
-
7
- 操作步骤如下:
8
-
9
- 1. 安装工具。
10
-
11
- 详见《[MindStudio精度调试工具](../../README.md)》的“工具安装”章节。
12
-
13
- 2. 执行溢出API解析操作。
14
-
15
- ```bash
16
- msprobe -f pytorch run_overflow_check -api_info ./dump.json
17
- ```
18
-
19
- | 参数名称 | 说明 | 是否必选 |
20
- | -------------------------- | -------------------------------------------------- | -------- |
21
- | -api_info或--api_info_file | 指定API信息文件dump.json。 | 是 |
22
- | -j或--jit_compile | 开启jit编译。 | 否 |
23
- | -d或--device | 指定Device ID,选择UT代码运行所在的卡,默认值为0。 | 否 |
24
-
25
- 反向过程溢出的API暂不支持该功能。
@@ -1,90 +0,0 @@
1
- # **PyTorch NPU在线精度比对工具使用指南**
2
-
3
- PyTorch NPU在线精度比对是ptdbg_ascend工具实现在PyTorch训练过程中直接完成精度比对并输出比对结果的功能。
4
-
5
- 在线精度比对实现的是NPU与CPU之间的精度比对。
6
-
7
- ## PyTorch NPU在线精度比对总体流程
8
-
9
- 1. 准备NPU训练工程。
10
-
11
- 2. 在NPU环境下安装ptdbg_ascend工具,参见《[PyTorch精度工具](https://gitee.com/ascend/mstt/blob/master/debug/accuracy_tools/ptdbg_ascend/README.md)》。
12
-
13
- 3. 在训练脚本内插入ptdbg_ascend工具在线精度比对接口。
14
-
15
- 4. 执行训练并获取在线精度比对NPU和CPU分别执行后的精度比对结果。
16
-
17
- 5. 比对结果分析。
18
-
19
- ## PyTorch NPU在线精度比对
20
- ### 总体说明
21
- - 本节主要介绍NPU精度比对所需要的函数以及示例。
22
- - 在线精度比对工具通过截获PyTorch框架中部分Aten Ir及其输入输出,并将输入数据转到CPU执行,最后将NPU和CPU的执行结果进行精度比对得到比对结果。
23
-
24
- ### 约束
25
-
26
- - Pytorch 只支持2.0及其以上版本。
27
- - 只支持Aten Ir级在线精度比对,所有Aten Ir可以通过dir(torch.ops.aten)查看,其中部分IR不支持在线比对:Aten Ir无对应CPU实现、NPU和CPU同AtenIR实现逻辑不一致,导致同输入不同输出。
28
- - 正反向不支持同时在线精度比对,不支持跨step在线精度比对。
29
-
30
-
31
- ### 场景示例
32
- 1. 在NPU训练脚本中添加在线精度比对接口,示例如下:
33
-
34
- ```python
35
- from msprobe.pytorch.common.utils import seed_all
36
- from msprobe.pytorch.online_dispatch import PtdbgDispatch
37
-
38
- # 在main函数开始前固定随机数
39
- seed_all()
40
-
41
-
42
- ...
43
-
44
- # 在需要调试精度的正向或反向代码前设置
45
- # 正向示例
46
- with PtdbgDispatch(dump_mode="auto", dump_path="/home/dump"):
47
- output = model_cpu(inputs)
48
- # 反向示例
49
- with PtdbgDispatch(dump_mode="auto", dump_path="/home/dump"):
50
- loss.backward()
51
- ```
52
-
53
- 2. 执行训练。
54
-
55
- 3. 找出精度不达标的Aten IR。
56
-
57
- 执行过程中会打屏Failed,Failed在比对结果csv中的Accuracy Reached or Not列标记为No,并在Dump目录下存盘精度不达标Aten IR的输入输出。
58
- ![图片说明](http://image.huawei.com/tiny-lts/v1/images/d83d564e337e80c7cfb557ca3600d0d4_1689x178.png@900-0-90-f.png)
59
-
60
- ### 计算精度评价指标
61
-
62
- 1. Cosine < 0.99 且 MaxAbsError > 0.001时,精度不达标;
63
- 2. Cosine < 0.9,精度不达标;
64
- 3. MaxAbsError > 1,精度不达标。
65
-
66
- ### 在线精度比对参数设置说明
67
-
68
- | 参数名称 | 说明 | 是否必选 |
69
- | -------- |-------------------------------------------------------------------------------------------------| -------- |
70
- | dump_mode| dump模式,可取值"all"、"list"、"auto"、"OFF",默认值为OFF(表示不Dump数据)。 | 否 |
71
- | api_list | dump范围,dump_mode="list"时设置,需要Dump Aten Ir API名称,默认为None,Aten Ir API名称可以通过dir(torch.ops.aten)查看。 | 否 |
72
- | dump_path| dump文件生成的路径。 | 是 |
73
- | tag | 传入tag字符串,成为dump文件夹名一部分,默认为None。 | 否 |
74
- | process_num | 多进程并发数,默认为0。 | 否 |
75
- | debug | debug信息打印,默认为False。 | 否 |
76
- ### dump数据存盘说明
77
- dump数据存盘目录名格式:`msprobe_tag_rankid_{timestamp}`。
78
-
79
- 子目录下包含1个比对结果csv文件、cpu和npudump数据目录,npu目录下包含Aten IR在NPU上的输入输出的dump数据,由于CPU的输入是直接使用NPU的输入执行,因此cpu目录下只包含执行输出的dump数据。
80
-
81
- ```bash
82
- msprobe_rank4_20230911170521
83
- ├── compare_result_rank4_20230911170521.csv
84
- ├── cpu
85
- │   ├── native_batch_norm_backward_10_output.0.npy
86
- │ ............
87
- └── npu
88
- ├── native_batch_norm_backward_10_input.0.npy
89
- ............
90
- ```