mindstudio-probe 1.0.3__py3-none-any.whl → 1.1.0__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 (278) hide show
  1. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/LICENSE +201 -201
  2. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/METADATA +36 -34
  3. mindstudio_probe-1.1.0.dist-info/RECORD +287 -0
  4. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/WHEEL +1 -1
  5. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/entry_points.txt +1 -0
  6. msprobe/README.md +131 -237
  7. msprobe/__init__.py +16 -1
  8. msprobe/{config/config.json → config.json} +47 -49
  9. msprobe/core/advisor/advisor.py +124 -124
  10. msprobe/core/advisor/advisor_const.py +58 -59
  11. msprobe/core/advisor/advisor_result.py +58 -58
  12. msprobe/core/common/const.py +402 -318
  13. msprobe/core/common/exceptions.py +99 -99
  14. msprobe/core/common/{file_check.py → file_utils.py} +523 -283
  15. msprobe/core/common/inplace_op_checker.py +38 -0
  16. msprobe/core/common/inplace_ops.yaml +251 -0
  17. msprobe/core/common/log.py +86 -69
  18. msprobe/core/common/utils.py +371 -616
  19. msprobe/core/common_config.py +78 -71
  20. msprobe/core/compare/acc_compare.py +472 -298
  21. msprobe/core/compare/check.py +180 -95
  22. msprobe/core/compare/compare_cli.py +69 -49
  23. msprobe/core/compare/highlight.py +259 -222
  24. msprobe/core/compare/multiprocessing_compute.py +174 -149
  25. msprobe/core/compare/npy_compare.py +310 -295
  26. msprobe/core/compare/utils.py +464 -429
  27. msprobe/core/data_dump/data_collector.py +153 -144
  28. msprobe/core/data_dump/data_processor/base.py +337 -293
  29. msprobe/core/data_dump/data_processor/factory.py +76 -59
  30. msprobe/core/data_dump/data_processor/mindspore_processor.py +192 -198
  31. msprobe/core/data_dump/data_processor/pytorch_processor.py +383 -389
  32. msprobe/core/data_dump/json_writer.py +117 -116
  33. msprobe/core/data_dump/scope.py +194 -178
  34. msprobe/core/grad_probe/constant.py +74 -70
  35. msprobe/core/grad_probe/grad_compare.py +170 -175
  36. msprobe/core/grad_probe/utils.py +77 -52
  37. msprobe/docs/01.installation.md +99 -0
  38. msprobe/docs/02.config_introduction.md +137 -0
  39. msprobe/docs/03.config_examples.md +237 -0
  40. msprobe/docs/04.acl_config_examples.md +78 -0
  41. msprobe/docs/05.data_dump_PyTorch.md +326 -0
  42. msprobe/docs/06.data_dump_MindSpore.md +285 -0
  43. msprobe/docs/07.accuracy_checker_PyTorch.md +297 -0
  44. msprobe/docs/08.accuracy_checker_online_PyTorch.md +238 -0
  45. msprobe/docs/09.accuracy_checker_MindSpore.md +68 -0
  46. msprobe/docs/10.accuracy_compare_PyTorch.md +327 -0
  47. msprobe/docs/11.accuracy_compare_MindSpore.md +333 -0
  48. msprobe/docs/12.overflow_check_PyTorch.md +79 -0
  49. msprobe/docs/13.overflow_check_MindSpore.md +31 -0
  50. msprobe/{pytorch/doc/parse_tool.md → docs/14.data_parse_PyTorch.md} +283 -286
  51. msprobe/docs/15.free_benchmarking_PyTorch.md +170 -0
  52. msprobe/docs/16.free_benchmarking_MindSpore.md +140 -0
  53. msprobe/{doc/grad_probe/grad_probe.md → docs/17.grad_probe.md} +205 -207
  54. 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 → docs/18.online_dispatch.md} +89 -90
  55. msprobe/docs/FAQ.md +189 -0
  56. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +146 -0
  57. msprobe/docs/img/free_benchmark_framework.png +0 -0
  58. msprobe/docs/img/ms_dump.png +0 -0
  59. msprobe/docs/img/ms_layer.png +0 -0
  60. msprobe/docs/img/pt_dump.png +0 -0
  61. msprobe/mindspore/__init__.py +2 -1
  62. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +278 -245
  63. msprobe/mindspore/api_accuracy_checker/api_info.py +76 -69
  64. msprobe/mindspore/api_accuracy_checker/api_runner.py +155 -151
  65. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +196 -196
  66. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +6 -0
  67. msprobe/mindspore/api_accuracy_checker/compute_element.py +238 -223
  68. msprobe/mindspore/api_accuracy_checker/main.py +8 -15
  69. msprobe/mindspore/api_accuracy_checker/type_mapping.py +113 -113
  70. msprobe/mindspore/api_accuracy_checker/utils.py +79 -62
  71. msprobe/mindspore/cell_processor.py +58 -34
  72. msprobe/mindspore/common/const.py +108 -87
  73. msprobe/mindspore/common/log.py +37 -37
  74. msprobe/mindspore/common/utils.py +97 -57
  75. msprobe/mindspore/compare/distributed_compare.py +62 -75
  76. msprobe/mindspore/compare/layer_mapping.py +146 -0
  77. msprobe/mindspore/compare/modify_mapping.py +107 -0
  78. msprobe/mindspore/compare/ms_compare.py +357 -117
  79. msprobe/mindspore/compare/ms_graph_compare.py +364 -317
  80. msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -399
  81. msprobe/mindspore/debugger/debugger_config.py +69 -74
  82. msprobe/mindspore/debugger/precision_debugger.py +150 -107
  83. msprobe/mindspore/dump/dump_tool_factory.py +50 -35
  84. msprobe/mindspore/dump/hook_cell/api_registry.py +128 -104
  85. msprobe/mindspore/dump/hook_cell/hook_cell.py +55 -53
  86. msprobe/mindspore/dump/hook_cell/primitive_hooks.py +206 -0
  87. msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +994 -925
  88. msprobe/mindspore/dump/hook_cell/wrap_api.py +121 -0
  89. msprobe/mindspore/dump/jit_dump.py +96 -56
  90. msprobe/mindspore/dump/kernel_graph_dump.py +75 -60
  91. msprobe/mindspore/dump/kernel_kbyk_dump.py +79 -65
  92. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +131 -116
  93. msprobe/mindspore/free_benchmark/common/config.py +27 -12
  94. msprobe/mindspore/free_benchmark/common/handler_params.py +32 -17
  95. msprobe/mindspore/free_benchmark/common/utils.py +85 -71
  96. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -842
  97. msprobe/mindspore/free_benchmark/decorator/dec_forward.py +57 -42
  98. msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +122 -107
  99. msprobe/mindspore/free_benchmark/handler/base_handler.py +105 -90
  100. msprobe/mindspore/free_benchmark/handler/check_handler.py +56 -41
  101. msprobe/mindspore/free_benchmark/handler/fix_handler.py +51 -36
  102. msprobe/mindspore/free_benchmark/handler/handler_factory.py +36 -21
  103. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +82 -67
  104. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +36 -21
  105. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +78 -63
  106. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +77 -0
  107. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +49 -34
  108. msprobe/mindspore/free_benchmark/perturbation/no_change.py +27 -12
  109. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +44 -27
  110. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +48 -33
  111. msprobe/mindspore/grad_probe/global_context.py +100 -91
  112. msprobe/mindspore/grad_probe/grad_analyzer.py +231 -231
  113. msprobe/mindspore/grad_probe/grad_monitor.py +27 -27
  114. msprobe/mindspore/grad_probe/grad_stat_csv.py +131 -131
  115. msprobe/mindspore/grad_probe/hook.py +94 -92
  116. msprobe/mindspore/grad_probe/utils.py +29 -28
  117. msprobe/mindspore/ms_config.py +128 -126
  118. msprobe/mindspore/overflow_check/kernel_graph_overflow_check.py +60 -45
  119. msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +49 -34
  120. msprobe/mindspore/runtime.py +4 -4
  121. msprobe/mindspore/service.py +297 -354
  122. msprobe/mindspore/task_handler_factory.py +24 -24
  123. msprobe/msprobe.py +105 -107
  124. msprobe/pytorch/__init__.py +23 -4
  125. msprobe/pytorch/api_accuracy_checker/common/config.py +70 -55
  126. msprobe/pytorch/api_accuracy_checker/common/utils.py +246 -165
  127. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +230 -213
  128. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +632 -581
  129. msprobe/pytorch/api_accuracy_checker/compare/api_precision_standard.yaml +132 -132
  130. msprobe/pytorch/api_accuracy_checker/compare/api_precision_threshold.yaml +390 -390
  131. msprobe/pytorch/api_accuracy_checker/compare/compare.py +416 -381
  132. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +90 -73
  133. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +265 -244
  134. msprobe/pytorch/api_accuracy_checker/config.yaml +10 -10
  135. msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +370 -332
  136. msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +221 -199
  137. msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +150 -134
  138. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +518 -581
  139. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +213 -74
  140. msprobe/pytorch/api_accuracy_checker/run_ut/torch_ut_setting.json +7 -4
  141. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +218 -202
  142. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +370 -324
  143. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +227 -204
  144. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/dump_dispatch.py +110 -0
  145. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +244 -218
  146. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/torch_ops_config.yaml +63 -0
  147. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py +44 -0
  148. msprobe/pytorch/bench_functions/__init__.py +30 -15
  149. msprobe/pytorch/bench_functions/apply_adam_w.py +43 -28
  150. msprobe/pytorch/bench_functions/confusion_transpose.py +34 -19
  151. msprobe/pytorch/bench_functions/fast_gelu.py +70 -55
  152. msprobe/pytorch/bench_functions/layer_norm_eval.py +21 -6
  153. msprobe/pytorch/bench_functions/linear.py +27 -12
  154. msprobe/pytorch/bench_functions/matmul_backward.py +63 -48
  155. msprobe/pytorch/bench_functions/npu_fusion_attention.py +538 -421
  156. msprobe/pytorch/bench_functions/rms_norm.py +30 -15
  157. msprobe/pytorch/bench_functions/rotary_mul.py +71 -52
  158. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +41 -26
  159. msprobe/pytorch/bench_functions/swiglu.py +70 -55
  160. msprobe/pytorch/common/__init__.py +17 -2
  161. msprobe/pytorch/common/compare_script.template +14 -14
  162. msprobe/pytorch/common/log.py +33 -32
  163. msprobe/pytorch/common/parse_json.py +54 -39
  164. msprobe/pytorch/common/utils.py +310 -300
  165. msprobe/pytorch/compare/distributed_compare.py +66 -66
  166. msprobe/pytorch/compare/mapping.yaml +607 -607
  167. msprobe/pytorch/compare/match.py +49 -33
  168. msprobe/pytorch/compare/pt_compare.py +82 -40
  169. msprobe/pytorch/debugger/debugger_config.py +108 -95
  170. msprobe/pytorch/debugger/precision_debugger.py +173 -125
  171. msprobe/pytorch/free_benchmark/__init__.py +23 -8
  172. msprobe/pytorch/free_benchmark/common/constant.py +70 -70
  173. msprobe/pytorch/free_benchmark/common/counter.py +71 -71
  174. msprobe/pytorch/free_benchmark/common/enums.py +65 -37
  175. msprobe/pytorch/free_benchmark/common/params.py +144 -129
  176. msprobe/pytorch/free_benchmark/common/utils.py +118 -102
  177. msprobe/pytorch/free_benchmark/compare/grad_saver.py +200 -179
  178. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +119 -104
  179. msprobe/pytorch/free_benchmark/main.py +120 -105
  180. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +28 -13
  181. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +56 -41
  182. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +105 -90
  183. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +119 -104
  184. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +87 -63
  185. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +83 -68
  186. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +43 -28
  187. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +60 -45
  188. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +34 -19
  189. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +256 -217
  190. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +54 -39
  191. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +38 -23
  192. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +45 -30
  193. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +185 -170
  194. msprobe/pytorch/function_factory.py +91 -75
  195. msprobe/pytorch/functional/module_dump.py +84 -0
  196. msprobe/pytorch/grad_probe/grad_monitor.py +91 -90
  197. msprobe/pytorch/grad_probe/grad_stat_csv.py +128 -128
  198. msprobe/pytorch/hook_module/__init__.py +16 -1
  199. msprobe/pytorch/hook_module/api_registry.py +166 -161
  200. msprobe/pytorch/hook_module/hook_module.py +118 -120
  201. msprobe/pytorch/hook_module/support_wrap_ops.yaml +1879 -1877
  202. msprobe/pytorch/hook_module/utils.py +28 -29
  203. msprobe/pytorch/hook_module/wrap_aten.py +111 -110
  204. msprobe/pytorch/hook_module/wrap_distributed.py +77 -78
  205. msprobe/pytorch/hook_module/wrap_functional.py +104 -105
  206. msprobe/pytorch/hook_module/wrap_npu_custom.py +85 -84
  207. msprobe/pytorch/hook_module/wrap_tensor.py +69 -71
  208. msprobe/pytorch/hook_module/wrap_torch.py +84 -86
  209. msprobe/pytorch/hook_module/wrap_vf.py +60 -62
  210. msprobe/pytorch/module_processer.py +153 -138
  211. msprobe/pytorch/online_dispatch/__init__.py +20 -20
  212. msprobe/pytorch/online_dispatch/compare.py +235 -236
  213. msprobe/pytorch/online_dispatch/dispatch.py +271 -271
  214. msprobe/pytorch/online_dispatch/dump_compare.py +155 -156
  215. msprobe/pytorch/online_dispatch/single_compare.py +391 -391
  216. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +57 -49
  217. msprobe/pytorch/online_dispatch/utils.py +127 -146
  218. msprobe/pytorch/parse.py +19 -4
  219. msprobe/pytorch/parse_tool/cli.py +31 -32
  220. msprobe/pytorch/parse_tool/lib/compare.py +259 -271
  221. msprobe/pytorch/parse_tool/lib/config.py +52 -52
  222. msprobe/pytorch/parse_tool/lib/file_desc.py +31 -31
  223. msprobe/pytorch/parse_tool/lib/interactive_cli.py +102 -102
  224. msprobe/pytorch/parse_tool/lib/parse_exception.py +54 -54
  225. msprobe/pytorch/parse_tool/lib/parse_tool.py +161 -158
  226. msprobe/pytorch/parse_tool/lib/utils.py +320 -321
  227. msprobe/pytorch/parse_tool/lib/visualization.py +85 -91
  228. msprobe/pytorch/pt_config.py +317 -187
  229. msprobe/pytorch/service.py +311 -252
  230. mindstudio_probe-1.0.3.dist-info/RECORD +0 -272
  231. msprobe/config/README.md +0 -539
  232. msprobe/mindspore/doc/compare.md +0 -58
  233. msprobe/mindspore/doc/dump.md +0 -217
  234. msprobe/mindspore/dump/hook_cell/wrap_functional.py +0 -91
  235. msprobe/mindspore/dump/hook_cell/wrap_tensor.py +0 -63
  236. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +0 -10
  237. msprobe/pytorch/doc/FAQ.md +0 -193
  238. msprobe/pytorch/doc/api_accuracy_checker.md +0 -313
  239. msprobe/pytorch/doc/api_accuracy_checker_online.md +0 -187
  240. msprobe/pytorch/doc/dump.md +0 -260
  241. 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
  242. msprobe/pytorch/doc/ptdbg_ascend_compare.md +0 -240
  243. msprobe/pytorch/doc/ptdbg_ascend_overview.md +0 -68
  244. msprobe/pytorch/doc/ptdbg_ascend_quickstart.md +0 -381
  245. msprobe/pytorch/doc/run_overflow_check.md +0 -25
  246. 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
  247. msprobe/pytorch/functional/data_processor.py +0 -0
  248. msprobe/pytorch/functional/dump_module.py +0 -39
  249. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/top_level.txt +0 -0
  250. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_1.png +0 -0
  251. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_2.png +0 -0
  252. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_3.png +0 -0
  253. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_4.png +0 -0
  254. /msprobe/{pytorch/doc → docs}/img/GPT-3_1.png +0 -0
  255. /msprobe/{pytorch/doc → docs}/img/GPT-3_2.png +0 -0
  256. /msprobe/{pytorch/doc → docs}/img/GPT-3_3.png +0 -0
  257. /msprobe/{pytorch/doc → docs}/img/GPT-3_4.png +0 -0
  258. /msprobe/{pytorch/doc → docs}/img/GPT-3_5.png +0 -0
  259. /msprobe/{pytorch/doc → docs}/img/GPT-3_6.png +0 -0
  260. /msprobe/{pytorch/doc → docs}/img/GPT-3_7.png +0 -0
  261. /msprobe/{pytorch/doc → docs}/img/GPT-3_8.png +0 -0
  262. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_1.png +0 -0
  263. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_2.png +0 -0
  264. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_details.png +0 -0
  265. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_result.png +0 -0
  266. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_details.png +0 -0
  267. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_result.png +0 -0
  268. /msprobe/{pytorch/doc → docs}/img/auto_analyze_log.png +0 -0
  269. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl.png +0 -0
  270. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl_md5.png.png +0 -0
  271. /msprobe/{pytorch/doc → docs}/img/cpu_info.png +0 -0
  272. /msprobe/{config → docs}/img/free_benchmark.png +0 -0
  273. /msprobe/{doc/grad_probe/img/image-1.png → docs/img/grad_probe_image-1.png} +0 -0
  274. /msprobe/{doc/grad_probe/img/image-2.png → docs/img/grad_probe_image-2.png} +0 -0
  275. /msprobe/{doc/grad_probe/img/image-3.png → docs/img/grad_probe_image-3.png} +0 -0
  276. /msprobe/{doc/grad_probe/img/image-4.png → docs/img/grad_probe_image-4.png} +0 -0
  277. /msprobe/{doc/grad_probe/img/image.png → docs/img/grad_probe_image.png} +0 -0
  278. /msprobe/{pytorch/doc → docs}/img/module_compare.png +0 -0
@@ -1,286 +1,283 @@
1
- # **数据解析工具**
2
-
3
- 数据解析工具(parse_tool)提供命令行交互式界面,提供更多的数据解析功能并且展示结果。
4
-
5
- 使用场景:本工具主要用于精度比对前后两次NPU kernel层级dump数据的一致性。
6
-
7
- ## 进入parse交互式界面
8
-
9
- 安装msprobe工具后(详见《[MindStudio精度调试工具](../../README.md)》的“工具安装”章节),可以通过使用命令 **msprobe -f pytorch parse** 进入交互式界面,如下所示:
10
-
11
- ```bash
12
- msprobe -f pytorch parse
13
- Parse >>>
14
- ```
15
-
16
- 可在parse的界面中执行Shell命令,以及如下场景的相关解析命令:
17
-
18
- - 支持指定kernel层级算子数据比对。
19
- - 支持指定kernel层级算子数据转换及展示。
20
- - 支持交互式指定pkl文件中API对应dump数据查看。
21
- - 支持API进行可选层级比对和打印(统计级和像素级)。
22
-
23
- Ctrl+C可以退出parse交互式界面。不退出parse交互式界面若需要执行非该界面下的内置Shell命令,且命令与parse交互式界面命令冲突时,非该界面命令需要使用run命令,在相关命令前加上run前缀,如下示例:
24
-
25
- ```bash
26
- msprobe -f pytorch parse
27
- Parse >>> run vim cli.py
28
- Parse >>> vim cli.py
29
- ```
30
-
31
- 以上各场景详细介绍请参见下文章节。
32
-
33
- ## kernel层级算子数据批量转换
34
-
35
- 本功能会将原有待比对dump数据目录下的dump数据按照算子名和时间戳进行梳理并分类,之后再将dump数据转为为npy文件。
36
-
37
- 依赖:CANN包中的msaccucmp工具,需要安装Ascend-CANN-toolkit,详见《[CANN 软件安装指南](https://gitee.com/link?target=https%3A%2F%2Fwww.hiascend.com%2Fdocument%2Fdetail%2Fzh%2Fcanncommercial%2F700%2Fenvdeployment%2Finstg%2Finstg_0001.html)》。
38
-
39
- 输入以下比对命令进行数据转换。
40
-
41
- ```bash
42
- cad -m my_dump_path [-out output_path] [-asc msaccucmp_path]
43
- ```
44
-
45
- | 参数名称 | 说明 | 是否必选 |
46
- | -------- | ------------------------------------------------------------ | -------- |
47
- | -m | 待转换kernel dump数据目录。需要指定到kernel dump数据的deviceid级目录。 | 是 |
48
- | -out | 结果输出目录,须指定已存在的目录,默认为./parse_data/acl_batch_convert。未指定时保存在默认路径下,比对结束后会打印log提示输出结果存放路径。 | |
49
- | -asc | 指定msaccucmp路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py。 | |
50
-
51
- **示例**
52
-
53
- ```
54
- # 传入待比对数据目录
55
- Parse >>> cad -m /home/xxx/my_dump_path/20000124003856/0
56
- # 转换结果打印
57
- ......
58
- ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮
59
- # 转换前的dump文件
60
- │ SrcFile: /home/xxx/my_dump_path/20000124003856/0/272/TransData.trans_TransData_22.112.21.948645536672764 │
61
- # 转换后的npy文件
62
- - TransData.trans_TransData_22.112.21.948645536672764.output.0.npy
63
- - TransData.trans_TransData_22.112.21.948645536672764.input.0.npy
64
- ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
65
- ......
66
- [INFO] The comparison result have been written to "./parse_data/acl_batch_convert".
67
- ```
68
-
69
- 输出结果:
70
-
71
- 原dump数据目录:
72
-
73
- ```
74
- ├── /home/xxx/my_dump_path/20000124003856/0/
75
- │ ├── 272
76
- │ │ ├── {op_type}.{op_name}.{task_id}.{stream_id}.{timestamp}
77
- │ ...
78
- │ ├── 512
79
- │ ...
80
- ```
81
-
82
- 转换后:
83
-
84
- ```
85
- ├── ./parse_data/acl_batch_convert/{timestamp}
86
- │ ├── {op_name1}
87
- │ │ ├── {timestamp1}
88
- │ | ├── {op_type}.{op_name}.{task_id}.{stream_id}.{timestamp}.{input/output}.{参数序号}.npy
89
- │ │ | │ ...
90
- │ │ ├── {timestamp2}
91
- │ │ | ...
92
- │ ├── {op_name2}
93
- ├── ...
94
- ```
95
-
96
- ## kernel层级算子数据比对
97
-
98
- 本功能主要用于比对前后两次NPU kernel层级dump数据的一致性。
99
-
100
- 本功能支持批量比对,若需要进行批量比对,需要先将两份待比对的NPU kernel层级dump数据进行“**kernel层级算子数据批量转换**”,可以使两份数据更好的匹配;若直接进行dump数据的比对,建议只比对单个dump数据文件。
101
-
102
- 输入以下比对命令进行数据比对。
103
-
104
- ```bash
105
- vc -m my_dump_path -g golden_dump_path [-out output_path] [-cmp_path msaccucmp_path]
106
- ```
107
-
108
- | 参数名称 | 说明 | 是否必选 |
109
- | --------- | ------------------------------------------------------------ | -------- |
110
- | -m | 待比对kernel dump数据目录。如果比对单个算子,需要指定到kernel dump数据的model_id级目录;如果批量比对,则指定到cad转换后的timestamp级目录。 | 是 |
111
- | -g | 标杆kernel dump数据目录。如果比对单个算子,需要指定到kernel dump数据的model_id级目录;如果批量比对,则指定到cad转换后的timestamp级目录。 | 是 |
112
- | -out | 结果输出目录,须指定已存在的目录,默认为./parse_data/acl_batch_comapre。未指定时保存在默认路径下,比对结束后会打印log提示输出结果存放路径。 | 否 |
113
- | -cmp_path | 指定msaccucmp路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
114
-
115
- 输出结果:batch_compare_{timestamp}.csv文件。
116
-
117
- **示例**
118
-
119
- ```bash
120
- # 传入待比对数据目录以及标杆数据目录
121
- Parse >>> vc -m ./my_dump_path -g ./golden_data_path
122
- [INFO]Compare result is saved in : parse_data/acl_batch_comapre/batch_compare_1707271118.csv
123
- ```
124
-
125
- ## kernel算子数据的npy转换
126
-
127
- 依赖:CANN包中的msaccucmp工具,需要安装Ascend-CANN-toolkit,详见《[CANN 软件安装指南](https://gitee.com/link?target=https%3A%2F%2Fwww.hiascend.com%2Fdocument%2Fdetail%2Fzh%2Fcanncommercial%2F700%2Fenvdeployment%2Finstg%2Finstg_0001.html)》。
128
-
129
- 输入以下转换命令进行数据转换, 将kernel级别dump数据转为npy文件。
130
-
131
- ```bash
132
- dc -n file_name/file_path [-f format] [-out output_path]
133
- ```
134
-
135
- | 参数名称 | 说明 | 是否必选 |
136
- | --------- | ------------------------------------------------------------ | -------- |
137
- | -n | 需转换的dump数据文件或dump数据文件目录。 | |
138
- | -f | 开启format转换,指定该参数时需要配置format格式。当前内置的Format转换支持如下类型: FRACTAL_NZ转换NCHW FRACTAL_NZ转换成NHWC FRACTAL_NZ转换ND HWCN转换FRACTAL_Z HWCN转换成NCHW HWCN转换成NHWC NC1HWC0转换成HWCN NC1HWC0转换成NCHW NC1HWC0转换成NHWC NCHW转换成FRACTAL_Z NCHW转换成NHWC NHWC转换成FRACTAL_Z NHWC转换成HWCN NHWC转换成NCHW NDC1HWC0转换成NCDHW | 否 |
139
- | -out | 结果输出目录。 | 否 |
140
- | -cmp_path | 指定msaccucmp路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
141
-
142
- - 输出结果:npy文件。
143
-
144
- - 若指定-out参数需要用户传入输出路径,并且路径需要已存在。
145
-
146
- - 若未指定输出目录, 则比对结束后将结果保存在默认目录 “./parse_data/convert_result”中,比对结束后会打印log提示输出结果存放路径及转换结果。
147
-
148
- - 输入以下命令,展示npy数据统计信息。
149
-
150
- ```bash
151
- pt -n file_path
152
- ```
153
-
154
- | 参数名称 | 说明 | 是否必选 |
155
- | -------- | ------------- | -------- |
156
- | -n | npy文件路径。 | 是 |
157
-
158
- 打印统计信息:shape, dtype, max, min和mean。默认在npy文件路径下将该数据保存为txt文件。
159
-
160
- **示例1**
161
-
162
- ```bash
163
- # 传入需转换的dump文件目录
164
- Parse >>> dc -n ./dump_data/
165
- ......
166
- # 转换结果
167
- ╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮
168
- SrcFile: ./dump_data/
169
- │ - Add.fp32_vars_add_2fp32_vars_Relu_9.31.5.1636595794731103.input.0.npy │
170
- │ - Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.output.0.npy
171
- │ - Add.fp32_vars_add_2fp32_vars_Relu_9.31.5.1636595794731103.input.1.npy
172
- │ - Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.input.1.npy │
173
- │ - Add.fp32_vars_add_3fp32_vars_Relu_12.40.5.1636595794846124.input.1.npy │
174
- │ - Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.input.0.npy
175
- │ - Add.fp32_vars_add_3fp32_vars_Relu_12.40.5.1636595794846124.input.0.npy
176
- │ - Add.fp32_vars_add_2fp32_vars_Relu_9.31.5.1636595794731103.output.0.npy │
177
- │ - Add.fp32_vars_add_3fp32_vars_Relu_12.40.5.1636595794846124.output.0.npy │
178
- ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
179
- ```
180
-
181
- **示例2**
182
-
183
- ```bash
184
- # 查看某个dump数据块的数据信息
185
- # 默认会将数据中的tensor保存成 txt
186
- Parse >>> pt -n ./parse_data/dump_convert/Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.output.0.npy
187
- ......
188
- # 打印统计信息
189
- [Shape: (1, 16, 56, 56, 16)] [Dtype: float16] [Max: 452.0] [Min: -408.5] [Mean: -3.809]
190
- Path: ./parse_data/dump_convert/Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.input.0.npy
191
- TextFile:./parse_data/dump_convert/Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.input.0.npy.txt
192
- ```
193
-
194
- ## dump.json文件中指定API的dump数据信息查看(暂不支持)
195
-
196
- 输入以下命令,解析并输出dump.json文件中指定API的统计信息。
197
-
198
- ```bash
199
- pk -f pkl_path -n api_name
200
- ```
201
-
202
- | 参数名称 | 说明 | 是否必选 |
203
- | -------- | ----------------------- | -------- |
204
- | -f | 指定dump.json文件路径。 | 是 |
205
- | -n | 指定API名称。 | 是 |
206
-
207
- - 输出结果:打印统计信息(shape, dtype, max和min mean)。
208
- - 若pkl文件中存在相应的堆栈信息,则会打印堆栈信息。
209
-
210
- **示例**
211
-
212
- ```bash
213
- # 传入pkl文件及api名称
214
- Parse >>> pk -f ./torch_dump/xxx/rank0/dump.json -n Functional_conv2d_0_forward
215
- ......
216
- # 打印统计信息及堆栈(pkl文件不包含堆栈则不会打印堆栈)
217
-
218
- Statistic Info:
219
- [Functional_conv2d_0_forward_input.0][dtype: torch.float32][shape: [2, 1, 2, 2]][max: 1.576936960220337][min: -0.9757485389709473][mean: 0.4961632490158081]
220
- [Functional_conv2d_0_forward_input.1][dtype: torch.float32][shape: [2, 1, 2, 2]][max: 0.20064473152160645][min: -0.47102075815200806][mean: -0.20796933770179749]
221
- [Functional_conv2d_0_forward_input.2][dtype: torch.float32][shape: [2]][max: 0.17380613088607788][min: -0.16853803396224976][mean: 0.0026340484619140625]
222
- [Functional_conv2d_0_forward_output][dtype: torch.float32][shape: [2, 2, 1, 1]][max: 0.02364911139011383][min: -1.762906551361084][mean: -0.6710853576660156]
223
- ```
224
-
225
- ## API可选层级比对
226
-
227
- 输入以下命令, 进行统计级和像素级比对。
228
-
229
- ```bash
230
- cn -m my_data*.npy -g gloden*.npy [-p num] [-al atol] [-rl rtol]
231
- ```
232
-
233
- - 统计级比对:对tensor整体进行余弦值及相对误差的计算。
234
- - 像素级比对:对输入的两个npy文件进行逐元素比对。若两个tensor对应元素的相对误差或绝对误差大于**误差阈值**(-al和-rl配置)则被标记为错误数据。
235
-
236
- | 参数名称 | 说明 | 是否必选 |
237
- | -------- | ----------------------------------------------- | -------- |
238
- | -m | 待比对数据。 | |
239
- | -g | 标杆数据。 | |
240
- | -p | 设置比对结束后打印错误元素的个数,默认值20 | 否 |
241
- | -al | 判定数据存在精度问题的绝对误差阈值,默认0.001。 | 否 |
242
- | -rl | 判定数据存在精度问题的相对误差阈值,默认0.001。 | 否 |
243
- | -s | 将npy文件保存成txt文件,用于查看,默认开启。 | 否 |
244
-
245
- 输出结果:
246
-
247
- - 统计级比对结果。
248
- - 两个文件的统计信息(shape, dtype, max, min和mean)。
249
- - 错误数据打印表格。
250
-
251
- **示例**
252
-
253
- ```bash
254
- # 对比两个tensor的数据
255
- Parse >>> cn -m Add.InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.323.1619494134703053.output.0.npy -g InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.0.1619492699305998.npy -p 10 -s -al 0.002 -rl 0.005
256
- Error Item Table Top Item Table
257
- ┏━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓ ┏━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
258
- Index Left ┃ Right ┃ Diff ┃ Index Left ┃ Right ┃ Diff ┃
259
- ┡━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩ ┡━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
260
- 155 │ 0.024600908 │ 0.022271132 │ 0.002329776 │ │ 0 │ -0.9206961 │ -0.9222216 │ 0.0015255213
261
- 247 │ 0.015752593 │ 0.017937578 │ 0.0021849852 │ │ 1 │ -0.6416973 │ -0.64051837 │ 0.0011789203
262
- 282 │ -0.0101207765 │ -0.007852031 │ 0.0022687456 │ │ 2 │ -0.35383835 │ -0.35433492 │ 0.0004965663
263
- 292 │ 0.019581757 │ 0.02240482 │ 0.0028230622 │ │ 3-0.18851271 -0.18883198 │ 0.00031927228
264
- 640 │ -0.06593232 │ -0.06874806 │ 0.0028157383 │ │ 4 │ -0.43508735 │ -0.43534422 │ 0.00025686622
265
- 1420 │ 0.09293677 │ 0.09586689 │ 0.0029301196 │ │ 51.4447614 1.4466647 │ 0.0019032955
266
- 1462-0.085207745 -0.088047795 │ 0.0028400496 │ │ 6 │ -0.3455438 │ -0.3444429 │ 0.0011008978
267
- 1891 │ -0.03433288 │ -0.036525503 │ 0.002192624 │ │ 7 │ -0.6560242 │ -0.6564579 │ 0.0004336834
268
- 2033 │ 0.06828873 │ 0.07139922 │ 0.0031104907 │ │ 8 │ -2.6964858 │ -2.6975214 │ 0.0010356903 │
269
- │ 2246 │ -0.06376442 │ -0.06121233 │ 0.002552092 │ │ 9 │ -0.73746175 │ -0.73650354 │ 0.00095820427 │
270
- └───────┴───────────────┴──────────────┴──────────────┘ └───────┴─────────────┴─────────────┴───────────────┘
271
- ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
272
- Left: |
273
- │ |- NpyFile: ./dump/temp/decode/Add.InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.323.1619494134703053.output.0.npy |
274
- |- TxtFile: ./dump/temp/decode/Add.InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.323.1619494134703053.output.0.npy.txt |
275
- │ |- NpySpec: [Shape: (32, 8, 8, 320)] [Dtype: float32] [Max: 5.846897] [Min: -8.368301] [Mean: -0.72565556] |
276
- DstFile:
277
- │ |- NpyFile: ./dump/cpu/InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.0.1619492699305998.npy |
278
- |- TxtFile: ./dump/cpu/InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.0.1619492699305998.npy.txt |
279
- |- NpySpec: [Shape: (32, 8, 8, 320)] [Dtype: float32] [Max: 5.8425903] [Min: -8.374472] [Mean: -0.7256237]
280
- NumCnt: 655360
281
- AllClose: False
282
- │ CosSim: 0.99999493 │
283
- │ ErrorPer: 0.023504638671875 (rl= 0.005, al= 0.002) │
284
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
285
- ```
286
-
1
+ # PyTorch 场景的数据解析
2
+
3
+ ## 1 简介
4
+
5
+ 数据解析功能提供命令行交互式界面,提供了更多的结果展示。
6
+
7
+ 使用场景:本工具主要用于精度比对前后两次 NPU kernel 层级 dump 数据的一致性。
8
+
9
+ 依赖:CANN 包中的 msaccucmp 工具,需要安装 Ascend-CANN-toolkit,详见《[CANN 软件安装指南](https://gitee.com/link?target=https%3A%2F%2Fwww.hiascend.com%2Fdocument%2Fdetail%2Fzh%2Fcanncommercial%2F700%2Fenvdeployment%2Finstg%2Finstg_0001.html)》。
10
+
11
+ ## 2 数据解析操作指导
12
+
13
+ ### 2.1 进入 parse 交互式界面
14
+
15
+ 安装 msprobe 工具后,可以通过使用命令 `msprobe -f pytorch parse` 进入交互式界面,如下所示:
16
+
17
+ ```bash
18
+ msprobe -f pytorch parse
19
+ Parse >>>
20
+ ```
21
+
22
+ 可在 parse 的界面中执行 Shell 命令,以及如下场景的相关解析命令(详细介绍请参见以下章节。):
23
+
24
+ - 支持指定 kernel 层级算子数据比对。
25
+ - 支持指定 kernel 层级算子数据转换及展示。
26
+ - 支持交互式指定 pkl 文件中 API 对应 dump 数据查看。
27
+ - 支持 API 进行可选层级比对和打印(统计级和像素级)。
28
+
29
+ Ctrl+C 可以退出 parse 交互式界面。不退出 parse 交互式界面若需要执行非该界面下的内置 Shell 命令,且命令与 parse 交互式界面命令冲突时,非该界面命令需要使用 run 命令,在相关命令前加上 run 前缀,如下示例:
30
+
31
+ ```bash
32
+ msprobe -f pytorch parse
33
+ Parse >>> run vim cli.py
34
+ Parse >>> vim cli.py
35
+ ```
36
+
37
+ ### 2.2 kernel 层级算子数据批量转换
38
+
39
+ 本功能会将原有待比对 dump 数据目录下的 dump 数据按照算子名和时间戳进行梳理并分类,之后再将 dump 数据转为 npy 文件。
40
+
41
+ 输入以下比对命令进行数据转换。
42
+
43
+ ```bash
44
+ cad -m my_dump_path [-out output_path] [-asc msaccucmp_path]
45
+ ```
46
+
47
+ | 参数名称 | 说明 | 是否必选 |
48
+ | -------- | ------------------------------------------------------------ | -------- |
49
+ | -m | 待转换 kernel dump 数据目录。需要指定到 kernel dump 数据的 deviceid 级目录。 | |
50
+ | -out | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_convert。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 |
51
+ | -asc | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py。 | 否 |
52
+
53
+ **示例代码**:
54
+
55
+ ```bash
56
+ # 传入待比对数据目录
57
+ Parse >>> cad -m /home/xxx/my_dump_path/20000124003856/0
58
+ # 转换结果打印
59
+ ......
60
+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮
61
+ # 转换前的dump文件
62
+ SrcFile: /home/xxx/my_dump_path/20000124003856/0/272/TransData.trans_TransData_22.112.21.948645536672764
63
+ # 转换后的npy文件
64
+ │ - TransData.trans_TransData_22.112.21.948645536672764.output.0.npy │
65
+ │ - TransData.trans_TransData_22.112.21.948645536672764.input.0.npy │
66
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
67
+ ......
68
+ [INFO] The comparison result have been written to "./parse_data/acl_batch_convert".
69
+ ```
70
+
71
+ **输出结果**:
72
+
73
+ 原 dump 数据目录:
74
+
75
+ ```
76
+ ├── /home/xxx/my_dump_path/20000124003856/0/
77
+ ├── 272
78
+ ├── {op_type}.{op_name}.{task_id}.{stream_id}.{timestamp}
79
+ ...
80
+ │ ├── 512
81
+ │ ...
82
+ ```
83
+
84
+ 转换后:
85
+
86
+ ```
87
+ ├── ./parse_data/acl_batch_convert/{timestamp}
88
+ │ ├── {op_name1}
89
+ │ │ ├── {timestamp1}
90
+ │ │ | ├── {op_type}.{op_name}.{task_id}.{stream_id}.{timestamp}.{input/output}.{参数序号}.npy
91
+ │ │ | ...
92
+ ├── {timestamp2}
93
+ │ | ...
94
+ │ ├── {op_name2}
95
+ │ ├── ...
96
+ ```
97
+
98
+ ### 2.3 kernel 层级算子数据比对
99
+
100
+ 本功能主要用于比对前后两次 NPU kernel 层级 dump 数据的一致性,并支持批量比对,比对时需要先将两份待比对的 NPU kernel 层级 dump 数据进行 [kernel 层级算子数据批量转换](#22-kernel-层级算子数据批量转换),可以使两份数据更好的匹配;若直接进行 dump 数据的比对,建议只比对单个 dump 数据文件。
101
+
102
+ 输入以下比对命令进行数据比对。
103
+
104
+ ```bash
105
+ vc -m my_dump_path -g golden_dump_path [-out output_path] [-cmp_path msaccucmp_path]
106
+ ```
107
+
108
+ | 参数名称 | 说明 | 是否必选 |
109
+ | --------- | ------------------------------------------------------------ | -------- |
110
+ | -m | 待比对 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 |
111
+ | -g | 标杆 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 |
112
+ | -out | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_comapre。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 |
113
+ | -cmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
114
+
115
+ 输出结果:`batch_compare_{timestamp}.csv` 文件。
116
+
117
+ **示例代码**:
118
+
119
+ ```bash
120
+ # 传入待比对数据目录以及标杆数据目录
121
+ Parse >>> vc -m ./my_dump_path -g ./golden_data_path
122
+ [INFO]Compare result is saved in : parse_data/acl_batch_comapre/batch_compare_1707271118.csv
123
+ ```
124
+
125
+ ### 2.3 kernel 算子数据的 npy 转换
126
+
127
+ 输入以下转换命令进行数据转换, 将 kernel 级别 dump 数据转为 npy 文件。
128
+
129
+ ```bash
130
+ dc -n file_name/file_path [-f format] [-out output_path]
131
+ ```
132
+
133
+ | 参数名称 | 说明 | 是否必选 |
134
+ | --------- | ------------------------------------------------------------ | -------- |
135
+ | -n | 需转换的 dump 数据文件或 dump 数据文件目录。 | 是 |
136
+ | -f | 开启 format 转换,指定该参数时需要配置 format 格式。当前内置的 Format 转换支持如下类型:<br/> FRACTAL_NZ 转换 NCHW; <br/>FRACTAL_NZ 转换成 NHWC; <br/>FRACTAL_NZ 转换 ND; <br/>HWCN 转换 FRACTAL_Z; <br/>HWCN 转换成 NCHW; <br/>HWCN 转换成 NHWC; <br/>NC1HWC0 转换成 HWCN; <br/>NC1HWC0 转换成 NCHW; <br/>NC1HWC0 转换成 NHWC; <br/>NCHW 转换成 FRACTAL_Z; <br/>NCHW转换成NHWC; <br/>NHWC转换成FRACTAL_Z;<br/> NHWC转换成HWCN; <br/>NHWC转换成NCHW;<br/>NDC1HWC0转换成NCDHW。 | 否 |
137
+ | -out | 结果输出目录。 | |
138
+ | -cmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
139
+
140
+ - 输出结果:npy 文件。
141
+
142
+ - 若指定 -out 参数需要用户传入输出路径,并且路径需要已存在。
143
+
144
+ - 若未指定输出目录, 则比对结束后将结果保存在默认目录 “./parse_data/convert_result” 中,比对结束后会打印 log 提示输出结果存放路径及转换结果。
145
+
146
+ - 输入以下命令,展示 npy 数据统计信息。
147
+
148
+ ```bash
149
+ pt -n file_path
150
+ ```
151
+
152
+ | 参数名称 | 说明 | 是否必选 |
153
+ | -------- | ------------- | -------- |
154
+ | -n | npy 文件路径。 | 是 |
155
+
156
+ 打印统计信息:shape, dtype, max, min 和 mean。默认在 npy 文件路径下将该数据保存为 txt 文件。
157
+
158
+ **示例代码1**:
159
+
160
+ ```bash
161
+ # 传入需转换的dump文件目录
162
+ Parse >>> dc -n ./dump_data/
163
+ ......
164
+ # 转换结果
165
+ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮
166
+ SrcFile: ./dump_data/
167
+ │ - Add.fp32_vars_add_2fp32_vars_Relu_9.31.5.1636595794731103.input.0.npy │
168
+ - Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.output.0.npy │
169
+ │ - Add.fp32_vars_add_2fp32_vars_Relu_9.31.5.1636595794731103.input.1.npy │
170
+ │ - Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.input.1.npy
171
+ │ - Add.fp32_vars_add_3fp32_vars_Relu_12.40.5.1636595794846124.input.1.npy
172
+ │ - Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.input.0.npy │
173
+ │ - Add.fp32_vars_add_3fp32_vars_Relu_12.40.5.1636595794846124.input.0.npy │
174
+ │ - Add.fp32_vars_add_2fp32_vars_Relu_9.31.5.1636595794731103.output.0.npy
175
+ │ - Add.fp32_vars_add_3fp32_vars_Relu_12.40.5.1636595794846124.output.0.npy
176
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
177
+ ```
178
+
179
+ **示例代码2**:
180
+
181
+ ```bash
182
+ # 查看某个dump数据块的数据信息
183
+ # 默认会将数据中的tensor保存成 txt
184
+ Parse >>> pt -n ./parse_data/dump_convert/Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.output.0.npy
185
+ ......
186
+ # 打印统计信息
187
+ [Shape: (1, 16, 56, 56, 16)] [Dtype: float16] [Max: 452.0] [Min: -408.5] [Mean: -3.809]
188
+ Path: ./parse_data/dump_convert/Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.input.0.npy
189
+ TextFile:./parse_data/dump_convert/Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636595794631347.input.0.npy.txt
190
+ ```
191
+
192
+ ### 2.4 dump.json 文件中指定 API 的 dump 数据信息查看(暂不支持)
193
+
194
+ 输入以下命令,解析并输出 dump.json 文件中指定 API 的统计信息。
195
+
196
+ ```bash
197
+ pk -f pkl_path -n api_name
198
+ ```
199
+
200
+ | 参数名称 | 说明 | 是否必选 |
201
+ | -------- | ----------------------- | -------- |
202
+ | -f | 指定 dump.json 文件路径。 | 是 |
203
+ | -n | 指定 API 名称。 | |
204
+
205
+ - 输出结果:打印统计信息(shape, dtype, max和min mean)。
206
+ - 若 pkl 文件中存在相应的堆栈信息,则会打印堆栈信息。
207
+
208
+ **示例代码**:
209
+
210
+ ```bash
211
+ # 传入pkl文件及api名称
212
+ Parse >>> pk -f ./torch_dump/xxx/rank0/dump.json -n Functional_conv2d_0_forward
213
+ ......
214
+ # 打印统计信息及堆栈(pkl文件不包含堆栈则不会打印堆栈)
215
+
216
+ Statistic Info:
217
+ [Functional_conv2d_0_forward_input.0][dtype: torch.float32][shape: [2, 1, 2, 2]][max: 1.576936960220337][min: -0.9757485389709473][mean: 0.4961632490158081]
218
+ [Functional_conv2d_0_forward_input.1][dtype: torch.float32][shape: [2, 1, 2, 2]][max: 0.20064473152160645][min: -0.47102075815200806][mean: -0.20796933770179749]
219
+ [Functional_conv2d_0_forward_input.2][dtype: torch.float32][shape: [2]][max: 0.17380613088607788][min: -0.16853803396224976][mean: 0.0026340484619140625]
220
+ [Functional_conv2d_0_forward_output][dtype: torch.float32][shape: [2, 2, 1, 1]][max: 0.02364911139011383][min: -1.762906551361084][mean: -0.6710853576660156]
221
+ ```
222
+
223
+ ### 2.5 API 可选层级比对
224
+
225
+ 输入以下命令, 进行统计级和像素级比对。
226
+
227
+ ```bash
228
+ cn -m my_data*.npy -g gloden*.npy [-p num] [-al atol] [-rl rtol]
229
+ ```
230
+
231
+ - 统计级比对:对 tensor 整体进行余弦值及相对误差的计算。
232
+ - 像素级比对:对输入的两个 npy 文件进行逐元素比对。若两个 tensor 对应元素的相对误差或绝对误差大于**误差阈值**(-al 和 -rl 配置)则被标记为错误数据。
233
+
234
+ | 参数名称 | 说明 | 是否必选 |
235
+ | -------- | ----------------------------------------------- | -------- |
236
+ | -m | 待比对数据。 | |
237
+ | -g | 标杆数据。 | |
238
+ | -p | 设置比对结束后打印错误元素的个数,默认值 20。 | |
239
+ | -al | 判定数据存在精度问题的绝对误差阈值,默认 0.001。 | |
240
+ | -rl | 判定数据存在精度问题的相对误差阈值,默认 0.001 | 否 |
241
+ | -s | npy 文件保存成 txt 文件,用于查看,默认开启。 | 否 |
242
+
243
+ 输出结果:
244
+
245
+ - 统计级比对结果。
246
+ - 两个文件的统计信息(shape, dtype, max, min和mean)。
247
+ - 错误数据打印表格。
248
+
249
+ **示例代码**:
250
+
251
+ ```bash
252
+ # 对比两个tensor的数据
253
+ Parse >>> cn -m Add.InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.323.1619494134703053.output.0.npy -g InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.0.1619492699305998.npy -p 10 -s -al 0.002 -rl 0.005
254
+ Error Item Table Top Item Table
255
+ ┏━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓ ┏━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
256
+ Index Left ┃ Right ┃ Diff ┃ ┃ Index ┃ Left ┃ Right ┃ Diff ┃
257
+ ┡━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩ ┡━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
258
+ 155 │ 0.024600908 │ 0.022271132 │ 0.002329776 │ 0 │ -0.9206961 │ -0.9222216 │ 0.0015255213 │
259
+ 247 │ 0.015752593 │ 0.017937578 │ 0.0021849852 │ │ 1 │ -0.6416973 │ -0.64051837 │ 0.0011789203 │
260
+ 282-0.0101207765 -0.007852031 │ 0.0022687456 │ │ 2 │ -0.35383835 │ -0.35433492 │ 0.0004965663
261
+ 292 │ 0.019581757 │ 0.02240482 │ 0.0028230622 │ │ 3 │ -0.18851271 │ -0.18883198 │ 0.00031927228
262
+ 640 │ -0.06593232 │ -0.06874806 │ 0.0028157383 │ │ 4 │ -0.43508735 │ -0.43534422 │ 0.00025686622
263
+ 1420 │ 0.09293677 │ 0.09586689 │ 0.0029301196 │ │ 51.4447614 1.4466647 │ 0.0019032955
264
+ 1462 │ -0.085207745 │ -0.088047795 │ 0.0028400496 │ │ 6 │ -0.3455438 │ -0.3444429 │ 0.0011008978
265
+ 1891-0.03433288 -0.036525503 │ 0.002192624 │ │ 7-0.6560242 -0.6564579 │ 0.0004336834
266
+ 2033 │ 0.06828873 │ 0.07139922 │ 0.0031104907 │ │ 8 │ -2.6964858 │ -2.6975214 │ 0.0010356903
267
+ 2246 │ -0.06376442 │ -0.06121233 │ 0.002552092 │ │ 9 │ -0.73746175 │ -0.73650354 │ 0.00095820427
268
+ └───────┴───────────────┴──────────────┴──────────────┘ └───────┴─────────────┴─────────────┴───────────────┘
269
+ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
270
+ Left: |
271
+ │ |- NpyFile: ./dump/temp/decode/Add.InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.323.1619494134703053.output.0.npy |
272
+ |- TxtFile: ./dump/temp/decode/Add.InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.323.1619494134703053.output.0.npy.txt |
273
+ │ |- NpySpec: [Shape: (32, 8, 8, 320)] [Dtype: float32] [Max: 5.846897] [Min: -8.368301] [Mean: -0.72565556] |
274
+ DstFile:
275
+ │ |- NpyFile: ./dump/cpu/InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.0.1619492699305998.npy |
276
+ |- TxtFile: ./dump/cpu/InceptionV3_InceptionV3_Mixed_7a_Branch_0_add_3.0.1619492699305998.npy.txt |
277
+ │ |- NpySpec: [Shape: (32, 8, 8, 320)] [Dtype: float32] [Max: 5.8425903] [Min: -8.374472] [Mean: -0.7256237] │
278
+ NumCnt: 655360 │
279
+ AllClose: False
280
+ CosSim: 0.99999493
281
+ ErrorPer: 0.023504638671875 (rl= 0.005, al= 0.002)
282
+ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
283
+ ```