mindstudio-probe 1.0.3__py3-none-any.whl → 1.0.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/LICENSE +201 -201
  2. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/METADATA +36 -34
  3. mindstudio_probe-1.0.4.dist-info/RECORD +276 -0
  4. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/WHEEL +1 -1
  5. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/entry_points.txt +1 -0
  6. msprobe/README.md +101 -237
  7. msprobe/{config/config.json → config.json} +49 -49
  8. msprobe/core/advisor/advisor.py +124 -124
  9. msprobe/core/advisor/advisor_const.py +59 -59
  10. msprobe/core/advisor/advisor_result.py +58 -58
  11. msprobe/core/common/const.py +341 -318
  12. msprobe/core/common/exceptions.py +99 -99
  13. msprobe/core/common/{file_check.py → file_utils.py} +478 -283
  14. msprobe/core/common/log.py +76 -69
  15. msprobe/core/common/utils.py +385 -616
  16. msprobe/core/common_config.py +85 -71
  17. msprobe/core/compare/acc_compare.py +299 -298
  18. msprobe/core/compare/check.py +95 -95
  19. msprobe/core/compare/compare_cli.py +49 -49
  20. msprobe/core/compare/highlight.py +223 -222
  21. msprobe/core/compare/multiprocessing_compute.py +149 -149
  22. msprobe/core/compare/npy_compare.py +295 -295
  23. msprobe/core/compare/utils.py +430 -429
  24. msprobe/core/data_dump/data_collector.py +154 -144
  25. msprobe/core/data_dump/data_processor/base.py +314 -293
  26. msprobe/core/data_dump/data_processor/factory.py +59 -59
  27. msprobe/core/data_dump/data_processor/mindspore_processor.py +186 -198
  28. msprobe/core/data_dump/data_processor/pytorch_processor.py +366 -389
  29. msprobe/core/data_dump/json_writer.py +96 -116
  30. msprobe/core/data_dump/scope.py +178 -178
  31. msprobe/core/grad_probe/constant.py +70 -70
  32. msprobe/core/grad_probe/grad_compare.py +171 -175
  33. msprobe/core/grad_probe/utils.py +64 -52
  34. msprobe/docs/01.installation.md +89 -0
  35. msprobe/docs/02.config_introduction.md +165 -0
  36. msprobe/docs/03.config_examples.md +247 -0
  37. msprobe/docs/04.acl_config_examples.md +76 -0
  38. msprobe/docs/05.data_dump_PyTorch.md +198 -0
  39. msprobe/docs/06.data_dump_MindSpore.md +243 -0
  40. msprobe/docs/07.accuracy_checker_PyTorch.md +274 -0
  41. msprobe/docs/08.accuracy_checker_online_PyTorch.md +198 -0
  42. msprobe/docs/09.accuracy_checker_MindSpore.md +68 -0
  43. msprobe/docs/10.accuracy_compare_PyTorch.md +245 -0
  44. msprobe/docs/11.accuracy_compare_MindSpore.md +202 -0
  45. msprobe/docs/12.overflow_check_PyTorch.md +79 -0
  46. msprobe/docs/13.overflow_check_MindSpore.md +31 -0
  47. msprobe/{pytorch/doc/parse_tool.md → docs/14.data_parse_PyTorch.md} +283 -286
  48. msprobe/docs/15.free_benchmarking_PyTorch.md +164 -0
  49. msprobe/{doc/grad_probe/grad_probe.md → docs/17.grad_probe.md} +207 -207
  50. msprobe/docs/FAQ_PyTorch.md +177 -0
  51. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +146 -0
  52. msprobe/docs/img/free_benchmark_framework.png +0 -0
  53. msprobe/mindspore/__init__.py +1 -1
  54. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +254 -245
  55. msprobe/mindspore/api_accuracy_checker/api_info.py +69 -69
  56. msprobe/mindspore/api_accuracy_checker/api_runner.py +155 -151
  57. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +196 -196
  58. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +6 -0
  59. msprobe/mindspore/api_accuracy_checker/compute_element.py +238 -223
  60. msprobe/mindspore/api_accuracy_checker/main.py +8 -15
  61. msprobe/mindspore/api_accuracy_checker/type_mapping.py +113 -113
  62. msprobe/mindspore/api_accuracy_checker/utils.py +79 -62
  63. msprobe/mindspore/cell_processor.py +34 -34
  64. msprobe/mindspore/common/const.py +106 -87
  65. msprobe/mindspore/common/log.py +37 -37
  66. msprobe/mindspore/common/utils.py +81 -57
  67. msprobe/mindspore/compare/distributed_compare.py +75 -75
  68. msprobe/mindspore/compare/ms_compare.py +219 -117
  69. msprobe/mindspore/compare/ms_graph_compare.py +348 -317
  70. msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -399
  71. msprobe/mindspore/debugger/debugger_config.py +66 -74
  72. msprobe/mindspore/debugger/precision_debugger.py +126 -107
  73. msprobe/mindspore/dump/dump_tool_factory.py +35 -35
  74. msprobe/mindspore/dump/hook_cell/api_registry.py +118 -104
  75. msprobe/mindspore/dump/hook_cell/hook_cell.py +55 -53
  76. msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +922 -925
  77. msprobe/mindspore/dump/hook_cell/wrap_api.py +113 -0
  78. msprobe/mindspore/dump/jit_dump.py +72 -56
  79. msprobe/mindspore/dump/kernel_graph_dump.py +59 -60
  80. msprobe/mindspore/dump/kernel_kbyk_dump.py +64 -65
  81. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +116 -116
  82. msprobe/mindspore/free_benchmark/common/config.py +12 -12
  83. msprobe/mindspore/free_benchmark/common/handler_params.py +17 -17
  84. msprobe/mindspore/free_benchmark/common/utils.py +71 -71
  85. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -842
  86. msprobe/mindspore/free_benchmark/decorator/dec_forward.py +43 -42
  87. msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +107 -107
  88. msprobe/mindspore/free_benchmark/handler/base_handler.py +90 -90
  89. msprobe/mindspore/free_benchmark/handler/check_handler.py +41 -41
  90. msprobe/mindspore/free_benchmark/handler/fix_handler.py +36 -36
  91. msprobe/mindspore/free_benchmark/handler/handler_factory.py +21 -21
  92. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +67 -67
  93. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +21 -21
  94. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +63 -63
  95. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +51 -0
  96. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +35 -34
  97. msprobe/mindspore/free_benchmark/perturbation/no_change.py +12 -12
  98. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +29 -27
  99. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +33 -33
  100. msprobe/mindspore/grad_probe/global_context.py +90 -91
  101. msprobe/mindspore/grad_probe/grad_analyzer.py +231 -231
  102. msprobe/mindspore/grad_probe/grad_monitor.py +27 -27
  103. msprobe/mindspore/grad_probe/grad_stat_csv.py +131 -131
  104. msprobe/mindspore/grad_probe/hook.py +94 -92
  105. msprobe/mindspore/grad_probe/utils.py +29 -28
  106. msprobe/mindspore/ms_config.py +128 -126
  107. msprobe/mindspore/overflow_check/kernel_graph_overflow_check.py +44 -45
  108. msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +34 -34
  109. msprobe/mindspore/runtime.py +4 -4
  110. msprobe/mindspore/service.py +378 -354
  111. msprobe/mindspore/task_handler_factory.py +24 -24
  112. msprobe/msprobe.py +105 -107
  113. msprobe/pytorch/__init__.py +3 -3
  114. msprobe/pytorch/api_accuracy_checker/common/config.py +53 -55
  115. msprobe/pytorch/api_accuracy_checker/common/utils.py +214 -165
  116. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +213 -213
  117. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +606 -581
  118. msprobe/pytorch/api_accuracy_checker/compare/api_precision_standard.yaml +132 -132
  119. msprobe/pytorch/api_accuracy_checker/compare/api_precision_threshold.yaml +390 -390
  120. msprobe/pytorch/api_accuracy_checker/compare/compare.py +386 -381
  121. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +73 -73
  122. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +245 -244
  123. msprobe/pytorch/api_accuracy_checker/config.yaml +10 -10
  124. msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +335 -332
  125. msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +200 -199
  126. msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +133 -134
  127. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +592 -581
  128. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +70 -74
  129. msprobe/pytorch/api_accuracy_checker/run_ut/torch_ut_setting.json +7 -4
  130. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +197 -202
  131. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +325 -324
  132. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +204 -204
  133. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +219 -218
  134. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +10 -10
  135. msprobe/pytorch/bench_functions/__init__.py +15 -15
  136. msprobe/pytorch/bench_functions/apply_adam_w.py +28 -28
  137. msprobe/pytorch/bench_functions/confusion_transpose.py +19 -19
  138. msprobe/pytorch/bench_functions/fast_gelu.py +55 -55
  139. msprobe/pytorch/bench_functions/layer_norm_eval.py +6 -6
  140. msprobe/pytorch/bench_functions/linear.py +12 -12
  141. msprobe/pytorch/bench_functions/matmul_backward.py +48 -48
  142. msprobe/pytorch/bench_functions/npu_fusion_attention.py +509 -421
  143. msprobe/pytorch/bench_functions/rms_norm.py +15 -15
  144. msprobe/pytorch/bench_functions/rotary_mul.py +52 -52
  145. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +26 -26
  146. msprobe/pytorch/bench_functions/swiglu.py +55 -55
  147. msprobe/pytorch/common/__init__.py +2 -2
  148. msprobe/pytorch/common/compare_script.template +14 -14
  149. msprobe/pytorch/common/log.py +20 -31
  150. msprobe/pytorch/common/parse_json.py +39 -39
  151. msprobe/pytorch/common/utils.py +305 -300
  152. msprobe/pytorch/compare/distributed_compare.py +66 -66
  153. msprobe/pytorch/compare/mapping.yaml +607 -607
  154. msprobe/pytorch/compare/match.py +34 -33
  155. msprobe/pytorch/compare/pt_compare.py +50 -40
  156. msprobe/pytorch/debugger/debugger_config.py +95 -95
  157. msprobe/pytorch/debugger/precision_debugger.py +125 -125
  158. msprobe/pytorch/free_benchmark/__init__.py +8 -8
  159. msprobe/pytorch/free_benchmark/common/constant.py +70 -70
  160. msprobe/pytorch/free_benchmark/common/counter.py +71 -71
  161. msprobe/pytorch/free_benchmark/common/enums.py +37 -37
  162. msprobe/pytorch/free_benchmark/common/params.py +129 -129
  163. msprobe/pytorch/free_benchmark/common/utils.py +102 -102
  164. msprobe/pytorch/free_benchmark/compare/grad_saver.py +179 -179
  165. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +104 -104
  166. msprobe/pytorch/free_benchmark/main.py +105 -105
  167. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +13 -13
  168. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +41 -41
  169. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +90 -90
  170. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +104 -104
  171. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +63 -63
  172. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +68 -68
  173. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +28 -28
  174. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +45 -45
  175. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +19 -19
  176. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +217 -217
  177. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +39 -39
  178. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +23 -23
  179. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +30 -30
  180. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +170 -170
  181. msprobe/pytorch/function_factory.py +76 -75
  182. msprobe/pytorch/functional/dump_module.py +39 -39
  183. msprobe/pytorch/grad_probe/grad_monitor.py +91 -90
  184. msprobe/pytorch/grad_probe/grad_stat_csv.py +128 -128
  185. msprobe/pytorch/hook_module/api_registry.py +161 -161
  186. msprobe/pytorch/hook_module/hook_module.py +120 -120
  187. msprobe/pytorch/hook_module/support_wrap_ops.yaml +1879 -1877
  188. msprobe/pytorch/hook_module/utils.py +30 -29
  189. msprobe/pytorch/hook_module/wrap_aten.py +110 -110
  190. msprobe/pytorch/hook_module/wrap_distributed.py +78 -78
  191. msprobe/pytorch/hook_module/wrap_functional.py +105 -105
  192. msprobe/pytorch/hook_module/wrap_npu_custom.py +93 -84
  193. msprobe/pytorch/hook_module/wrap_tensor.py +71 -71
  194. msprobe/pytorch/hook_module/wrap_torch.py +86 -86
  195. msprobe/pytorch/hook_module/wrap_vf.py +62 -62
  196. msprobe/pytorch/module_processer.py +138 -138
  197. msprobe/pytorch/online_dispatch/__init__.py +20 -20
  198. msprobe/pytorch/online_dispatch/compare.py +236 -236
  199. msprobe/pytorch/online_dispatch/dispatch.py +271 -271
  200. msprobe/pytorch/online_dispatch/dump_compare.py +155 -156
  201. msprobe/pytorch/online_dispatch/single_compare.py +391 -391
  202. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +49 -49
  203. msprobe/pytorch/online_dispatch/utils.py +130 -146
  204. msprobe/pytorch/parse.py +4 -4
  205. msprobe/pytorch/parse_tool/cli.py +32 -32
  206. msprobe/pytorch/parse_tool/lib/compare.py +260 -271
  207. msprobe/pytorch/parse_tool/lib/config.py +52 -52
  208. msprobe/pytorch/parse_tool/lib/file_desc.py +31 -31
  209. msprobe/pytorch/parse_tool/lib/interactive_cli.py +102 -102
  210. msprobe/pytorch/parse_tool/lib/parse_exception.py +54 -54
  211. msprobe/pytorch/parse_tool/lib/parse_tool.py +158 -158
  212. msprobe/pytorch/parse_tool/lib/utils.py +316 -321
  213. msprobe/pytorch/parse_tool/lib/visualization.py +85 -91
  214. msprobe/pytorch/pt_config.py +188 -187
  215. msprobe/pytorch/service.py +246 -252
  216. mindstudio_probe-1.0.3.dist-info/RECORD +0 -272
  217. msprobe/config/README.md +0 -539
  218. msprobe/mindspore/doc/compare.md +0 -58
  219. msprobe/mindspore/doc/dump.md +0 -217
  220. msprobe/mindspore/dump/hook_cell/wrap_functional.py +0 -91
  221. msprobe/mindspore/dump/hook_cell/wrap_tensor.py +0 -63
  222. msprobe/pytorch/doc/FAQ.md +0 -193
  223. msprobe/pytorch/doc/api_accuracy_checker.md +0 -313
  224. msprobe/pytorch/doc/api_accuracy_checker_online.md +0 -187
  225. msprobe/pytorch/doc/dump.md +0 -260
  226. msprobe/pytorch/doc/msprobe/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/206/320/245/342/226/221/321/206/320/235/320/276dump/321/206/320/260/320/227/321/205/320/227/320/226/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -182
  227. msprobe/pytorch/doc/ptdbg_ascend_compare.md +0 -240
  228. msprobe/pytorch/doc/ptdbg_ascend_overview.md +0 -68
  229. msprobe/pytorch/doc/ptdbg_ascend_quickstart.md +0 -381
  230. msprobe/pytorch/doc/run_overflow_check.md +0 -25
  231. msprobe/pytorch/doc//321/205/320/254/320/270/321/207/342/225/221/342/224/220/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/206/320/277/320/244/321/205/320/277/342/225/243.md +0 -90
  232. msprobe/pytorch/doc//321/206/320/247/320/260/321/206/320/260/320/227/321/206/320/255/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/205/320/254/342/225/221/321/206/320/251/320/277/321/211/320/272/320/234/321/210/320/277/320/221/321/205/320/242/320/234/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -151
  233. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/top_level.txt +0 -0
  234. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_1.png +0 -0
  235. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_2.png +0 -0
  236. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_3.png +0 -0
  237. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_4.png +0 -0
  238. /msprobe/{pytorch/doc → docs}/img/GPT-3_1.png +0 -0
  239. /msprobe/{pytorch/doc → docs}/img/GPT-3_2.png +0 -0
  240. /msprobe/{pytorch/doc → docs}/img/GPT-3_3.png +0 -0
  241. /msprobe/{pytorch/doc → docs}/img/GPT-3_4.png +0 -0
  242. /msprobe/{pytorch/doc → docs}/img/GPT-3_5.png +0 -0
  243. /msprobe/{pytorch/doc → docs}/img/GPT-3_6.png +0 -0
  244. /msprobe/{pytorch/doc → docs}/img/GPT-3_7.png +0 -0
  245. /msprobe/{pytorch/doc → docs}/img/GPT-3_8.png +0 -0
  246. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_1.png +0 -0
  247. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_2.png +0 -0
  248. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_details.png +0 -0
  249. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_result.png +0 -0
  250. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_details.png +0 -0
  251. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_result.png +0 -0
  252. /msprobe/{pytorch/doc → docs}/img/auto_analyze_log.png +0 -0
  253. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl.png +0 -0
  254. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl_md5.png.png +0 -0
  255. /msprobe/{pytorch/doc → docs}/img/cpu_info.png +0 -0
  256. /msprobe/{config → docs}/img/free_benchmark.png +0 -0
  257. /msprobe/{doc/grad_probe/img/image-1.png → docs/img/grad_probe_image-1.png} +0 -0
  258. /msprobe/{doc/grad_probe/img/image-2.png → docs/img/grad_probe_image-2.png} +0 -0
  259. /msprobe/{doc/grad_probe/img/image-3.png → docs/img/grad_probe_image-3.png} +0 -0
  260. /msprobe/{doc/grad_probe/img/image-4.png → docs/img/grad_probe_image-4.png} +0 -0
  261. /msprobe/{doc/grad_probe/img/image.png → docs/img/grad_probe_image.png} +0 -0
  262. /msprobe/{pytorch/doc → docs}/img/module_compare.png +0 -0
@@ -1,74 +1,66 @@
1
- import os
2
- from pathlib import Path
3
-
4
- from msprobe.core.common.const import Const
5
- from msprobe.mindspore.common.const import Const as MsConst
6
- from msprobe.mindspore.common.const import FreeBenchmarkConst
7
- from msprobe.core.common.file_check import FileChecker, FileCheckConst, check_path_before_create
8
-
9
-
10
- class DebuggerConfig:
11
- def __init__(self, common_config, task_config):
12
- self.execution_mode = None
13
- self.dump_path = common_config.dump_path
14
- self.task = common_config.task
15
- self.rank = [] if not common_config.rank else common_config.rank
16
- self.step = [] if not common_config.step else common_config.step
17
- common_config.level = Const.LEVEL_L1 if not common_config.level else common_config.level
18
- self.level = MsConst.TOOL_LEVEL_DICT.get(common_config.level, MsConst.API)
19
- self.level_ori = common_config.level
20
- self.list = [] if not task_config.list else task_config.list
21
- self.scope = [] if not task_config.scope else task_config.scope
22
- self.data_mode = [] if not task_config.data_mode else task_config.data_mode
23
- self.file_format = task_config.file_format
24
- self.overflow_nums = 1 if not task_config.overflow_nums else task_config.overflow_nums
25
- self.check_mode = task_config.check_mode
26
- self.framework = Const.MS_FRAMEWORK
27
- self.summary_mode = task_config.summary_mode
28
- self.check()
29
- self._make_dump_path_if_not_exists()
30
-
31
- if self.task == Const.FREE_BENCHMARK:
32
- self.pert_type = (FreeBenchmarkConst.DEFAULT_PERT_TYPE
33
- if not task_config.pert_mode else task_config.pert_mode)
34
- self.handler_type = (FreeBenchmarkConst.DEFAULT_HANDLER_TYPE
35
- if not task_config.handler_type else task_config.handler_type)
36
- if self.handler_type == FreeBenchmarkConst.FIX_HANDLER_MODE and \
37
- self.pert_type != FreeBenchmarkConst.DEFAULT_PERT_TYPE:
38
- raise ValueError("pert_mode must be improve_precision or empty when handler_type is fix, "
39
- f"but got {self.pert_type}.")
40
- self.dump_level = FreeBenchmarkConst.DEFAULT_DUMP_LEVEL
41
- self.stage = FreeBenchmarkConst.DEFAULT_STAGE
42
-
43
- def check(self):
44
- if not self.dump_path:
45
- raise Exception("Dump path is empty.")
46
- self.dump_path = os.path.abspath(self.dump_path)
47
- if not self.task:
48
- self.task = "statistics"
49
- if not self.level:
50
- raise Exception("level must be L0, L1 or L2")
51
- if not self.file_format:
52
- self.file_format = "npy"
53
- if not self.check_mode:
54
- self.check_mode = "all"
55
- self._check_rank()
56
- self._check_step()
57
- return True
58
-
59
- def _check_rank(self):
60
- for rank_id in self.rank:
61
- if not isinstance(rank_id, int) or rank_id < 0:
62
- raise ValueError(f"rank {self.rank} must be a positive integer.")
63
-
64
- def _check_step(self):
65
- for s in self.step:
66
- if not isinstance(s, int) or s < 0:
67
- raise ValueError(f"step element {s} must be a positive integer.")
68
-
69
- def _make_dump_path_if_not_exists(self):
70
- check_path_before_create(self.dump_path)
71
- if not os.path.exists(self.dump_path):
72
- Path(self.dump_path).mkdir(mode=FileCheckConst.DATA_DIR_AUTHORITY, exist_ok=True)
73
- file_check = FileChecker(self.dump_path, FileCheckConst.DIR)
74
- file_check.common_check()
1
+ import os
2
+
3
+ from msprobe.core.common.const import Const
4
+ from msprobe.mindspore.common.const import Const as MsConst
5
+ from msprobe.mindspore.common.const import FreeBenchmarkConst
6
+ from msprobe.core.common.file_utils import create_directory
7
+
8
+
9
+ class DebuggerConfig:
10
+ def __init__(self, common_config, task_config):
11
+ self.execution_mode = None
12
+ self.dump_path = common_config.dump_path
13
+ self.task = common_config.task
14
+ self.rank = [] if not common_config.rank else common_config.rank
15
+ self.step = [] if not common_config.step else common_config.step
16
+ common_config.level = Const.LEVEL_L1 if not common_config.level else common_config.level
17
+ self.level = MsConst.TOOL_LEVEL_DICT.get(common_config.level, MsConst.API)
18
+ self.level_ori = common_config.level
19
+ self.list = [] if not task_config.list else task_config.list
20
+ self.scope = [] if not task_config.scope else task_config.scope
21
+ self.data_mode = [] if not task_config.data_mode else task_config.data_mode
22
+ self.file_format = task_config.file_format
23
+ self.overflow_nums = 1 if not task_config.overflow_nums else task_config.overflow_nums
24
+ self.check_mode = task_config.check_mode
25
+ self.framework = Const.MS_FRAMEWORK
26
+ self.summary_mode = task_config.summary_mode
27
+ self.check()
28
+ create_directory(self.dump_path)
29
+
30
+ if self.task == Const.FREE_BENCHMARK:
31
+ self.pert_type = (FreeBenchmarkConst.DEFAULT_PERT_TYPE
32
+ if not task_config.pert_mode else task_config.pert_mode)
33
+ self.handler_type = (FreeBenchmarkConst.DEFAULT_HANDLER_TYPE
34
+ if not task_config.handler_type else task_config.handler_type)
35
+ self.stage = FreeBenchmarkConst.DEFAULT_STAGE if not task_config.fuzz_stage else task_config.fuzz_stage
36
+ if self.handler_type == FreeBenchmarkConst.FIX and \
37
+ self.pert_type != FreeBenchmarkConst.DEFAULT_PERT_TYPE:
38
+ raise ValueError("pert_mode must be improve_precision or empty when handler_type is fix, "
39
+ f"but got {self.pert_type}.")
40
+ self.dump_level = FreeBenchmarkConst.DEFAULT_DUMP_LEVEL
41
+
42
+ def check(self):
43
+ if not self.dump_path:
44
+ raise Exception("Dump path is empty.")
45
+ self.dump_path = os.path.abspath(self.dump_path)
46
+ if not self.task:
47
+ self.task = "statistics"
48
+ if not self.level:
49
+ raise Exception("level must be L0, L1 or L2")
50
+ if not self.file_format:
51
+ self.file_format = "npy"
52
+ if not self.check_mode:
53
+ self.check_mode = "all"
54
+ self._check_rank()
55
+ self._check_step()
56
+ return True
57
+
58
+ def _check_rank(self):
59
+ for rank_id in self.rank:
60
+ if not isinstance(rank_id, int) or rank_id < 0:
61
+ raise ValueError(f"rank {self.rank} must be a positive integer.")
62
+
63
+ def _check_step(self):
64
+ for s in self.step:
65
+ if not isinstance(s, int) or s < 0:
66
+ raise ValueError(f"step element {s} must be a positive integer.")
@@ -1,107 +1,126 @@
1
- import os
2
-
3
- import mindspore as ms
4
-
5
- from msprobe.mindspore.service import Service
6
- from msprobe.mindspore.ms_config import parse_json_config
7
- from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
8
- from msprobe.mindspore.task_handler_factory import TaskHandlerFactory
9
- from msprobe.core.common.const import Const
10
- from msprobe.mindspore.common.const import Const as MsConst
11
- from msprobe.mindspore.runtime import Runtime
12
-
13
- from msprobe.mindspore.grad_probe.grad_monitor import GradientMonitor
14
-
15
-
16
- class PrecisionDebugger:
17
- _instance = None
18
- task_not_need_service = [Const.GRAD_PROBE]
19
-
20
- def __new__(cls, config_path=None, opt=None):
21
- if not cls._instance:
22
- cls._instance = super().__new__(cls)
23
- cls._instance.initialized = False
24
- cls._instance.config = None
25
- cls.service = None
26
- cls.first_start = False
27
- return cls._instance
28
-
29
- def __init__(self, config_path=None):
30
- if self.initialized:
31
- return
32
- self.initialized = True
33
- if not config_path:
34
- config_path = os.path.join(os.path.dirname(__file__), "../../config/config.json")
35
- common_config, task_config = parse_json_config(config_path)
36
- self.task = common_config.task
37
- if self.task == Const.GRAD_PROBE:
38
- self.gm = GradientMonitor(common_config, task_config)
39
- return
40
- self.config = DebuggerConfig(common_config, task_config)
41
-
42
- Runtime.step_count = 0
43
- Runtime.is_running = False
44
-
45
- @staticmethod
46
- def _get_execution_mode():
47
- if ms.get_context("mode") == ms.GRAPH_MODE:
48
- if ms.context.get_jit_config().get("jit_level") == "O2" or ms.get_context("jit_level") == "O2":
49
- return MsConst.GRAPH_GE_MODE
50
- else:
51
- return MsConst.GRAPH_KBYK_MODE
52
- else:
53
- return MsConst.PYNATIVE_MODE
54
-
55
- @classmethod
56
- def start(cls, target=None):
57
- instance = cls._instance
58
- if not instance:
59
- raise Exception("No instance of PrecisionDebugger found.")
60
- if instance.task in PrecisionDebugger.task_not_need_service:
61
- return
62
-
63
- instance.config.execution_mode = instance._get_execution_mode()
64
- if instance.config.execution_mode == MsConst.PYNATIVE_MODE and instance.config.task != Const.FREE_BENCHMARK and instance.config.level != "kernel":
65
- if not instance.service:
66
- instance.service = Service(instance.config)
67
- instance.service.start(target)
68
- else:
69
- if not instance.first_start:
70
- handler = TaskHandlerFactory.create(instance.config)
71
- handler.handle()
72
-
73
- instance.first_start = True
74
- Runtime.is_running = True
75
-
76
- @classmethod
77
- def stop(cls):
78
- instance = cls._instance
79
- if not instance:
80
- raise Exception("PrecisionDebugger instance is not created.")
81
- if instance.task == Const.GRAD_PROBE:
82
- instance.gm.stop()
83
- if instance.task in PrecisionDebugger.task_not_need_service:
84
- return
85
- if instance.service:
86
- instance.service.stop()
87
- Runtime.is_running = False
88
-
89
- @classmethod
90
- def step(cls):
91
- instance = cls._instance
92
- if not instance:
93
- raise Exception("PrecisionDebugger instance is not created.")
94
- if instance.task in PrecisionDebugger.task_not_need_service:
95
- return
96
- if instance.service:
97
- instance.service.step()
98
- Runtime.step_count += 1
99
-
100
- @classmethod
101
- def monitor(cls, opt):
102
- instance = cls._instance
103
- if not instance:
104
- raise Exception("PrecisionDebugger instance is not created.")
105
- if instance.task != Const.GRAD_PROBE:
106
- return
107
- instance.gm.monitor(opt)
1
+ import os
2
+
3
+ import mindspore as ms
4
+ from mindspore._c_expression import MSContext
5
+
6
+ from msprobe.mindspore.service import Service
7
+ from msprobe.mindspore.ms_config import parse_json_config
8
+ from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
9
+ from msprobe.mindspore.task_handler_factory import TaskHandlerFactory
10
+ from msprobe.core.common.const import Const
11
+ from msprobe.mindspore.common.const import Const as MsConst
12
+ from msprobe.mindspore.runtime import Runtime
13
+
14
+ from msprobe.mindspore.grad_probe.grad_monitor import GradientMonitor
15
+
16
+
17
+ class PrecisionDebugger:
18
+ _instance = None
19
+ task_not_need_service = [Const.GRAD_PROBE]
20
+
21
+ def __new__(cls, config_path=None, opt=None):
22
+ if not cls._instance:
23
+ cls._instance = super().__new__(cls)
24
+ cls._instance.initialized = False
25
+ cls._instance.config = None
26
+ cls.service = None
27
+ cls.first_start = False
28
+ return cls._instance
29
+
30
+ def __init__(self, config_path=None):
31
+ if self.initialized:
32
+ return
33
+ self.initialized = True
34
+ if not config_path:
35
+ config_path = os.path.join(os.path.dirname(__file__), "../../config.json")
36
+ common_config, task_config = parse_json_config(config_path)
37
+ self.task = common_config.task
38
+ if self.task == Const.GRAD_PROBE:
39
+ self.gm = GradientMonitor(common_config, task_config)
40
+ return
41
+ self.config = DebuggerConfig(common_config, task_config)
42
+
43
+ Runtime.step_count = 0
44
+ Runtime.is_running = False
45
+
46
+ @staticmethod
47
+ def _get_execution_mode():
48
+ jit_level = ms.context.get_jit_config().get(MsConst.JIT_LEVEL)
49
+ jit_level = jit_level if jit_level else ms.get_context(MsConst.JIT_LEVEL)
50
+ if not jit_level:
51
+ if MSContext.get_instance().get_ascend_soc_version() == MsConst.ASCEND_910A:
52
+ jit_level = MsConst.JIT_LEVEL_O2
53
+ else:
54
+ jit_level = MsConst.JIT_LEVEL_O0
55
+
56
+ if ms.get_context("mode") == ms.GRAPH_MODE:
57
+ if jit_level == MsConst.JIT_LEVEL_O2:
58
+ return MsConst.GRAPH_GE_MODE
59
+ else:
60
+ return MsConst.GRAPH_KBYK_MODE
61
+ else:
62
+ return MsConst.PYNATIVE_MODE
63
+
64
+ @classmethod
65
+ def start(cls, model=None):
66
+ instance = cls._instance
67
+ if not instance:
68
+ raise Exception("No instance of PrecisionDebugger found.")
69
+ if instance.task in PrecisionDebugger.task_not_need_service:
70
+ return
71
+
72
+ instance.config.execution_mode = instance._get_execution_mode()
73
+ if cls._need_service():
74
+ if not instance.service:
75
+ instance.service = Service(instance.config)
76
+ instance.service.start(model)
77
+ else:
78
+ if not instance.first_start:
79
+ handler = TaskHandlerFactory.create(instance.config)
80
+ handler.handle()
81
+
82
+ instance.first_start = True
83
+ Runtime.is_running = True
84
+
85
+ @classmethod
86
+ def stop(cls):
87
+ instance = cls._instance
88
+ if not instance:
89
+ raise Exception("PrecisionDebugger instance is not created.")
90
+ if instance.task == Const.GRAD_PROBE:
91
+ instance.gm.stop()
92
+ if instance.task in PrecisionDebugger.task_not_need_service:
93
+ return
94
+ if instance.service:
95
+ instance.service.stop()
96
+ Runtime.is_running = False
97
+
98
+ @classmethod
99
+ def step(cls):
100
+ instance = cls._instance
101
+ if not instance:
102
+ raise Exception("PrecisionDebugger instance is not created.")
103
+ if instance.task in PrecisionDebugger.task_not_need_service:
104
+ return
105
+ if instance.service:
106
+ instance.service.step()
107
+ Runtime.step_count += 1
108
+
109
+ @classmethod
110
+ def monitor(cls, opt):
111
+ instance = cls._instance
112
+ if not instance:
113
+ raise Exception("PrecisionDebugger instance is not created.")
114
+ if instance.task != Const.GRAD_PROBE:
115
+ return
116
+ instance.gm.monitor(opt)
117
+
118
+ @classmethod
119
+ def _need_service(cls):
120
+ instance = cls._instance
121
+ if not instance:
122
+ raise Exception("No instance of PrecisionDebugger found.")
123
+ if instance.config.execution_mode != MsConst.PYNATIVE_MODE:
124
+ return False
125
+ else:
126
+ return instance.config.task != Const.FREE_BENCHMARK and instance.config.level != MsConst.KERNEL
@@ -1,35 +1,35 @@
1
- from msprobe.mindspore.common.const import Const
2
- from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
3
- from msprobe.mindspore.dump.kernel_kbyk_dump import KernelKbykDump
4
- from msprobe.mindspore.dump.kernel_graph_dump import KernelGraphDump
5
-
6
-
7
- class DumpToolFactory:
8
- tools = {
9
- Const.CELL: {
10
- Const.GRAPH_KBYK_MODE: None,
11
- Const.GRAPH_GE_MODE: None,
12
- Const.PYNATIVE_MODE: None
13
- },
14
- Const.API: {
15
- Const.GRAPH_KBYK_MODE: None,
16
- Const.GRAPH_GE_MODE: None,
17
- Const.PYNATIVE_MODE: None
18
- },
19
- Const.KERNEL: {
20
- Const.GRAPH_KBYK_MODE: KernelKbykDump,
21
- Const.GRAPH_GE_MODE: KernelGraphDump,
22
- Const.PYNATIVE_MODE: KernelKbykDump
23
- }
24
- }
25
-
26
- @staticmethod
27
- def create(config: DebuggerConfig):
28
- tool = DumpToolFactory.tools.get(config.level)
29
- if not tool:
30
- raise Exception("Valid level is needed.")
31
- tool = tool.get(config.execution_mode)
32
- if not tool:
33
- raise Exception(f"Data dump is not supported in {config.execution_mode} mode "
34
- f"when dump level is {config.level}.")
35
- return tool(config)
1
+ from msprobe.mindspore.common.const import Const
2
+ from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
3
+ from msprobe.mindspore.dump.kernel_kbyk_dump import KernelKbykDump
4
+ from msprobe.mindspore.dump.kernel_graph_dump import KernelGraphDump
5
+
6
+
7
+ class DumpToolFactory:
8
+ tools = {
9
+ Const.CELL: {
10
+ Const.GRAPH_KBYK_MODE: None,
11
+ Const.GRAPH_GE_MODE: None,
12
+ Const.PYNATIVE_MODE: None
13
+ },
14
+ Const.API: {
15
+ Const.GRAPH_KBYK_MODE: None,
16
+ Const.GRAPH_GE_MODE: None,
17
+ Const.PYNATIVE_MODE: None
18
+ },
19
+ Const.KERNEL: {
20
+ Const.GRAPH_KBYK_MODE: KernelKbykDump,
21
+ Const.GRAPH_GE_MODE: KernelGraphDump,
22
+ Const.PYNATIVE_MODE: KernelKbykDump
23
+ }
24
+ }
25
+
26
+ @staticmethod
27
+ def create(config: DebuggerConfig):
28
+ tool = DumpToolFactory.tools.get(config.level)
29
+ if not tool:
30
+ raise Exception("Valid level is needed.")
31
+ tool = tool.get(config.execution_mode)
32
+ if not tool:
33
+ raise Exception(f"Data dump is not supported in {config.execution_mode} mode "
34
+ f"when dump level is {config.level}.")
35
+ return tool(config)