mindstudio-probe 1.0.1__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 (323) hide show
  1. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.4.dist-info}/LICENSE +201 -201
  2. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.4.dist-info}/METADATA +36 -30
  3. mindstudio_probe-1.0.4.dist-info/RECORD +276 -0
  4. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.4.dist-info}/WHEEL +1 -1
  5. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.4.dist-info}/entry_points.txt +1 -0
  6. msprobe/README.md +101 -182
  7. msprobe/__init__.py +1 -0
  8. msprobe/{config/config.json → config.json} +49 -27
  9. msprobe/core/__init__.py +0 -0
  10. msprobe/{pytorch → core}/advisor/advisor.py +124 -124
  11. msprobe/{pytorch → core}/advisor/advisor_const.py +59 -59
  12. msprobe/{pytorch → core}/advisor/advisor_result.py +58 -58
  13. msprobe/core/common/const.py +341 -241
  14. msprobe/core/common/exceptions.py +100 -88
  15. msprobe/core/common/{file_check.py → file_utils.py} +478 -265
  16. msprobe/core/common/log.py +76 -55
  17. msprobe/core/common/utils.py +385 -516
  18. msprobe/core/common_config.py +85 -58
  19. msprobe/core/compare/acc_compare.py +300 -0
  20. msprobe/core/compare/check.py +95 -0
  21. msprobe/core/compare/compare_cli.py +49 -0
  22. msprobe/core/compare/highlight.py +223 -0
  23. msprobe/core/compare/multiprocessing_compute.py +149 -0
  24. msprobe/{pytorch → core}/compare/npy_compare.py +295 -244
  25. msprobe/core/compare/utils.py +430 -0
  26. msprobe/core/data_dump/data_collector.py +154 -140
  27. msprobe/core/data_dump/data_processor/base.py +314 -245
  28. msprobe/core/data_dump/data_processor/factory.py +59 -61
  29. msprobe/core/data_dump/data_processor/mindspore_processor.py +186 -0
  30. msprobe/core/data_dump/data_processor/pytorch_processor.py +366 -346
  31. msprobe/core/data_dump/json_writer.py +96 -116
  32. msprobe/core/data_dump/scope.py +178 -178
  33. msprobe/core/grad_probe/__init__.py +0 -0
  34. msprobe/core/grad_probe/constant.py +71 -0
  35. msprobe/core/grad_probe/grad_compare.py +171 -0
  36. msprobe/core/grad_probe/utils.py +64 -0
  37. msprobe/docs/01.installation.md +89 -0
  38. msprobe/docs/02.config_introduction.md +165 -0
  39. msprobe/docs/03.config_examples.md +247 -0
  40. msprobe/docs/04.acl_config_examples.md +76 -0
  41. msprobe/docs/05.data_dump_PyTorch.md +198 -0
  42. msprobe/docs/06.data_dump_MindSpore.md +243 -0
  43. msprobe/docs/07.accuracy_checker_PyTorch.md +274 -0
  44. msprobe/docs/08.accuracy_checker_online_PyTorch.md +198 -0
  45. msprobe/docs/09.accuracy_checker_MindSpore.md +68 -0
  46. msprobe/docs/10.accuracy_compare_PyTorch.md +245 -0
  47. msprobe/docs/11.accuracy_compare_MindSpore.md +202 -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 +164 -0
  52. msprobe/docs/17.grad_probe.md +207 -0
  53. msprobe/docs/FAQ_PyTorch.md +177 -0
  54. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +146 -0
  55. msprobe/docs/img/free_benchmark_framework.png +0 -0
  56. msprobe/docs/img/grad_probe_image-1.png +0 -0
  57. msprobe/docs/img/grad_probe_image-2.png +0 -0
  58. msprobe/docs/img/grad_probe_image-3.png +0 -0
  59. msprobe/docs/img/grad_probe_image-4.png +0 -0
  60. msprobe/docs/img/grad_probe_image.png +0 -0
  61. msprobe/mindspore/__init__.py +1 -1
  62. msprobe/mindspore/api_accuracy_checker/__init__.py +0 -0
  63. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +255 -0
  64. msprobe/mindspore/api_accuracy_checker/api_info.py +69 -0
  65. msprobe/mindspore/api_accuracy_checker/api_runner.py +156 -0
  66. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +197 -0
  67. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +6 -0
  68. msprobe/mindspore/api_accuracy_checker/compute_element.py +239 -0
  69. msprobe/mindspore/api_accuracy_checker/main.py +9 -0
  70. msprobe/mindspore/api_accuracy_checker/type_mapping.py +114 -0
  71. msprobe/mindspore/api_accuracy_checker/utils.py +80 -0
  72. msprobe/mindspore/cell_processor.py +34 -0
  73. msprobe/mindspore/common/const.py +106 -0
  74. msprobe/mindspore/common/log.py +38 -0
  75. msprobe/mindspore/common/utils.py +81 -0
  76. msprobe/mindspore/compare/distributed_compare.py +75 -0
  77. msprobe/mindspore/compare/ms_compare.py +219 -0
  78. msprobe/mindspore/compare/ms_graph_compare.py +348 -0
  79. msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -0
  80. msprobe/mindspore/debugger/debugger_config.py +66 -51
  81. msprobe/mindspore/debugger/precision_debugger.py +126 -32
  82. msprobe/mindspore/dump/dump_tool_factory.py +35 -38
  83. msprobe/mindspore/dump/hook_cell/api_registry.py +118 -0
  84. msprobe/mindspore/dump/hook_cell/hook_cell.py +55 -0
  85. msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +922 -0
  86. msprobe/mindspore/dump/hook_cell/wrap_api.py +113 -0
  87. msprobe/mindspore/dump/jit_dump.py +72 -0
  88. msprobe/mindspore/dump/kernel_graph_dump.py +59 -60
  89. msprobe/mindspore/dump/kernel_kbyk_dump.py +64 -0
  90. msprobe/mindspore/free_benchmark/__init__.py +0 -0
  91. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +116 -0
  92. msprobe/mindspore/free_benchmark/common/__init__.py +0 -0
  93. msprobe/mindspore/free_benchmark/common/config.py +12 -0
  94. msprobe/mindspore/free_benchmark/common/handler_params.py +17 -0
  95. msprobe/mindspore/free_benchmark/common/utils.py +71 -0
  96. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -0
  97. msprobe/mindspore/free_benchmark/decorator/__init__.py +0 -0
  98. msprobe/mindspore/free_benchmark/decorator/dec_forward.py +43 -0
  99. msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +107 -0
  100. msprobe/mindspore/free_benchmark/handler/__init__.py +0 -0
  101. msprobe/mindspore/free_benchmark/handler/base_handler.py +90 -0
  102. msprobe/mindspore/free_benchmark/handler/check_handler.py +41 -0
  103. msprobe/mindspore/free_benchmark/handler/fix_handler.py +36 -0
  104. msprobe/mindspore/free_benchmark/handler/handler_factory.py +21 -0
  105. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +67 -0
  106. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +21 -0
  107. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +63 -0
  108. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +51 -0
  109. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +35 -0
  110. msprobe/mindspore/free_benchmark/perturbation/no_change.py +12 -0
  111. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +29 -0
  112. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +33 -0
  113. msprobe/mindspore/grad_probe/__init__.py +0 -0
  114. msprobe/mindspore/grad_probe/global_context.py +90 -0
  115. msprobe/mindspore/grad_probe/grad_analyzer.py +231 -0
  116. msprobe/mindspore/grad_probe/grad_monitor.py +27 -0
  117. msprobe/mindspore/grad_probe/grad_stat_csv.py +132 -0
  118. msprobe/mindspore/grad_probe/hook.py +94 -0
  119. msprobe/mindspore/grad_probe/utils.py +30 -0
  120. msprobe/mindspore/ms_config.py +128 -78
  121. msprobe/mindspore/overflow_check/kernel_graph_overflow_check.py +44 -45
  122. msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +34 -32
  123. msprobe/mindspore/runtime.py +4 -0
  124. msprobe/mindspore/service.py +378 -0
  125. msprobe/mindspore/task_handler_factory.py +24 -21
  126. msprobe/msprobe.py +105 -67
  127. msprobe/pytorch/__init__.py +4 -4
  128. msprobe/pytorch/api_accuracy_checker/common/config.py +53 -50
  129. msprobe/pytorch/api_accuracy_checker/common/utils.py +214 -224
  130. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +213 -216
  131. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +606 -545
  132. msprobe/pytorch/api_accuracy_checker/compare/api_precision_standard.yaml +132 -132
  133. msprobe/pytorch/api_accuracy_checker/compare/api_precision_threshold.yaml +390 -390
  134. msprobe/pytorch/api_accuracy_checker/compare/compare.py +386 -345
  135. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +73 -73
  136. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +245 -248
  137. msprobe/pytorch/api_accuracy_checker/config.yaml +10 -4
  138. msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +335 -328
  139. msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +200 -203
  140. msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +133 -127
  141. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +592 -493
  142. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +70 -7
  143. msprobe/pytorch/api_accuracy_checker/run_ut/torch_ut_setting.json +7 -4
  144. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/__init__.py +0 -0
  145. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +197 -0
  146. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +325 -0
  147. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +204 -0
  148. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +219 -0
  149. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +10 -0
  150. msprobe/pytorch/bench_functions/__init__.py +15 -0
  151. msprobe/pytorch/bench_functions/apply_adam_w.py +28 -0
  152. msprobe/pytorch/bench_functions/confusion_transpose.py +19 -0
  153. msprobe/pytorch/bench_functions/fast_gelu.py +55 -0
  154. msprobe/pytorch/bench_functions/layer_norm_eval.py +6 -0
  155. msprobe/pytorch/bench_functions/linear.py +12 -0
  156. msprobe/pytorch/bench_functions/matmul_backward.py +48 -0
  157. msprobe/pytorch/bench_functions/npu_fusion_attention.py +509 -0
  158. msprobe/pytorch/bench_functions/rms_norm.py +15 -0
  159. msprobe/pytorch/bench_functions/rotary_mul.py +52 -0
  160. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +26 -0
  161. msprobe/pytorch/bench_functions/swiglu.py +55 -0
  162. msprobe/pytorch/common/__init__.py +2 -2
  163. msprobe/pytorch/common/compare_script.template +14 -14
  164. msprobe/pytorch/common/log.py +20 -31
  165. msprobe/pytorch/common/parse_json.py +39 -37
  166. msprobe/pytorch/common/utils.py +305 -224
  167. msprobe/pytorch/compare/distributed_compare.py +66 -111
  168. msprobe/pytorch/compare/mapping.yaml +607 -607
  169. msprobe/pytorch/compare/match.py +34 -36
  170. msprobe/pytorch/compare/pt_compare.py +50 -0
  171. msprobe/pytorch/debugger/debugger_config.py +95 -86
  172. msprobe/pytorch/debugger/precision_debugger.py +125 -95
  173. msprobe/pytorch/free_benchmark/__init__.py +8 -8
  174. msprobe/pytorch/free_benchmark/common/constant.py +70 -67
  175. msprobe/pytorch/free_benchmark/common/counter.py +71 -71
  176. msprobe/pytorch/free_benchmark/common/enums.py +37 -37
  177. msprobe/pytorch/free_benchmark/common/params.py +129 -129
  178. msprobe/pytorch/free_benchmark/common/utils.py +102 -98
  179. msprobe/pytorch/free_benchmark/compare/grad_saver.py +179 -183
  180. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +104 -104
  181. msprobe/pytorch/free_benchmark/main.py +105 -102
  182. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +13 -13
  183. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +41 -41
  184. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +90 -90
  185. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +104 -104
  186. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +63 -63
  187. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +68 -68
  188. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +28 -28
  189. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +45 -45
  190. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +19 -19
  191. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +217 -203
  192. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +39 -39
  193. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +23 -23
  194. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +30 -31
  195. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +170 -170
  196. msprobe/pytorch/function_factory.py +76 -0
  197. msprobe/pytorch/functional/dump_module.py +39 -39
  198. msprobe/pytorch/grad_probe/__init__.py +0 -0
  199. msprobe/pytorch/grad_probe/grad_monitor.py +91 -0
  200. msprobe/pytorch/grad_probe/grad_stat_csv.py +129 -0
  201. msprobe/pytorch/hook_module/api_registry.py +161 -161
  202. msprobe/pytorch/hook_module/hook_module.py +120 -109
  203. msprobe/pytorch/hook_module/support_wrap_ops.yaml +1879 -1876
  204. msprobe/pytorch/hook_module/utils.py +30 -29
  205. msprobe/pytorch/hook_module/wrap_aten.py +110 -100
  206. msprobe/pytorch/hook_module/wrap_distributed.py +78 -75
  207. msprobe/pytorch/hook_module/wrap_functional.py +105 -108
  208. msprobe/pytorch/hook_module/wrap_npu_custom.py +93 -73
  209. msprobe/pytorch/hook_module/wrap_tensor.py +71 -72
  210. msprobe/pytorch/hook_module/wrap_torch.py +86 -88
  211. msprobe/pytorch/hook_module/wrap_vf.py +62 -64
  212. msprobe/pytorch/module_processer.py +138 -98
  213. msprobe/pytorch/online_dispatch/__init__.py +20 -20
  214. msprobe/pytorch/online_dispatch/compare.py +236 -236
  215. msprobe/pytorch/online_dispatch/dispatch.py +271 -273
  216. msprobe/pytorch/online_dispatch/dump_compare.py +155 -186
  217. msprobe/pytorch/online_dispatch/single_compare.py +391 -391
  218. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +49 -49
  219. msprobe/pytorch/online_dispatch/utils.py +130 -187
  220. msprobe/pytorch/parse.py +4 -4
  221. msprobe/pytorch/parse_tool/cli.py +32 -32
  222. msprobe/pytorch/parse_tool/lib/compare.py +260 -259
  223. msprobe/pytorch/parse_tool/lib/config.py +52 -51
  224. msprobe/pytorch/parse_tool/lib/file_desc.py +31 -31
  225. msprobe/pytorch/parse_tool/lib/interactive_cli.py +102 -102
  226. msprobe/pytorch/parse_tool/lib/parse_exception.py +54 -54
  227. msprobe/pytorch/parse_tool/lib/parse_tool.py +158 -158
  228. msprobe/pytorch/parse_tool/lib/utils.py +316 -367
  229. msprobe/pytorch/parse_tool/lib/visualization.py +85 -90
  230. msprobe/pytorch/pt_config.py +188 -93
  231. msprobe/pytorch/service.py +246 -167
  232. mindstudio_probe-1.0.1.dist-info/RECORD +0 -228
  233. msprobe/config/README.md +0 -397
  234. msprobe/mindspore/doc/dump.md +0 -65
  235. msprobe/mindspore/dump/api_kbk_dump.py +0 -55
  236. msprobe/pytorch/compare/acc_compare.py +0 -1024
  237. msprobe/pytorch/compare/highlight.py +0 -100
  238. msprobe/pytorch/doc/FAQ.md +0 -193
  239. msprobe/pytorch/doc/api_accuracy_checker.md +0 -269
  240. msprobe/pytorch/doc/atat/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
  241. msprobe/pytorch/doc/dump.md +0 -207
  242. msprobe/pytorch/doc/ptdbg_ascend_compare.md +0 -176
  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/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
  247. msprobe/test/core_ut/common/test_utils.py +0 -345
  248. msprobe/test/core_ut/data_dump/test_data_collector.py +0 -47
  249. msprobe/test/core_ut/data_dump/test_json_writer.py +0 -183
  250. msprobe/test/core_ut/data_dump/test_scope.py +0 -151
  251. msprobe/test/core_ut/test_common_config.py +0 -152
  252. msprobe/test/core_ut/test_file_check.py +0 -218
  253. msprobe/test/core_ut/test_log.py +0 -109
  254. msprobe/test/mindspore_ut/test_api_kbk_dump.py +0 -51
  255. msprobe/test/mindspore_ut/test_debugger_config.py +0 -42
  256. msprobe/test/mindspore_ut/test_dump_tool_factory.py +0 -51
  257. msprobe/test/mindspore_ut/test_kernel_graph_dump.py +0 -66
  258. msprobe/test/mindspore_ut/test_kernel_graph_overflow_check.py +0 -63
  259. msprobe/test/mindspore_ut/test_ms_config.py +0 -69
  260. msprobe/test/mindspore_ut/test_overflow_check_tool_factory.py +0 -51
  261. msprobe/test/mindspore_ut/test_precision_debugger.py +0 -56
  262. msprobe/test/mindspore_ut/test_task_handler_factory.py +0 -58
  263. msprobe/test/pytorch_ut/advisor/test_advisor.py +0 -83
  264. msprobe/test/pytorch_ut/api_accuracy_checker/common/test_common_utils.py +0 -108
  265. msprobe/test/pytorch_ut/api_accuracy_checker/common/test_config.py +0 -39
  266. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_algorithm.py +0 -112
  267. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_api_precision_compare.py +0 -77
  268. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_compare.py +0 -125
  269. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_compare_column.py +0 -10
  270. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_compare_utils.py +0 -43
  271. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/dump.json +0 -179
  272. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/forward.json +0 -63
  273. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/test_data_generate.py +0 -99
  274. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/test_multi_run_ut.py +0 -115
  275. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/test_run_ut.py +0 -72
  276. msprobe/test/pytorch_ut/compare/test_acc_compare.py +0 -17
  277. msprobe/test/pytorch_ut/free_benchmark/perturbed_layers/test_perturbed_layser.py +0 -105
  278. msprobe/test/pytorch_ut/free_benchmark/result_handlers/test_result_handler.py +0 -121
  279. msprobe/test/pytorch_ut/free_benchmark/test_main.py +0 -101
  280. msprobe/test/pytorch_ut/functional/test_dump_module.py +0 -15
  281. msprobe/test/pytorch_ut/hook_module/test_api_registry.py +0 -130
  282. msprobe/test/pytorch_ut/hook_module/test_hook_module.py +0 -42
  283. msprobe/test/pytorch_ut/hook_module/test_wrap_aten.py +0 -65
  284. msprobe/test/pytorch_ut/hook_module/test_wrap_distributed.py +0 -35
  285. msprobe/test/pytorch_ut/hook_module/test_wrap_functional.py +0 -20
  286. msprobe/test/pytorch_ut/hook_module/test_wrap_tensor.py +0 -35
  287. msprobe/test/pytorch_ut/hook_module/test_wrap_torch.py +0 -43
  288. msprobe/test/pytorch_ut/hook_module/test_wrap_vf.py +0 -11
  289. msprobe/test/pytorch_ut/test_pt_config.py +0 -69
  290. msprobe/test/pytorch_ut/test_service.py +0 -59
  291. msprobe/test/resources/advisor.txt +0 -3
  292. msprobe/test/resources/compare_result_20230703104808.csv +0 -9
  293. msprobe/test/resources/compare_result_without_accuracy.csv +0 -9
  294. msprobe/test/resources/config.yaml +0 -3
  295. msprobe/test/resources/npu_test.pkl +0 -8
  296. msprobe/test/run_test.sh +0 -30
  297. msprobe/test/run_ut.py +0 -58
  298. msprobe/test/test_module_processer.py +0 -64
  299. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.4.dist-info}/top_level.txt +0 -0
  300. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_1.png +0 -0
  301. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_2.png +0 -0
  302. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_3.png +0 -0
  303. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_4.png +0 -0
  304. /msprobe/{pytorch/doc → docs}/img/GPT-3_1.png +0 -0
  305. /msprobe/{pytorch/doc → docs}/img/GPT-3_2.png +0 -0
  306. /msprobe/{pytorch/doc → docs}/img/GPT-3_3.png +0 -0
  307. /msprobe/{pytorch/doc → docs}/img/GPT-3_4.png +0 -0
  308. /msprobe/{pytorch/doc → docs}/img/GPT-3_5.png +0 -0
  309. /msprobe/{pytorch/doc → docs}/img/GPT-3_6.png +0 -0
  310. /msprobe/{pytorch/doc → docs}/img/GPT-3_7.png +0 -0
  311. /msprobe/{pytorch/doc → docs}/img/GPT-3_8.png +0 -0
  312. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_1.png +0 -0
  313. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_2.png +0 -0
  314. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_details.png +0 -0
  315. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_result.png +0 -0
  316. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_details.png +0 -0
  317. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_result.png +0 -0
  318. /msprobe/{pytorch/doc → docs}/img/auto_analyze_log.png +0 -0
  319. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl.png +0 -0
  320. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl_md5.png.png +0 -0
  321. /msprobe/{pytorch/doc → docs}/img/cpu_info.png +0 -0
  322. /msprobe/{config → docs}/img/free_benchmark.png +0 -0
  323. /msprobe/{pytorch/doc → docs}/img/module_compare.png +0 -0
@@ -1,186 +1,155 @@
1
- import os
2
- import json
3
- import copy
4
- from datetime import datetime, timezone
5
-
6
- import pandas as pd
7
- import torch
8
- from .utils import np_save_data, logger_debug, logger_error, logger_warn, logger_user, COLOR_RED, COLOR_GREEN, \
9
- COLOR_RESET, CSV_COLUMN_NAME
10
- from msprobe.core.common.file_check import FileOpen, change_mode
11
- from msprobe.core.common.const import CompareConst, FileCheckConst, Const
12
- from msprobe.pytorch.common.log import logger
13
-
14
- class DispatchRunParam:
15
- def __init__(self, debug_flag, device_id, root_npu_path, root_cpu_path, process_num, comparator):
16
- # static parameters are initialized by constructors, and dynamic parameters are constructed at run time
17
- self.debug_flag = debug_flag
18
- self.device_id = device_id
19
- self.root_npu_path = root_npu_path
20
- self.root_cpu_path = root_cpu_path
21
- self.process_num = process_num
22
- self.process_flag = False
23
- self.func_name = None
24
- self.func_namespace = None
25
- self.aten_api = None
26
- self.aten_api_overload_name = None
27
- self.single_api_index = None
28
- self.api_index = None
29
- self.dump_flag = None
30
- self.auto_dump_flag = None
31
- self.comparator = comparator
32
-
33
-
34
- class DisPatchDataInfo:
35
- def __init__(self, cpu_args, cpu_kwargs, all_summery, func, npu_out_cpu, cpu_out, lock):
36
- self.cpu_args = cpu_args
37
- self.cpu_kwargs = cpu_kwargs
38
- self.all_summery = all_summery
39
- self.func = func
40
- self.npu_out_cpu = npu_out_cpu
41
- self.cpu_out = cpu_out
42
- self.lock = lock
43
-
44
-
45
- class TimeStatistics:
46
- def __init__(self, name_tag, run_param, timeout=5):
47
- self.debug = run_param.debug_flag
48
- if self.debug:
49
- self.fun = run_param.func_name
50
- self.device = run_param.device_id
51
- self.process = run_param.process_num
52
- self.index = run_param.single_api_index
53
- self.tag = name_tag
54
- self.timeout = timeout
55
- self.time = None
56
-
57
- def __enter__(self):
58
- if self.debug:
59
- self.time = datetime.now(tz=timezone.utc)
60
- logger_debug(f'Time[{self.tag}]-ENTER: Dev[{self.device}], Pid[{os.getpid()}], Fun[{self.fun}], ' \
61
- f'Id[{self.index}]')
62
-
63
- def __exit__(self, exc_type, exc_val, exc_tb):
64
- if self.debug:
65
- cost_time = datetime.now(tz=timezone.utc) - self.time
66
- time_cost = f'Time[{self.tag}]-EXIT: Dev[{self.device}], Pid[{os.getpid()}], Fun[{self.fun}], ' \
67
- f'Id[{self.index}], time[{cost_time}]'
68
- hot_time_cost = "Hotspot " + time_cost
69
-
70
- if cost_time.total_seconds() > self.timeout:
71
- logger_debug(hot_time_cost)
72
- else:
73
- logger_debug(time_cost)
74
-
75
-
76
- def support_basic_type(data):
77
- if isinstance(data, (bool, int, float, torch.Tensor)):
78
- return True
79
- return False
80
-
81
-
82
- def dump_data(data, prefix, dump_path):
83
- if isinstance(data, (tuple, list)) and data:
84
- for i, item in enumerate(data):
85
- dump_data(item, "{}.{}".format(prefix, i), dump_path)
86
- return
87
- elif support_basic_type(data):
88
- if isinstance(data, torch.Tensor) and data.is_meta:
89
- return
90
- # dump data may greater than summery_list collect
91
- np_save_data(data, prefix, dump_path)
92
-
93
-
94
- def save_temp_summery(api_index, single_api_summery, path, lock):
95
- summery_path = os.path.join(path, f'summery.json')
96
- lock.acquire()
97
- with FileOpen(summery_path, "a") as f:
98
- json.dump([api_index, single_api_summery], f)
99
- f.write('\n')
100
- lock.release()
101
-
102
-
103
- def dispatch_workflow(run_param: DispatchRunParam, data_info: DisPatchDataInfo):
104
- cpu_args, cpu_kwargs = data_info.cpu_args, data_info.cpu_kwargs
105
- all_summery, func = data_info.all_summery, data_info.func
106
- npu_out_cpu, cpu_out, lock = data_info.npu_out_cpu, data_info.cpu_out, data_info.lock
107
- single_api_summery = []
108
-
109
- prefix_input = f'{run_param.aten_api}_{run_param.single_api_index}_input'
110
- prefix_output = f'{run_param.aten_api}_{run_param.single_api_index}_output'
111
-
112
- accuracy_reached = False
113
- with TimeStatistics("COMPARE OUTPUT", run_param):
114
- run_param.comparator.compare_output(prefix_output, cpu_out, npu_out_cpu, None, None)
115
-
116
- # user set dump or auto mode will dump
117
- if run_param.dump_flag or (run_param.auto_dump_flag and not accuracy_reached):
118
- with TimeStatistics("DUMP INPUT", run_param):
119
- dump_data(cpu_args, prefix_input, run_param.root_npu_path)
120
- if len(cpu_kwargs) > 0:
121
- for k, v in cpu_kwargs.items():
122
- kwargs_prefix_name = prefix_input + f'_{k}'
123
- dump_data(v, kwargs_prefix_name, run_param.root_npu_path)
124
-
125
- with TimeStatistics("DUMP OUTPUT", run_param):
126
- dump_data(cpu_out, prefix_output, run_param.root_cpu_path)
127
- dump_data(npu_out_cpu, prefix_output, run_param.root_npu_path)
128
-
129
- if run_param.process_num == 0:
130
- all_summery[run_param.api_index - 1] = copy.deepcopy(single_api_summery)
131
- else:
132
- save_temp_summery(run_param.api_index - 1, single_api_summery, run_param.root_cpu_path, lock)
133
-
134
-
135
- def get_torch_func(run_param):
136
- if hasattr(torch.ops, run_param.func_namespace):
137
- ops_func = getattr(torch.ops, run_param.func_namespace)
138
- if hasattr(ops_func, run_param.aten_api):
139
- ops_aten_func = getattr(ops_func, run_param.aten_api)
140
- if hasattr(ops_aten_func, run_param.aten_api_overload_name):
141
- ops_aten_overlaod_func = getattr(ops_aten_func, run_param.aten_api_overload_name)
142
- return ops_aten_overlaod_func
143
- return None
144
-
145
-
146
- def dispatch_multiprocess(run_param, dispatch_data_info):
147
- torch_func = get_torch_func(run_param)
148
- if torch_func is None:
149
- logger.error(f'can not find suitable call api:{run_param.aten_api}')
150
- else:
151
- dispatch_data_info.func = torch_func
152
- dispatch_workflow(run_param, dispatch_data_info)
153
-
154
-
155
- def error_call(err):
156
- logger.error(f'multiprocess {err}')
157
-
158
-
159
- def save_csv(all_summery, call_stack_list, csv_path):
160
- df = pd.DataFrame(columns=CSV_COLUMN_NAME)
161
-
162
- for index, list_data in enumerate(all_summery):
163
- for data in list_data:
164
- csv_row_data = {CompareConst.NPU_NAME: data[CompareConst.NPU_NAME],
165
- CompareConst.BENCH_NAME: data[CompareConst.BENCH_NAME],
166
- CompareConst.NPU_DTYPE: data[CompareConst.NPU_DTYPE],
167
- CompareConst.BENCH_DTYPE: data[CompareConst.BENCH_DTYPE],
168
- CompareConst.NPU_SHAPE: data[CompareConst.NPU_SHAPE],
169
- CompareConst.BENCH_SHAPE: data[CompareConst.BENCH_SHAPE],
170
- CompareConst.NPU_MAX: data[CompareConst.NPU_MAX],
171
- CompareConst.NPU_MIN: data[CompareConst.NPU_MIN],
172
- CompareConst.NPU_MEAN: data[CompareConst.NPU_MEAN],
173
- CompareConst.BENCH_MAX: data[CompareConst.BENCH_MAX],
174
- CompareConst.BENCH_MIN: data[CompareConst.BENCH_MIN],
175
- CompareConst.BENCH_MEAN: data[CompareConst.BENCH_MEAN],
176
- CompareConst.COSINE: data[CompareConst.COSINE],
177
- CompareConst.MAX_ABS_ERR: data[CompareConst.MAX_ABS_ERR],
178
- CompareConst.MAX_RELATIVE_ERR: data[CompareConst.MAX_RELATIVE_ERR],
179
- CompareConst.ACCURACY: data[CompareConst.ACCURACY],
180
- CompareConst.STACK: call_stack_list[index],
181
- CompareConst.ERROR_MESSAGE: data[CompareConst.ERROR_MESSAGE]}
182
- row_df = pd.DataFrame.from_dict(csv_row_data, orient='index').T
183
- df = pd.concat([df, row_df])
184
-
185
- df.to_csv(csv_path, index=False)
186
- change_mode(csv_path, FileCheckConst.DATA_FILE_AUTHORITY)
1
+ import os
2
+ import json
3
+ import copy
4
+ from datetime import datetime, timezone
5
+
6
+ import torch
7
+ from msprobe.pytorch.common.log import logger
8
+ from msprobe.core.common.file_utils import FileOpen, save_npy
9
+
10
+
11
+ class DispatchRunParam:
12
+ def __init__(self, debug_flag, device_id, root_npu_path, root_cpu_path, process_num, comparator):
13
+ # static parameters are initialized by constructors, and dynamic parameters are constructed at run time
14
+ self.debug_flag = debug_flag
15
+ self.device_id = device_id
16
+ self.root_npu_path = root_npu_path
17
+ self.root_cpu_path = root_cpu_path
18
+ self.process_num = process_num
19
+ self.process_flag = False
20
+ self.func_name = None
21
+ self.func_namespace = None
22
+ self.aten_api = None
23
+ self.aten_api_overload_name = None
24
+ self.single_api_index = None
25
+ self.api_index = None
26
+ self.dump_flag = None
27
+ self.auto_dump_flag = None
28
+ self.comparator = comparator
29
+
30
+
31
+ class DisPatchDataInfo:
32
+ def __init__(self, cpu_args, cpu_kwargs, all_summary, func, npu_out_cpu, cpu_out, lock):
33
+ self.cpu_args = cpu_args
34
+ self.cpu_kwargs = cpu_kwargs
35
+ self.all_summary = all_summary
36
+ self.func = func
37
+ self.npu_out_cpu = npu_out_cpu
38
+ self.cpu_out = cpu_out
39
+ self.lock = lock
40
+
41
+
42
+ class TimeStatistics:
43
+ def __init__(self, name_tag, run_param, timeout=5):
44
+ self.debug = run_param.debug_flag
45
+ if self.debug:
46
+ self.fun = run_param.func_name
47
+ self.device = run_param.device_id
48
+ self.process = run_param.process_num
49
+ self.index = run_param.single_api_index
50
+ self.tag = name_tag
51
+ self.timeout = timeout
52
+ self.time = None
53
+
54
+ def __enter__(self):
55
+ if self.debug:
56
+ self.time = datetime.now(tz=timezone.utc)
57
+ logger.info(f'Time[{self.tag}]-ENTER: Dev[{self.device}], Pid[{os.getpid()}], Fun[{self.fun}], ' \
58
+ f'Id[{self.index}]')
59
+
60
+ def __exit__(self, exc_type, exc_val, exc_tb):
61
+ if self.debug:
62
+ cost_time = datetime.now(tz=timezone.utc) - self.time
63
+ time_cost = f'Time[{self.tag}]-EXIT: Dev[{self.device}], Pid[{os.getpid()}], Fun[{self.fun}], ' \
64
+ f'Id[{self.index}], time[{cost_time}]'
65
+ hot_time_cost = "Hotspot " + time_cost
66
+
67
+ if cost_time.total_seconds() > self.timeout:
68
+ logger.info(hot_time_cost)
69
+ else:
70
+ logger.info(time_cost)
71
+
72
+
73
+ def support_basic_type(data):
74
+ if isinstance(data, (bool, int, float, torch.Tensor)):
75
+ return True
76
+ return False
77
+
78
+
79
+ def dump_data(data, prefix, dump_path):
80
+ if isinstance(data, (tuple, list)) and data:
81
+ for i, item in enumerate(data):
82
+ dump_data(item, "{}.{}".format(prefix, i), dump_path)
83
+ return
84
+ elif support_basic_type(data):
85
+ if isinstance(data, torch.Tensor) and data.is_meta:
86
+ return
87
+ # dump data may greater than summary_list collect
88
+ path = os.path.join(dump_path, f'{prefix}.npy')
89
+ save_npy(data, path)
90
+
91
+
92
+ def save_temp_summary(api_index, single_api_summary, path, lock):
93
+ summary_path = os.path.join(path, f'summary.json')
94
+ lock.acquire()
95
+ with FileOpen(summary_path, "a") as f:
96
+ json.dump([api_index, single_api_summary], f)
97
+ f.write('\n')
98
+ lock.release()
99
+
100
+
101
+ def dispatch_workflow(run_param: DispatchRunParam, data_info: DisPatchDataInfo):
102
+ cpu_args, cpu_kwargs = data_info.cpu_args, data_info.cpu_kwargs
103
+ all_summary, func = data_info.all_summary, data_info.func
104
+ npu_out_cpu, cpu_out, lock = data_info.npu_out_cpu, data_info.cpu_out, data_info.lock
105
+ single_api_summary = []
106
+
107
+ prefix_input = f'{run_param.aten_api}_{run_param.single_api_index}_input'
108
+ prefix_output = f'{run_param.aten_api}_{run_param.single_api_index}_output'
109
+
110
+ accuracy_reached = False
111
+ with TimeStatistics("COMPARE OUTPUT", run_param):
112
+ run_param.comparator.compare_output(prefix_output, cpu_out, npu_out_cpu, None, None)
113
+
114
+ # user set dump or auto mode will dump
115
+ if run_param.dump_flag or (run_param.auto_dump_flag and not accuracy_reached):
116
+ with TimeStatistics("DUMP INPUT", run_param):
117
+ dump_data(cpu_args, prefix_input, run_param.root_npu_path)
118
+ if len(cpu_kwargs) > 0:
119
+ for k, v in cpu_kwargs.items():
120
+ kwargs_prefix_name = prefix_input + f'_{k}'
121
+ dump_data(v, kwargs_prefix_name, run_param.root_npu_path)
122
+
123
+ with TimeStatistics("DUMP OUTPUT", run_param):
124
+ dump_data(cpu_out, prefix_output, run_param.root_cpu_path)
125
+ dump_data(npu_out_cpu, prefix_output, run_param.root_npu_path)
126
+
127
+ if run_param.process_num == 0:
128
+ all_summary[run_param.api_index - 1] = copy.deepcopy(single_api_summary)
129
+ else:
130
+ save_temp_summary(run_param.api_index - 1, single_api_summary, run_param.root_cpu_path, lock)
131
+
132
+
133
+ def get_torch_func(run_param):
134
+ if hasattr(torch.ops, run_param.func_namespace):
135
+ ops_func = getattr(torch.ops, run_param.func_namespace)
136
+ if hasattr(ops_func, run_param.aten_api):
137
+ ops_aten_func = getattr(ops_func, run_param.aten_api)
138
+ if hasattr(ops_aten_func, run_param.aten_api_overload_name):
139
+ ops_aten_overlaod_func = getattr(ops_aten_func, run_param.aten_api_overload_name)
140
+ return ops_aten_overlaod_func
141
+ return None
142
+
143
+
144
+ def dispatch_multiprocess(run_param, dispatch_data_info):
145
+ torch_func = get_torch_func(run_param)
146
+ if torch_func is None:
147
+ logger.error(f'can not find suitable call api:{run_param.aten_api}')
148
+ else:
149
+ dispatch_data_info.func = torch_func
150
+ dispatch_workflow(run_param, dispatch_data_info)
151
+
152
+
153
+ def error_call(err):
154
+ logger.error(f'multiprocess {err}')
155
+