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
@@ -0,0 +1,247 @@
1
+ # config.json 配置示例
2
+
3
+ 以下示例包含当前支持的所有场景可配置的完整参数。
4
+
5
+ ## 1 PyTorch 场景
6
+
7
+ ### 1.1 task 配置为 statistics
8
+
9
+ ```json
10
+ {
11
+ "task": "statistics",
12
+ "dump_path": "/home/data_dump",
13
+ "rank": [],
14
+ "step": [],
15
+ "level": "L1",
16
+ "seed": 1234,
17
+ "is_deterministic": false,
18
+ "enable_dataloader": false,
19
+
20
+ "statistics": {
21
+ "scope": [],
22
+ "list": [],
23
+ "data_mode": ["all"],
24
+ "summary_mode": "statistics"
25
+ }
26
+ }
27
+ ```
28
+
29
+ ### 1.2 task 配置为 tensor
30
+
31
+ ```json
32
+ {
33
+ "task": "tensor",
34
+ "dump_path": "/home/data_dump",
35
+ "rank": [],
36
+ "step": [],
37
+ "level": "L1",
38
+ "seed": 1234,
39
+ "is_deterministic": false,
40
+ "enable_dataloader": false,
41
+
42
+ "tensor": {
43
+ "scope": [],
44
+ "list":[],
45
+ "data_mode": ["all"],
46
+ "backward_input": ""
47
+ }
48
+ }
49
+ ```
50
+
51
+ ### 1.3 task 配置为 run_ut
52
+
53
+ ```json
54
+ {
55
+ "task": "run_ut",
56
+ "dump_path": "/home/data_dump",
57
+ "rank": [],
58
+ "step": [],
59
+ "level": "L1",
60
+ "seed": 1234,
61
+ "is_deterministic": false,
62
+ "enable_dataloader": false,
63
+
64
+ "run_ut": {
65
+ "white_list": [],
66
+ "black_list": [],
67
+ "error_data_path": "./"
68
+ }
69
+ }
70
+ ```
71
+
72
+ ### 1.4 task 配置为 overflow_check
73
+
74
+ ```json
75
+ {
76
+ "task": "overflow_check",
77
+ "dump_path": "/home/data_dump",
78
+ "rank": [],
79
+ "step": [],
80
+ "level": "L1",
81
+ "seed": 1234,
82
+ "is_deterministic": false,
83
+ "enable_dataloader": false,
84
+
85
+ "overflow_check": {
86
+ "overflow_nums": 1
87
+ }
88
+ }
89
+ ```
90
+
91
+ ### 1.5 task 配置为 free_benchmark
92
+
93
+ ```json
94
+ {
95
+ "task": "free_benchmark",
96
+ "dump_path": "/home/data_dump",
97
+ "rank": [],
98
+ "step": [],
99
+ "level": "L1",
100
+ "seed": 1234,
101
+ "is_deterministic": false,
102
+ "enable_dataloader": false,
103
+
104
+ "free_benchmark": {
105
+ "scope": [],
106
+ "list": ["conv2d"],
107
+ "fuzz_device": "npu",
108
+ "pert_mode": "improve_precision",
109
+ "handler_type": "check",
110
+ "fuzz_level": "L1",
111
+ "fuzz_stage": "forward",
112
+ "if_preheat": false,
113
+ "preheat_step": 15,
114
+ "max_sample": 20
115
+ }
116
+ }
117
+ ```
118
+
119
+ ## 2 MindSpore 静态图场景
120
+
121
+ ### 2.1 task 配置为 statistics
122
+
123
+ ```json
124
+ {
125
+ "task": "statistics",
126
+ "dump_path": "/home/data_dump",
127
+ "rank": [],
128
+ "step": [],
129
+ "level": "L2",
130
+
131
+ "statistics": {
132
+ "list": [],
133
+ "data_mode": ["all"],
134
+ "summary_mode": "statistics"
135
+ }
136
+ }
137
+ ```
138
+
139
+ ### 2.2 task 配置为 tensor
140
+
141
+ ```json
142
+ {
143
+ "task": "tensor",
144
+ "dump_path": "/home/data_dump",
145
+ "rank": [],
146
+ "step": [],
147
+ "level": "L2",
148
+
149
+ "tensor": {
150
+ "list":[],
151
+ "data_mode": ["all"],
152
+ "backward_input": ""
153
+ }
154
+ }
155
+ ```
156
+
157
+ ### 2.3 task 配置为 overflow_check
158
+
159
+ ```json
160
+ {
161
+ "task": "overflow_check",
162
+ "dump_path": "/home/data_dump",
163
+ "rank": [],
164
+ "step": [],
165
+ "level": "L2",
166
+
167
+ "overflow_check": {
168
+ "check_mode": "all"
169
+ }
170
+ }
171
+ ```
172
+
173
+ ## 3 MindSpore 动态图场景
174
+
175
+ ### 3.1 task 配置为 statistics
176
+
177
+ ```json
178
+ {
179
+ "task": "statistics",
180
+ "dump_path": "/home/data_dump",
181
+ "rank": [],
182
+ "step": [],
183
+ "level": "L1",
184
+
185
+ "statistics": {
186
+ "scope": [],
187
+ "list": [],
188
+ "data_mode": ["all"],
189
+ "summary_mode": "statistics"
190
+ }
191
+ }
192
+ ```
193
+
194
+ ### 3.2 task 配置为 tensor
195
+
196
+ ```json
197
+ {
198
+ "task": "tensor",
199
+ "dump_path": "/home/data_dump",
200
+ "rank": [],
201
+ "step": [],
202
+ "level": "L1",
203
+
204
+ "tensor": {
205
+ "scope": [],
206
+ "list":[],
207
+ "data_mode": ["all"]
208
+ }
209
+ }
210
+ ```
211
+
212
+ ### 3.3 task 配置为 overflow_check
213
+
214
+ ```json
215
+ {
216
+ "task": "overflow_check",
217
+ "dump_path": "/home/data_dump",
218
+ "rank": [],
219
+ "step": [],
220
+ "level": "L1",
221
+
222
+ "overflow_check": {
223
+ "overflow_nums": 1
224
+ }
225
+ }
226
+ ```
227
+
228
+ ### 3.4 task 配置为 free_benchmark
229
+
230
+ ```json
231
+ {
232
+ "task": "free_benchmark",
233
+ "dump_path": "/home/data_dump",
234
+ "rank": [],
235
+ "step": [],
236
+ "level": "L1",
237
+
238
+ "free_benchmark": {
239
+ "list": ["mindspore.ops.add"],
240
+ "fuzz_device": "npu",
241
+ "pert_mode": "improve_precision",
242
+ "handler_type": "check",
243
+ "fuzz_level": "L1",
244
+ "fuzz_stage": "forward"
245
+ }
246
+ }
247
+ ```
@@ -0,0 +1,76 @@
1
+ # acl_config.json 配置文件说明
2
+
3
+ 当 PyTorch 场景 level 取"L2"时,须配置 acl_config 参数,并指定 acl_config.json 文件(用于指定 L2 kernel 级 dump 的配置),此时 **config.json** 文件配置示例如下:
4
+
5
+ ## 1 前向 kernel dump 配置示例
6
+
7
+ "scope"配置为前向 API 名称,仅支持配置一个 API。
8
+
9
+ ```json
10
+ {
11
+ "task": "tensor",
12
+ "dump_path": "/home/data_dump",
13
+ "level": "L2",
14
+ "rank": [0],
15
+ "step": [0],
16
+ "is_deterministic": false,
17
+ "tensor": {
18
+ "scope": ["Tensor.__mul__.10.forward"],
19
+ "list":[],
20
+ "data_mode": ["all"],
21
+ "backward_input": [""],
22
+ "file_format": "npy"
23
+ },
24
+ "acl_config": "acl_config.json"
25
+ }
26
+ ```
27
+
28
+ ## 2 反向 kernel dump 配置示例
29
+
30
+ 执行反向 kernel dump 前需要先使用工具 dump 该 API 的反向输入,保存 pt 文件,"backward_input"参数中传入该 pt 文件路径。
31
+
32
+ "scope"配置为反向API名称,仅支持配置一个API。
33
+
34
+ ```json
35
+ {
36
+ "task": "tensor",
37
+ "dump_path": "/home/data_dump",
38
+ "level": "L2",
39
+ "rank": [0],
40
+ "step": [0],
41
+ "is_deterministic": false,
42
+ "tensor": {
43
+ "scope": ["Tensor.__mul__.10.backward"],
44
+ "list":[],
45
+ "data_mode": ["all"],
46
+ "backward_input": ["Tensor.__mul__.10.backward.input.0.pt"],
47
+ "file_format": "npy"
48
+ },
49
+ "acl_config": "acl_config.json"
50
+ }
51
+ ```
52
+
53
+ ## 3 acl_config.json 配置示例
54
+
55
+ 该文件须自行创建,配置示例如下:
56
+
57
+ ```json
58
+ {
59
+ "dump":
60
+ {
61
+ "dump_list":[],
62
+ "dump_path":"./dump/output",
63
+ "dump_mode":"all",
64
+ "dump_op_switch":"on"
65
+ }
66
+ }
67
+ ```
68
+
69
+ **acl_config.json 参数说明**
70
+
71
+ | 字段名 | 解释 |
72
+ | -------------- | ------------------------------------------------------------ |
73
+ | dump_list | 待 dump 数据的 API 模型。为空,无需配置。 |
74
+ | dump_path | dump 数据文件存储到运行环境的目录,主要配置的是 kernel 级数据的存放路径。支持配置绝对路径或相对路径。dump_path 须为已存在目录。 |
75
+ | dump_mode | dump 数据模式,可取值,<br/> output:dump API 的输出数据,默认值;<br/> input:dump API 的输入数据;<br/> all:dump API 的输入、输出数据。 |
76
+ | dump_op_switch | 单 API 模型 dump 数据开关,可取值,<br> off:关闭单API模型dump,默认值;<br> on:开启单API模型dump。 |
@@ -0,0 +1,198 @@
1
+ # PyTorch 场景的精度数据采集
2
+
3
+ msprobe 工具主要通过在训练脚本内添加 dump 接口、启动训练的方式采集精度数据。
4
+
5
+ 本工具提供固定的 API 支持列表,若需要删除或增加 dump 的 API,可以在 msprobe/pytorch/hook_module/support_wrap_ops.yaml 文件内手动修改,如下示例:
6
+
7
+ ```yaml
8
+ functional: # functional为算子类别,找到对应的类别,在该类别下按照下列格式删除或添加API
9
+ - conv1d
10
+ - conv2d
11
+ - conv3d
12
+ ```
13
+
14
+ ## 1 接口介绍
15
+
16
+ ### 1.1 PrecisionDebugger
17
+
18
+ **功能说明**:通过加载 dump 配置文件的方式来确定 dump 操作的详细配置。
19
+
20
+ **原型**:
21
+
22
+ ```Python
23
+ PrecisionDebugger(config_path=None, task=None, dump_path=None, level=None, model=None, step=None)
24
+ ```
25
+
26
+ 1. config_path:指定 dump 配置文件路径;model:指定具体的 torch.nn.Module,默认未配置,level 配置为"L0"或"mix"时必须配置该参数。其他参数均在 [config.json](../config.json) 文件中可配,详细配置可见 [config.json 介绍](./02.config_introduction.md)。
27
+ 2. 此接口的参数均不是必要,且优先级高于 [config.json](../config.json) 文件中的配置,但可配置的参数相比 config.json 较少。
28
+
29
+ ### 1.2 start
30
+
31
+ **功能说明**:启动精度数据采集。在模型初始化之后的位置添加。需要与 stop 函数一起添加在 for 循环内。
32
+
33
+ **原型**:
34
+
35
+ ```Python
36
+ debugger.start()
37
+ ```
38
+
39
+ ### 1.3 stop
40
+
41
+ **功能说明**:停止精度数据采集。在 **start** 函数之后的任意位置添加。若需要 dump 反向数据,则需要添加在反向计算代码(如,loss.backward)之后。使用示例可参见 [2.1 采集 model 的精度数据](#21-采集-model-的精度数据)和 [2.2 采集完整的前反向数据](#22-采集完整的前反向数据)。
42
+
43
+ **原型**:
44
+
45
+ ```Python
46
+ debugger.stop()
47
+ ```
48
+
49
+ ### 1.4 forward_backward_dump_end
50
+
51
+ **功能说明**:停止精度数据采集。用于 dump 指定代码的前反向数据。在 **start** 函数之后,反向计算代码(如,loss.backward)之前的任意位置添加,可以采集 **start** 函数和该函数之间的前反向数据,可以通过调整 **start** 函数与该函数的位置,来指定需要 dump 的代码块。要求 **stop** 函数添加在反向计算代码(如,loss.backward)之后,此时该函数与 **stop** 函数之间的代码不会被 dump。使用示例可参见 [2.3 采集指定代码块的前反向数据](#23-采集指定代码块的前反向数据)
52
+
53
+ **原型**:
54
+
55
+ ```Python
56
+ forward_backward_dump_end()
57
+ ```
58
+
59
+ ### 1.5 step
60
+
61
+ **功能说明**:更新 dump 参数。在最后一个 **stop** 函数后或一个 step 结束的位置添加。需要与 **start** 函数一起添加在 for 循环内。
62
+
63
+ **原型**:
64
+
65
+ ```Python
66
+ debugger.step()
67
+ ```
68
+
69
+ ## 2 示例代码
70
+
71
+ ### 2.1 采集 model 的精度数据
72
+
73
+ 这个示例定义了一个 nn.Module 类型的简单网络,在进行数据采集时使用原型函数 PrecisionDebugger 传入 config_path 参数和 model 参数。
74
+
75
+ ```python
76
+ # 根据需要import包
77
+ import torch
78
+ import torch.nn as nn
79
+ import torch_npu # 需安装 torch_npu
80
+ import torch.nn.functional as F
81
+ from msprobe.pytorch import PrecisionDebugger
82
+
83
+
84
+ torch.npu.set_device("npu:0")
85
+ # 定义网络
86
+ class ModuleOP(nn.Module):
87
+ def __init__(self) -> None:
88
+ super().__init__()
89
+ self.linear_1 = nn.Linear(in_features=8,out_features=4)
90
+ self.linear_2 = nn.Linear(in_features=4,out_features=2)
91
+
92
+ def forward(self,x):
93
+ x1 = self.linear_1(x)
94
+ x2 = self.linear_2(x1)
95
+ r1 = F.relu(x2)
96
+ return r1
97
+
98
+ if __name__ == "__main__":
99
+ module = ModuleOP()
100
+ # 注册工具
101
+ debugger = PrecisionDebugger('./config.json', model=module)
102
+ debugger.start()
103
+ x = torch.randn(10,8)
104
+ out = module(x)
105
+ loss = out.sum()
106
+ loss.backward()
107
+ debugger.stop()
108
+
109
+ ```
110
+ ### 2.2 采集完整的前反向数据
111
+
112
+ ```Python
113
+ from msprobe.pytorch import PrecisionDebugger
114
+
115
+ # 请勿将PrecisionDebugger的初始化流程插入到循环代码中
116
+ debugger = PrecisionDebugger(config_path="./config.json", dump_path="./dump_path")
117
+ # 模型、损失函数的定义及初始化等操作
118
+ # ...
119
+ # 数据集迭代的位置一般为模型训练开始的位置
120
+ for data, label in data_loader:
121
+ debugger.start() # 开启数据dump
122
+ # 如下是模型每个step执行的逻辑
123
+ output = model(data)
124
+ #...
125
+ loss.backward()
126
+ debugger.stop() # 关闭数据dump
127
+ debugger.step() # 结束一个step的dump
128
+ ```
129
+
130
+ ### 2.3 采集指定代码块的前反向数据
131
+
132
+ ```Python
133
+ from msprobe.pytorch import PrecisionDebugger
134
+
135
+ # 请勿将PrecisionDebugger的初始化流程插入到循环代码中
136
+ debugger = PrecisionDebugger(config_path="./config.json", dump_path="./dump_path")
137
+
138
+ # 模型、损失函数的定义及初始化等操作
139
+ # ...
140
+ # 数据集迭代的位置一般为模型训练开始的位置
141
+ for data, label in data_loader:
142
+ debugger.start() # 开启数据dump
143
+ # 如下是模型每个step执行的逻辑
144
+ output = model(data)
145
+ debugger.forward_backward_dump_end() # 插入该函数到start函数之后,只dump start函数到该函数之间代码的前反向数据,本函数到stop函数之间的数据则不dump
146
+ #...
147
+ loss.backward()
148
+ debugger.stop() # 关闭数据dump
149
+ debugger.step() # 结束一个step的dump
150
+ ```
151
+
152
+
153
+
154
+ ## 3 dump 结果文件介绍
155
+
156
+ 训练结束后,工具将 dump 的数据保存在 dump_path 参数指定的目录下。目录结构示例如下:
157
+
158
+ ```Python
159
+ ├── dump_path
160
+ │ ├── step0
161
+ │ | ├── rank0
162
+ │ | │ ├── dump_tensor_data
163
+ | | | | ├── Tensor.permute.1.forward.pt
164
+ | | | | ├── MyModule.0.forward.input.pt # 开启模块级精度数据dump时存在模块级的dump数据文件
165
+ | | | | ...
166
+ | | | | └── Fcuntion.linear.5.backward.output.pt
167
+ │ | | ├── dump.json # 保存前反向算子、算子的统计量信息或溢出算子信息。包含dump数据的API名称(命名格式为:`{api_type}_{api_name}_{API调用次数}_{前向反向}_{input/output}.{参数序号}`)、dtype、 shape、各数据的max、min、mean、L2norm统计信息以及当配置summary_mode="md5"时的md5数据。其中,“参数序号”表示该API下的第n个参数,例如1,则为第一个参数,若该参数为list格式,则根据list继续排序,例如1.1,表示该API的第1个参数的第1个子参数;L2norm表示L2范数(平方根)
168
+ │ | | ├── stack.json # 算子调用栈信息
169
+ │ | | └── construct.json # 分层分级结构
170
+ │ | ├── rank1
171
+ | | | ├── dump_tensor_data
172
+ | | | | └── ...
173
+ │ | | ├── dump.json
174
+ │ | | ├── stack.json
175
+ | | | └── construct.json
176
+ │ | ├── ...
177
+ │ | |
178
+ | | └── rank7
179
+ │ ├── step1
180
+ │ | ├── ...
181
+ │ ├── step2
182
+ ```
183
+
184
+ dump 过程中,pt 文件在对应算子或者模块被执行后就会落盘,而 json 文件则需要在正常执行 PrecisionDebugger.stop() 后才会写入完整数据,异常的程序终止会保存终止前被执行算子的相关 npy 文件,可能会导致 json 文件中数据丢失。
185
+
186
+ 其中 rank 为设备上各卡的 ID,每张卡上 dump 的数据会生成对应 dump 目录。非分布式场景下没有rank ID,目录名称为rank。
187
+
188
+ pt 文件保存的前缀和 PyTorch 对应关系如下:
189
+
190
+ | 前缀 | Torch模块 |
191
+ | ----------- | ------------------- |
192
+ | Tensor | torch.Tensor |
193
+ | Torch | torch |
194
+ | Functional | torch.nn.functional |
195
+ | NPU | NPU亲和算子 |
196
+ | VF | torch._VF |
197
+ | Aten | torch.ops.aten |
198
+ | Distributed | torch.distributed |