mindstudio-probe 1.0.1__py3-none-any.whl → 1.0.3__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 (249) hide show
  1. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.3.dist-info}/METADATA +5 -1
  2. mindstudio_probe-1.0.3.dist-info/RECORD +272 -0
  3. msprobe/README.md +78 -23
  4. msprobe/__init__.py +1 -0
  5. msprobe/config/README.md +182 -40
  6. msprobe/config/config.json +22 -0
  7. msprobe/core/__init__.py +0 -0
  8. msprobe/{pytorch → core}/advisor/advisor.py +3 -3
  9. msprobe/{pytorch → core}/advisor/advisor_result.py +2 -2
  10. msprobe/core/common/const.py +82 -5
  11. msprobe/core/common/exceptions.py +30 -18
  12. msprobe/core/common/file_check.py +19 -1
  13. msprobe/core/common/log.py +15 -1
  14. msprobe/core/common/utils.py +130 -30
  15. msprobe/core/common_config.py +32 -19
  16. msprobe/core/compare/acc_compare.py +299 -0
  17. msprobe/core/compare/check.py +95 -0
  18. msprobe/core/compare/compare_cli.py +49 -0
  19. msprobe/core/compare/highlight.py +222 -0
  20. msprobe/core/compare/multiprocessing_compute.py +149 -0
  21. msprobe/{pytorch → core}/compare/npy_compare.py +55 -4
  22. msprobe/core/compare/utils.py +429 -0
  23. msprobe/core/data_dump/data_collector.py +39 -35
  24. msprobe/core/data_dump/data_processor/base.py +85 -37
  25. msprobe/core/data_dump/data_processor/factory.py +5 -7
  26. msprobe/core/data_dump/data_processor/mindspore_processor.py +198 -0
  27. msprobe/core/data_dump/data_processor/pytorch_processor.py +94 -51
  28. msprobe/core/data_dump/json_writer.py +11 -11
  29. msprobe/core/grad_probe/__init__.py +0 -0
  30. msprobe/core/grad_probe/constant.py +71 -0
  31. msprobe/core/grad_probe/grad_compare.py +175 -0
  32. msprobe/core/grad_probe/utils.py +52 -0
  33. msprobe/doc/grad_probe/grad_probe.md +207 -0
  34. msprobe/doc/grad_probe/img/image-1.png +0 -0
  35. msprobe/doc/grad_probe/img/image-2.png +0 -0
  36. msprobe/doc/grad_probe/img/image-3.png +0 -0
  37. msprobe/doc/grad_probe/img/image-4.png +0 -0
  38. msprobe/doc/grad_probe/img/image.png +0 -0
  39. msprobe/mindspore/api_accuracy_checker/__init__.py +0 -0
  40. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +246 -0
  41. msprobe/mindspore/api_accuracy_checker/api_info.py +69 -0
  42. msprobe/mindspore/api_accuracy_checker/api_runner.py +152 -0
  43. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +197 -0
  44. msprobe/mindspore/api_accuracy_checker/compute_element.py +224 -0
  45. msprobe/mindspore/api_accuracy_checker/main.py +16 -0
  46. msprobe/mindspore/api_accuracy_checker/type_mapping.py +114 -0
  47. msprobe/mindspore/api_accuracy_checker/utils.py +63 -0
  48. msprobe/mindspore/cell_processor.py +34 -0
  49. msprobe/mindspore/common/const.py +87 -0
  50. msprobe/mindspore/common/log.py +38 -0
  51. msprobe/mindspore/common/utils.py +57 -0
  52. msprobe/mindspore/compare/distributed_compare.py +75 -0
  53. msprobe/mindspore/compare/ms_compare.py +117 -0
  54. msprobe/mindspore/compare/ms_graph_compare.py +317 -0
  55. msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -0
  56. msprobe/mindspore/debugger/debugger_config.py +38 -15
  57. msprobe/mindspore/debugger/precision_debugger.py +79 -4
  58. msprobe/mindspore/doc/compare.md +58 -0
  59. msprobe/mindspore/doc/dump.md +158 -6
  60. msprobe/mindspore/dump/dump_tool_factory.py +19 -22
  61. msprobe/mindspore/dump/hook_cell/api_registry.py +104 -0
  62. msprobe/mindspore/dump/hook_cell/hook_cell.py +53 -0
  63. msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +925 -0
  64. msprobe/mindspore/dump/hook_cell/wrap_functional.py +91 -0
  65. msprobe/mindspore/dump/hook_cell/wrap_tensor.py +63 -0
  66. msprobe/mindspore/dump/jit_dump.py +56 -0
  67. msprobe/mindspore/dump/kernel_kbyk_dump.py +65 -0
  68. msprobe/mindspore/free_benchmark/__init__.py +0 -0
  69. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +116 -0
  70. msprobe/mindspore/free_benchmark/common/__init__.py +0 -0
  71. msprobe/mindspore/free_benchmark/common/config.py +12 -0
  72. msprobe/mindspore/free_benchmark/common/handler_params.py +17 -0
  73. msprobe/mindspore/free_benchmark/common/utils.py +71 -0
  74. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -0
  75. msprobe/mindspore/free_benchmark/decorator/__init__.py +0 -0
  76. msprobe/mindspore/free_benchmark/decorator/dec_forward.py +42 -0
  77. msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +107 -0
  78. msprobe/mindspore/free_benchmark/handler/__init__.py +0 -0
  79. msprobe/mindspore/free_benchmark/handler/base_handler.py +90 -0
  80. msprobe/mindspore/free_benchmark/handler/check_handler.py +41 -0
  81. msprobe/mindspore/free_benchmark/handler/fix_handler.py +36 -0
  82. msprobe/mindspore/free_benchmark/handler/handler_factory.py +21 -0
  83. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +67 -0
  84. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +21 -0
  85. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +63 -0
  86. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +34 -0
  87. msprobe/mindspore/free_benchmark/perturbation/no_change.py +12 -0
  88. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +27 -0
  89. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +33 -0
  90. msprobe/mindspore/grad_probe/__init__.py +0 -0
  91. msprobe/mindspore/grad_probe/global_context.py +91 -0
  92. msprobe/mindspore/grad_probe/grad_analyzer.py +231 -0
  93. msprobe/mindspore/grad_probe/grad_monitor.py +27 -0
  94. msprobe/mindspore/grad_probe/grad_stat_csv.py +132 -0
  95. msprobe/mindspore/grad_probe/hook.py +92 -0
  96. msprobe/mindspore/grad_probe/utils.py +29 -0
  97. msprobe/mindspore/ms_config.py +63 -15
  98. msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +17 -15
  99. msprobe/mindspore/runtime.py +4 -0
  100. msprobe/mindspore/service.py +354 -0
  101. msprobe/mindspore/task_handler_factory.py +7 -4
  102. msprobe/msprobe.py +66 -26
  103. msprobe/pytorch/__init__.py +1 -1
  104. msprobe/pytorch/api_accuracy_checker/common/config.py +21 -16
  105. msprobe/pytorch/api_accuracy_checker/common/utils.py +1 -60
  106. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +2 -5
  107. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +46 -10
  108. msprobe/pytorch/api_accuracy_checker/compare/compare.py +84 -48
  109. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +8 -12
  110. msprobe/pytorch/api_accuracy_checker/config.yaml +7 -1
  111. msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +15 -11
  112. msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +11 -15
  113. msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +16 -9
  114. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +193 -105
  115. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +68 -1
  116. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/__init__.py +0 -0
  117. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +202 -0
  118. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +324 -0
  119. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +204 -0
  120. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +218 -0
  121. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +10 -0
  122. msprobe/pytorch/bench_functions/__init__.py +15 -0
  123. msprobe/pytorch/bench_functions/apply_adam_w.py +28 -0
  124. msprobe/pytorch/bench_functions/confusion_transpose.py +19 -0
  125. msprobe/pytorch/bench_functions/fast_gelu.py +55 -0
  126. msprobe/pytorch/bench_functions/layer_norm_eval.py +6 -0
  127. msprobe/pytorch/bench_functions/linear.py +12 -0
  128. msprobe/pytorch/bench_functions/matmul_backward.py +48 -0
  129. msprobe/pytorch/bench_functions/npu_fusion_attention.py +421 -0
  130. msprobe/pytorch/bench_functions/rms_norm.py +15 -0
  131. msprobe/pytorch/bench_functions/rotary_mul.py +52 -0
  132. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +26 -0
  133. msprobe/pytorch/bench_functions/swiglu.py +55 -0
  134. msprobe/pytorch/common/parse_json.py +3 -1
  135. msprobe/pytorch/common/utils.py +83 -7
  136. msprobe/pytorch/compare/distributed_compare.py +19 -64
  137. msprobe/pytorch/compare/match.py +3 -6
  138. msprobe/pytorch/compare/pt_compare.py +40 -0
  139. msprobe/pytorch/debugger/debugger_config.py +11 -2
  140. msprobe/pytorch/debugger/precision_debugger.py +34 -4
  141. msprobe/pytorch/doc/api_accuracy_checker.md +57 -13
  142. msprobe/pytorch/doc/api_accuracy_checker_online.md +187 -0
  143. msprobe/pytorch/doc/dump.md +73 -20
  144. msprobe/pytorch/doc/ptdbg_ascend_compare.md +75 -11
  145. msprobe/pytorch/doc/ptdbg_ascend_quickstart.md +3 -3
  146. msprobe/pytorch/doc/run_overflow_check.md +1 -1
  147. 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 +151 -0
  148. msprobe/pytorch/free_benchmark/common/constant.py +3 -0
  149. msprobe/pytorch/free_benchmark/common/utils.py +4 -0
  150. msprobe/pytorch/free_benchmark/compare/grad_saver.py +22 -26
  151. msprobe/pytorch/free_benchmark/main.py +7 -4
  152. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +1 -1
  153. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +1 -1
  154. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +1 -1
  155. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +3 -3
  156. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +1 -1
  157. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +1 -1
  158. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +43 -29
  159. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +0 -1
  160. msprobe/pytorch/function_factory.py +75 -0
  161. msprobe/pytorch/functional/dump_module.py +4 -4
  162. msprobe/pytorch/grad_probe/__init__.py +0 -0
  163. msprobe/pytorch/grad_probe/grad_monitor.py +90 -0
  164. msprobe/pytorch/grad_probe/grad_stat_csv.py +129 -0
  165. msprobe/pytorch/hook_module/hook_module.py +14 -3
  166. msprobe/pytorch/hook_module/support_wrap_ops.yaml +2 -1
  167. msprobe/pytorch/hook_module/utils.py +9 -9
  168. msprobe/pytorch/hook_module/wrap_aten.py +20 -10
  169. msprobe/pytorch/hook_module/wrap_distributed.py +10 -7
  170. msprobe/pytorch/hook_module/wrap_functional.py +4 -7
  171. msprobe/pytorch/hook_module/wrap_npu_custom.py +21 -10
  172. msprobe/pytorch/hook_module/wrap_tensor.py +5 -6
  173. msprobe/pytorch/hook_module/wrap_torch.py +5 -7
  174. msprobe/pytorch/hook_module/wrap_vf.py +6 -8
  175. msprobe/pytorch/module_processer.py +53 -13
  176. msprobe/pytorch/online_dispatch/compare.py +4 -4
  177. msprobe/pytorch/online_dispatch/dispatch.py +39 -41
  178. msprobe/pytorch/online_dispatch/dump_compare.py +17 -47
  179. msprobe/pytorch/online_dispatch/single_compare.py +5 -5
  180. msprobe/pytorch/online_dispatch/utils.py +2 -43
  181. msprobe/pytorch/parse_tool/lib/compare.py +31 -19
  182. msprobe/pytorch/parse_tool/lib/config.py +2 -1
  183. msprobe/pytorch/parse_tool/lib/parse_tool.py +4 -4
  184. msprobe/pytorch/parse_tool/lib/utils.py +34 -80
  185. msprobe/pytorch/parse_tool/lib/visualization.py +4 -3
  186. msprobe/pytorch/pt_config.py +100 -6
  187. msprobe/pytorch/service.py +104 -19
  188. mindstudio_probe-1.0.1.dist-info/RECORD +0 -228
  189. msprobe/mindspore/dump/api_kbk_dump.py +0 -55
  190. msprobe/pytorch/compare/acc_compare.py +0 -1024
  191. msprobe/pytorch/compare/highlight.py +0 -100
  192. msprobe/test/core_ut/common/test_utils.py +0 -345
  193. msprobe/test/core_ut/data_dump/test_data_collector.py +0 -47
  194. msprobe/test/core_ut/data_dump/test_json_writer.py +0 -183
  195. msprobe/test/core_ut/data_dump/test_scope.py +0 -151
  196. msprobe/test/core_ut/test_common_config.py +0 -152
  197. msprobe/test/core_ut/test_file_check.py +0 -218
  198. msprobe/test/core_ut/test_log.py +0 -109
  199. msprobe/test/mindspore_ut/test_api_kbk_dump.py +0 -51
  200. msprobe/test/mindspore_ut/test_debugger_config.py +0 -42
  201. msprobe/test/mindspore_ut/test_dump_tool_factory.py +0 -51
  202. msprobe/test/mindspore_ut/test_kernel_graph_dump.py +0 -66
  203. msprobe/test/mindspore_ut/test_kernel_graph_overflow_check.py +0 -63
  204. msprobe/test/mindspore_ut/test_ms_config.py +0 -69
  205. msprobe/test/mindspore_ut/test_overflow_check_tool_factory.py +0 -51
  206. msprobe/test/mindspore_ut/test_precision_debugger.py +0 -56
  207. msprobe/test/mindspore_ut/test_task_handler_factory.py +0 -58
  208. msprobe/test/pytorch_ut/advisor/test_advisor.py +0 -83
  209. msprobe/test/pytorch_ut/api_accuracy_checker/common/test_common_utils.py +0 -108
  210. msprobe/test/pytorch_ut/api_accuracy_checker/common/test_config.py +0 -39
  211. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_algorithm.py +0 -112
  212. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_api_precision_compare.py +0 -77
  213. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_compare.py +0 -125
  214. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_compare_column.py +0 -10
  215. msprobe/test/pytorch_ut/api_accuracy_checker/compare/test_compare_utils.py +0 -43
  216. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/dump.json +0 -179
  217. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/forward.json +0 -63
  218. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/test_data_generate.py +0 -99
  219. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/test_multi_run_ut.py +0 -115
  220. msprobe/test/pytorch_ut/api_accuracy_checker/run_ut/test_run_ut.py +0 -72
  221. msprobe/test/pytorch_ut/compare/test_acc_compare.py +0 -17
  222. msprobe/test/pytorch_ut/free_benchmark/perturbed_layers/test_perturbed_layser.py +0 -105
  223. msprobe/test/pytorch_ut/free_benchmark/result_handlers/test_result_handler.py +0 -121
  224. msprobe/test/pytorch_ut/free_benchmark/test_main.py +0 -101
  225. msprobe/test/pytorch_ut/functional/test_dump_module.py +0 -15
  226. msprobe/test/pytorch_ut/hook_module/test_api_registry.py +0 -130
  227. msprobe/test/pytorch_ut/hook_module/test_hook_module.py +0 -42
  228. msprobe/test/pytorch_ut/hook_module/test_wrap_aten.py +0 -65
  229. msprobe/test/pytorch_ut/hook_module/test_wrap_distributed.py +0 -35
  230. msprobe/test/pytorch_ut/hook_module/test_wrap_functional.py +0 -20
  231. msprobe/test/pytorch_ut/hook_module/test_wrap_tensor.py +0 -35
  232. msprobe/test/pytorch_ut/hook_module/test_wrap_torch.py +0 -43
  233. msprobe/test/pytorch_ut/hook_module/test_wrap_vf.py +0 -11
  234. msprobe/test/pytorch_ut/test_pt_config.py +0 -69
  235. msprobe/test/pytorch_ut/test_service.py +0 -59
  236. msprobe/test/resources/advisor.txt +0 -3
  237. msprobe/test/resources/compare_result_20230703104808.csv +0 -9
  238. msprobe/test/resources/compare_result_without_accuracy.csv +0 -9
  239. msprobe/test/resources/config.yaml +0 -3
  240. msprobe/test/resources/npu_test.pkl +0 -8
  241. msprobe/test/run_test.sh +0 -30
  242. msprobe/test/run_ut.py +0 -58
  243. msprobe/test/test_module_processer.py +0 -64
  244. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.3.dist-info}/LICENSE +0 -0
  245. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.3.dist-info}/WHEEL +0 -0
  246. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.3.dist-info}/entry_points.txt +0 -0
  247. {mindstudio_probe-1.0.1.dist-info → mindstudio_probe-1.0.3.dist-info}/top_level.txt +0 -0
  248. /msprobe/{pytorch → core}/advisor/advisor_const.py +0 -0
  249. /msprobe/pytorch/doc/{atat → 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 -0
@@ -0,0 +1,399 @@
1
+ Functional.abs: Torch.abs
2
+ Functional.absolute: Torch.absolute
3
+ Functional.acos: Torch.acos
4
+ Functional.acosh: Torch.acosh
5
+ Functional.adaptive_avg_pool2d: Functional.adaptive_avg_pool2d
6
+ Functional.adaptive_avg_pool3d: Functional.adaptive_avg_pool3d
7
+ Functional.adaptive_max_pool2d: Functional.adaptive_max_pool2d
8
+ Functional.add: Torch.add
9
+ Functional.addbmm: Torch.addbmm
10
+ Functional.addcdiv: Torch.addcdiv
11
+ Functional.addcmul: Torch.addcmul
12
+ Functional.addmm: Torch.addmm
13
+ Functional.addmv: Torch.addmv
14
+ Functional.affine_grid: Functional.affine_grid
15
+ Functional.angle: Torch.angle
16
+ Functional.arange: Torch.arange
17
+ Functional.arccos: Torch.arccos
18
+ Functional.arccosh: Torch.arccosh
19
+ Functional.arcsinh: Torch.arcsinh
20
+ Functional.arctan: Torch.arctan
21
+ Functional.arctanh: Torch.arctanh
22
+ Functional.argmax: Torch.argmax
23
+ Functional.asin: Torch.asin
24
+ Functional.asinh: Torch.asinh
25
+ Functional.atan: Torch.atan
26
+ Functional.atan2: Torch.atan2
27
+ Functional.atanh: Torch.atanh
28
+ Functional.baddbmm: Torch.baddbmm
29
+ Functional.bartlett_window: Torch.bartlett_window
30
+ Functional.bidense: Functional.bilinear
31
+ Functional.bincount: Torch.bincount
32
+ Functional.bitwise_and: Torch.bitwise_and
33
+ Functional.bitwise_or: Torch.bitwise_or
34
+ Functional.bitwise_xor: Torch.bitwise_xor
35
+ Functional.blackman_window: Torch.blackman_window
36
+ Functional.ceil: Torch.ceil
37
+ Functional.cholesky_solve: Torch.cholesky_solve
38
+ Functional.clamp: Torch.clamp
39
+ Functional.clip: Torch.clip
40
+ Functional.column_stack: Torch.column_stack
41
+ Functional.conj: Torch.conj
42
+ Functional.conv1d: Functional.conv1d
43
+ Functional.conv2d: Functional.conv2d
44
+ Functional.conv3d: Functional.conv3d
45
+ Functional.cosh: Torch.cosh
46
+ Functional.cosine_embedding_loss: Functional.cosine_embedding_loss
47
+ Functional.cosine_similarity: Functional.cosine_similarity
48
+ Functional.cross: Torch.cross
49
+ Functional.cross_entropy: Functional.cross_entropy
50
+ Functional.ctc_loss: Functional.ctc_loss
51
+ Functional.cumprod: Torch.cumprod
52
+ Functional.dense: Functional.linear
53
+ Functional.diag_embed: Torch.diag_embed
54
+ Functional.diagflat: Torch.diagflat
55
+ Functional.diagonal: Torch.diagonal
56
+ Functional.digamma: Torch.digamma
57
+ Functional.dist: Torch.dist
58
+ Functional.div: Torch.div
59
+ Functional.divide: Torch.divide
60
+ Functional.einsum: Torch.einsum
61
+ Functional.equal: Torch.eq
62
+ Functional.erf: Torch.erf
63
+ Functional.erfc: Torch.erfc
64
+ Functional.exp: Torch.exp
65
+ Functional.exp2: Torch.exp2
66
+ Functional.expm1: Torch.expm1
67
+ Functional.eye: Torch.eye
68
+ Functional.flip: Torch.flip
69
+ Functional.fliplr: Torch.fliplr
70
+ Functional.flipud: Torch.flipud
71
+ Functional.floor_divide: Torch.floor_divide
72
+ Functional.fmax: Torch.fmax
73
+ Functional.fmod: Torch.fmod
74
+ Functional.full: Torch.full
75
+ Functional.full_like: Torch.full_like
76
+ Functional.gcd: Torch.gcd
77
+ Functional.geqrf: Torch.geqrf
78
+ Functional.greater: Torch.greater
79
+ Functional.greater_equal: Torch.greater_equal
80
+ Functional.gumbel_softmax: Functional.gumbel_softmax
81
+ Functional.hamming_window: Torch.hamming_window
82
+ Functional.hann_window: Torch.hann_window
83
+ Functional.hardsigmoid: Functional.hardsigmoid
84
+ Functional.hardtanh: Functional.hardtanh
85
+ Functional.heaviside: Torch.heaviside
86
+ Functional.hinge_embedding_loss: Functional.hinge_embedding_loss
87
+ Functional.histc: Torch.histc
88
+ Functional.hsplit: Torch.hsplit
89
+ Functional.hstack: Torch.hstack
90
+ Functional.hypot: Torch.hypot
91
+ Functional.i0: Torch.i0
92
+ Functional.igamma: Torch.igamma
93
+ Functional.igammac: Torch.igammac
94
+ Functional.imag: Torch.imag
95
+ Functional.inner: Torch.inner
96
+ Functional.inverse: Torch.inverse
97
+ Functional.is_nonzero: Torch.is_nonzero
98
+ Functional.is_tensor: Torch.is_tensor
99
+ Functional.isinf: Torch.isinf
100
+ Functional.isneginf: Torch.isneginf
101
+ Functional.isposinf: Torch.isposinf
102
+ Functional.isreal: Torch.isreal
103
+ Functional.kaiser_window: Torch.kaiser_window
104
+ Functional.kron: Torch.kron
105
+ Functional.l1_loss: Functional.l1_loss
106
+ Functional.lcm: Torch.lcm
107
+ Functional.lerp: Torch.lerp
108
+ Functional.log1p: Torch.log1p
109
+ Functional.logaddexp: Torch.logaddexp
110
+ Functional.logaddexp2: Torch.logaddexp2
111
+ Functional.logdet: Torch.logdet
112
+ Functional.logical_and: Torch.logical_and
113
+ Functional.logical_not: Torch.logical_not
114
+ Functional.logical_or: Torch.logical_or
115
+ Functional.logical_xor: Torch.logical_xor
116
+ Functional.logit: Torch.logit
117
+ Functional.logspace: Torch.logspace
118
+ Functional.lt: Torch.lt
119
+ Functional.lu_solve: Torch.lu_solve
120
+ Functional.lu_unpack: Torch.lu_unpack
121
+ Functional.margin_ranking_loss: Functional.margin_ranking_loss
122
+ Functional.masked_select: Torch.masked_select
123
+ Functional.matmul: Torch.matmul
124
+ Functional.max_pool3d: Functional.max_pool3d
125
+ Functional.max_unpool1d: Functional.max_unpool1d
126
+ Functional.max_unpool2d: Functional.max_unpool2d
127
+ Functional.max_unpool3d: Functional.max_unpool3d
128
+ Functional.mm: Torch.mm
129
+ Functional.moveaxis: Torch.moveaxis
130
+ Functional.movedim: Torch.movedim
131
+ Functional.mse_loss: Functional.mse_loss
132
+ Functional.msort: Torch.msort
133
+ Functional.mul: Torch.mul
134
+ Functional.multi_margin_loss: Functional.multi_margin_loss
135
+ Functional.multilabel_margin_loss: Functional.multilabel_margin_loss
136
+ Functional.multilabel_soft_margin_loss: Functional.multilabel_soft_margin_loss
137
+ Functional.multiply: Torch.multiply
138
+ Functional.nan_to_num: Torch.nan_to_num
139
+ Functional.nansum: Torch.nansum
140
+ Functional.neg: Torch.neg
141
+ Functional.negative: Torch.negative
142
+ Functional.nextafter: Torch.nextafter
143
+ Functional.nll_loss: Functional.nll_loss
144
+ Functional.nonzero: Torch.nonzero
145
+ Functional.not_equal: Torch.not_equal
146
+ Functional.numel: Torch.numel
147
+ Functional.ones_like: Torch.ones_like
148
+ Functional.orgqr: Torch.orgqr
149
+ Functional.outer: Torch.outer
150
+ Functional.pdist: Functional.pdist
151
+ Functional.permute: Torch.permute
152
+ Functional.pixel_shuffle: Functional.pixel_shuffle
153
+ Functional.pixel_unshuffle: Functional.pixel_unshuffle
154
+ Functional.polar: Torch.polar
155
+ Functional.pow: Torch.pow
156
+ Functional.rand: Torch.rand
157
+ Functional.rand_like: Torch.rand_like
158
+ Functional.randn: Torch.randn
159
+ Functional.randn_like: Torch.randn_like
160
+ Functional.ravel: Torch.ravel
161
+ Functional.real: Torch.real
162
+ Functional.reciprocal: Torch.reciprocal
163
+ Functional.relu: Functional.relu
164
+ Functional.remainder: Torch.remainder
165
+ Functional.reshape: Torch.reshape
166
+ Functional.roll: Torch.roll
167
+ Functional.rot90: Torch.rot90
168
+ Functional.round: Torch.round
169
+ Functional.row_stack: Torch.row_stack
170
+ Functional.rsqrt: Torch.rsqrt
171
+ Functional.searchsorted: Torch.searchsorted
172
+ Functional.sgn: Torch.sgn
173
+ Functional.sigmoid: Functional.sigmoid
174
+ Functional.sign: Torch.sign
175
+ Functional.signbit: Torch.signbit
176
+ Functional.sin: Torch.sin
177
+ Functional.sinc: Torch.sinc
178
+ Functional.sinh: Torch.sinh
179
+ Functional.slogdet: Torch.slogdet
180
+ Functional.smooth_l1_loss: Functional.smooth_l1_loss
181
+ Functional.soft_margin_loss: Functional.soft_margin_loss
182
+ Functional.square: Torch.square
183
+ Functional.subtract: Torch.subtract
184
+ Functional.sum: Torch.sum
185
+ Functional.swapaxes: Torch.transpose
186
+ Functional.swapdims: Torch.swapdims
187
+ Functional.t: Torch.t
188
+ Functional.tan: Torch.tan
189
+ Functional.tanh: Functional.tanh
190
+ Functional.tanhshrink: Functional.tanhshrink
191
+ Functional.topk: Torch.topk
192
+ Functional.trace: Torch.trace
193
+ Functional.trapz: Torch.trapz
194
+ Functional.tril: Torch.tril
195
+ Functional.tril_indices: Torch.tril_indices
196
+ Functional.triu_indices: Torch.triu_indices
197
+ Functional.true_divide: Torch.true_divide
198
+ Functional.trunc: Torch.trunc
199
+ Functional.unbind: Torch.unbind
200
+ Functional.unfold: Functional.unfold
201
+ Functional.unsqueeze: Torch.unsqueeze
202
+ Functional.vander: Torch.vander
203
+ Functional.view_as_real: Torch.view_as_real
204
+ Functional.vsplit: Torch.vsplit
205
+ Functional.where: Torch.where
206
+ Functional.xlogy: Torch.xlogy
207
+ Functional.zeros_like: Torch.zeros_like
208
+ Tensor.H: Tensor.H
209
+ Tensor.T: Tensor.T
210
+ Tensor.abs: Tensor.abs
211
+ Tensor.absolute: Tensor.absolute
212
+ Tensor.acos: Tensor.acos
213
+ Tensor.acosh: Tensor.acosh
214
+ Tensor.add: Tensor.add
215
+ Tensor.addbmm: Tensor.addbmm
216
+ Tensor.addcdiv: Tensor.addcdiv
217
+ Tensor.addcmul: Tensor.addcmul
218
+ Tensor.addmm: Tensor.addmm
219
+ Tensor.addr: Tensor.addr
220
+ Tensor.angle: Tensor.angle
221
+ Tensor.arccos: Tensor.arccos
222
+ Tensor.arccosh: Tensor.arccosh
223
+ Tensor.arcsin: Tensor.arcsin
224
+ Tensor.arcsinh: Tensor.arcsinh
225
+ Tensor.arctan: Tensor.arctan
226
+ Tensor.arctanh: Tensor.arctanh
227
+ Tensor.asin: Tensor.asin
228
+ Tensor.asinh: Tensor.asinh
229
+ Tensor.asnumpy: Tensor.numpy
230
+ Tensor.atan: Tensor.atan
231
+ Tensor.atan2: Tensor.atan2
232
+ Tensor.atanh: Tensor.atanh
233
+ Tensor.baddbmm: Tensor.baddbmm
234
+ Tensor.bincount: Tensor.bincount
235
+ Tensor.bitwise_and: Tensor.bitwise_and
236
+ Tensor.bitwise_or: Tensor.bitwise_or
237
+ Tensor.bitwise_xor: Tensor.bitwise_xor
238
+ Tensor.cauchy: Tensor.cauchy_
239
+ Tensor.ceil: Tensor.ceil
240
+ Tensor.cholesky: Tensor.cholesky
241
+ Tensor.cholesky_solve: Tensor.cholesky_solve
242
+ Tensor.chunk: Tensor.chunk
243
+ Tensor.clamp: Tensor.clamp
244
+ Tensor.clip: Tensor.clip
245
+ Tensor.conj: Tensor.conj
246
+ Tensor.contiguous: Tensor.contiguous
247
+ Tensor.copysign: Tensor.copysign
248
+ Tensor.cos: Tensor.cos
249
+ Tensor.cosh: Tensor.cosh
250
+ Tensor.cross: Tensor.cross
251
+ Tensor.cumprod: Tensor.cumprod
252
+ Tensor.cumsum: Tensor.cumsum
253
+ Tensor.deg2rad: Tensor.deg2rad
254
+ Tensor.diagflat: Tensor.diagflat
255
+ Tensor.diagonal: Tensor.diagonal
256
+ Tensor.digamma: Tensor.digamma
257
+ Tensor.div: Tensor.div
258
+ Tensor.divide: Tensor.divide
259
+ Tensor.equal: Tensor.eq
260
+ Tensor.erf: Tensor.erf
261
+ Tensor.erfc: Tensor.erfc
262
+ Tensor.erfinv: Tensor.erfinv
263
+ Tensor.exp: Tensor.exp
264
+ Tensor.expm1: Tensor.expm1
265
+ Tensor.fill_diagonal: Tensor.fill_diagonal_
266
+ Tensor.fliplr: Tensor.fliplr
267
+ Tensor.flipud: Tensor.flipud
268
+ Tensor.float: Tensor.float
269
+ Tensor.floor: Tensor.floor
270
+ Tensor.fmax: Tensor.fmax
271
+ Tensor.fmod: Tensor.fmod
272
+ Tensor.gather_elements: Tensor.gather
273
+ Tensor.geqrf: Tensor.geqrf
274
+ Tensor.greater: Tensor.greater
275
+ Tensor.greater_equal: Tensor.greater_equal
276
+ Tensor.half: Tensor.half
277
+ Tensor.hardshrink: Tensor.hardshrink
278
+ Tensor.heaviside: Tensor.heaviside
279
+ Tensor.histc: Tensor.histc
280
+ Tensor.hypot: Tensor.hypot
281
+ Tensor.i0: Tensor.i0
282
+ Tensor.igamma: Tensor.igamma
283
+ Tensor.igammac: Tensor.igammac
284
+ Tensor.imag: Tensor.imag
285
+ Tensor.index_add: Tensor.index_add
286
+ Tensor.index_fill: Tensor.index_fill
287
+ Tensor.index_put: Tensor.index_put
288
+ Tensor.int: Tensor.int
289
+ Tensor.inverse: Tensor.inverse
290
+ Tensor.is_complex: Tensor.is_complex
291
+ Tensor.is_contiguous: Tensor.is_contiguous
292
+ Tensor.is_floating_point: Tensor.is_floating_point
293
+ Tensor.is_signed: Tensor.is_signed
294
+ Tensor.isfinite: Tensor.isfinite
295
+ Tensor.isinf: Tensor.isinf
296
+ Tensor.isnan: Tensor.isnan
297
+ Tensor.isneginf: Tensor.isneginf
298
+ Tensor.isposinf: Tensor.isposinf
299
+ Tensor.isreal: Tensor.isreal
300
+ Tensor.lcm: Tensor.lcm
301
+ Tensor.ldexp: Tensor.ldexp
302
+ Tensor.le: Tensor.le
303
+ Tensor.lerp: Tensor.lerp
304
+ Tensor.less: Tensor.less
305
+ Tensor.less_equal: Tensor.less_equal
306
+ Tensor.log: Tensor.log
307
+ Tensor.log10: Tensor.log10
308
+ Tensor.log1p: Tensor.log1p
309
+ Tensor.log2: Tensor.log2
310
+ Tensor.log_normal: Tensor.log_normal
311
+ Tensor.logaddexp: Tensor.logaddexp
312
+ Tensor.logaddexp2: Tensor.logaddexp2
313
+ Tensor.logcumsumexp: Tensor.logcumsumexp
314
+ Tensor.logdet: Tensor.logdet
315
+ Tensor.logical_and: Tensor.logical_and
316
+ Tensor.logical_not: Tensor.logical_not
317
+ Tensor.logical_or: Tensor.logical_or
318
+ Tensor.logical_xor: Tensor.logical_xor
319
+ Tensor.logit: Tensor.logit
320
+ Tensor.long: Tensor.long
321
+ Tensor.lt: Tensor.lt
322
+ Tensor.lu_solve: Tensor.lu_solve
323
+ Tensor.mH: Tensor.mH
324
+ Tensor.mT: Tensor.mT
325
+ Tensor.masked_fill: Tensor.masked_fill
326
+ Tensor.masked_select: Tensor.masked_select
327
+ Tensor.matmul: Tensor.matmul
328
+ Tensor.maximum: Tensor.maximum
329
+ Tensor.minimum: Tensor.minimum
330
+ Tensor.mm: Tensor.mm
331
+ Tensor.movedim: Tensor.movedim
332
+ Tensor.msort: Tensor.msort
333
+ Tensor.mul: Tensor.mul
334
+ Tensor.multiply: Tensor.multiply
335
+ Tensor.mvlgamma: Tensor.mvlgamma
336
+ Tensor.nan_to_num: Tensor.nan_to_num
337
+ Tensor.nanmedian: Tensor.nanmedian
338
+ Tensor.nansum: Tensor.nansum
339
+ Tensor.ndim: Tensor.ndim
340
+ Tensor.ndimension: Tensor.ndimension
341
+ Tensor.ne: Tensor.ne
342
+ Tensor.neg: Tensor.neg
343
+ Tensor.negative: Tensor.negative
344
+ Tensor.nelement: Tensor.nelement
345
+ Tensor.new_ones: Tensor.new_ones
346
+ Tensor.new_zeros: Tensor.new_zeros
347
+ Tensor.nextafter: Tensor.nextafter
348
+ Tensor.nonzero: Tensor.nonzero
349
+ Tensor.not_equal: Tensor.not_equal
350
+ Tensor.numel: Tensor.numel
351
+ Tensor.orgqr: Tensor.orgqr
352
+ Tensor.ormqr: Tensor.ormqr
353
+ Tensor.outer: Tensor.outer
354
+ Tensor.permute: Tensor.permute
355
+ Tensor.rad2deg: Tensor.rad2deg
356
+ Tensor.ravel: Tensor.ravel
357
+ Tensor.real: Tensor.real
358
+ Tensor.reciprocal: Tensor.reciprocal
359
+ Tensor.remainder: Tensor.remainder
360
+ Tensor.repeat_interleave: Tensor.repeat_interleave
361
+ Tensor.reshape: Tensor.reshape
362
+ Tensor.reshape_as: Tensor.reshape_as
363
+ Tensor.roll: Tensor.roll
364
+ Tensor.rot90: Tensor.rot90
365
+ Tensor.round: Tensor.round
366
+ Tensor.rsqrt: Tensor.rsqrt
367
+ Tensor.sgn: Tensor.sgn
368
+ Tensor.shape: Tensor.shape
369
+ Tensor.short: Tensor.short
370
+ Tensor.sigmoid: Tensor.sigmoid
371
+ Tensor.sign: Tensor.sign
372
+ Tensor.signbit: Tensor.signbit
373
+ Tensor.sin: Tensor.sin
374
+ Tensor.sinc: Tensor.sinc
375
+ Tensor.sinh: Tensor.sinh
376
+ Tensor.slogdet: Tensor.slogdet
377
+ Tensor.sort: Tensor.sort
378
+ Tensor.sqrt: Tensor.sqrt
379
+ Tensor.square: Tensor.square
380
+ Tensor.squeeze: Tensor.squeeze
381
+ Tensor.storage_offset: Tensor.storage_offset
382
+ Tensor.stride: Tensor.stride
383
+ Tensor.subtract: Tensor.subtract
384
+ Tensor.sum_to_size: Tensor.sum_to_size
385
+ Tensor.swapaxes: Tensor.transpose
386
+ Tensor.swapdims: Tensor.swapdims
387
+ Tensor.t: Tensor.t
388
+ Tensor.tan: Tensor.tan
389
+ Tensor.tanh: Tensor.tanh
390
+ Tensor.topk: Tensor.topk
391
+ Tensor.trace: Tensor.trace
392
+ Tensor.tril: Tensor.tril
393
+ Tensor.true_divide: Tensor.true_divide
394
+ Tensor.trunc: Tensor.trunc
395
+ Tensor.unbind: Tensor.unbind
396
+ Tensor.unsqueeze: Tensor.unsqueeze
397
+ Tensor.view: Tensor.view
398
+ Tensor.view_as: Tensor.view_as
399
+ Tensor.where: Tensor.where
@@ -1,33 +1,49 @@
1
1
  import os
2
+ from pathlib import Path
2
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
3
8
 
4
- class DebuggerConfig:
5
- convert_map = {
6
- "L0": "cell",
7
- "L1": "api",
8
- "L2": 'kernel'
9
- }
10
9
 
10
+ class DebuggerConfig:
11
11
  def __init__(self, common_config, task_config):
12
+ self.execution_mode = None
12
13
  self.dump_path = common_config.dump_path
13
14
  self.task = common_config.task
14
15
  self.rank = [] if not common_config.rank else common_config.rank
15
16
  self.step = [] if not common_config.step else common_config.step
16
- if not common_config.level:
17
- common_config.level = "L1"
18
- self.level = DebuggerConfig.convert_map[common_config.level]
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
19
20
  self.list = [] if not task_config.list else task_config.list
20
- self.data_mode = [] if not task_config.data_mode else task_config.data_mode
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
21
23
  self.file_format = task_config.file_format
24
+ self.overflow_nums = 1 if not task_config.overflow_nums else task_config.overflow_nums
22
25
  self.check_mode = task_config.check_mode
23
-
26
+ self.framework = Const.MS_FRAMEWORK
27
+ self.summary_mode = task_config.summary_mode
24
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
25
42
 
26
43
  def check(self):
27
44
  if not self.dump_path:
28
45
  raise Exception("Dump path is empty.")
29
- if not os.path.isabs(self.dump_path):
30
- raise Exception("Dump path must be absolute path.")
46
+ self.dump_path = os.path.abspath(self.dump_path)
31
47
  if not self.task:
32
48
  self.task = "statistics"
33
49
  if not self.level:
@@ -47,5 +63,12 @@ class DebuggerConfig:
47
63
 
48
64
  def _check_step(self):
49
65
  for s in self.step:
50
- if not isinstance(s, int):
51
- raise ValueError(f"step element {s} should be int")
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,32 +1,107 @@
1
1
  import os
2
+
3
+ import mindspore as ms
4
+
5
+ from msprobe.mindspore.service import Service
2
6
  from msprobe.mindspore.ms_config import parse_json_config
3
7
  from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
4
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
5
14
 
6
15
 
7
16
  class PrecisionDebugger:
8
17
  _instance = None
18
+ task_not_need_service = [Const.GRAD_PROBE]
9
19
 
10
- def __new__(cls, config_path=None):
20
+ def __new__(cls, config_path=None, opt=None):
11
21
  if not cls._instance:
12
22
  cls._instance = super().__new__(cls)
13
23
  cls._instance.initialized = False
14
24
  cls._instance.config = None
25
+ cls.service = None
26
+ cls.first_start = False
15
27
  return cls._instance
16
28
 
17
29
  def __init__(self, config_path=None):
18
30
  if self.initialized:
19
31
  return
32
+ self.initialized = True
20
33
  if not config_path:
21
34
  config_path = os.path.join(os.path.dirname(__file__), "../../config/config.json")
22
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
23
40
  self.config = DebuggerConfig(common_config, task_config)
24
- self.initialized = True
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
25
54
 
26
55
  @classmethod
27
56
  def start(cls, target=None):
28
57
  instance = cls._instance
29
58
  if not instance:
30
59
  raise Exception("No instance of PrecisionDebugger found.")
31
- handler = TaskHandlerFactory.create(instance.config)
32
- handler.handle()
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)
@@ -0,0 +1,58 @@
1
+ # 精度比对工具
2
+ msprobe精度比对工具主要通过对同一个模型,在两个不同的MindSpore环境下,输入相同的训练数据,在分别得到dump数据后,对这两个dump数据进行全量自动对比,从而快速定位不同版本之间的精度问题。
3
+
4
+ 执行精度比对操作需要安装msprobe工具。详见《[MindStudio精度调试工具](../../README.md)》的“工具安装”章节。
5
+
6
+ ## 命令行方式比对
7
+
8
+ 精度比对工具目前使用方式为命令行形式,对MindSpore的dump数据仅支持单卡。
9
+
10
+ 请先参见《[精度数据采集](./dump.md)》完成不同环境下MindSpore精度数据的采集。
11
+
12
+ ### 操作步骤
13
+
14
+ 1. 使用MindSpore进行dump,得到不同框架版本的dump数据。
15
+
16
+ 2. 创建比对文件,文件内容及示例请参见“**比对文件**”。
17
+
18
+ 3. 执行如下示例命令进行比对:
19
+
20
+ ```shell
21
+ msprobe -f mindspore compare -i ./compare.json -o ./output -s
22
+ ```
23
+
24
+ **完整参数说明**
25
+
26
+ | 参数名 | 说明 | 是否必选 |
27
+ |-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- |
28
+ | -i或--input_path | 指定比对文件路径。比对文件内容及示例请参见“**比对文件**”。 | 是 |
29
+ | -o或--output_path | 配置比对结果文件存盘目录。文件名称基于时间戳自动生成,格式为:`compare_result_{timestamp}.xlsx`。 | 是 |
30
+ | -s或--stack_mode | 配置stack_mode的开关。仅当**比对文件**配置"stack_path"需要开启。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 |
31
+ | -c或--compare_only | 仅比对开关。未配置默认关闭仅比对,使用自动精度分析,工具自动针对比对结果进行分析,识别到第一个精度不达标节点(在比对结果文件中的“Accuracy Reached or Not”列显示为No),并给出问题可能产生的原因(打屏展示并生成advisor_{timestamp}.txt文件)。该参数默认未配置,使用自动精度分析,通过配置该参数开启仅比对,关闭自动精度分析,仅输出比对结果表格。 | 否 |
32
+ | -f或--fuzzy_match | 模糊匹配。开启后,对于网络中同一层级且命名仅调用次数不同的API,可匹配并进行比对。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 |
33
+
34
+ 4. 查看比对结果,请详见PyTorch目录下的《[精度比对工具](../../pytorch/doc/ptdbg_ascend_compare.md)》的“比对结果分析”章节。
35
+
36
+ ### 比对文件
37
+
38
+ 以在当前目录创建./compare.json为例,单卡场景示例如下:
39
+
40
+
41
+ ```json
42
+ {
43
+ "npu_path": "./npu_dump/dump.json",
44
+ "bench_path": "./bench_dump/dump.json",
45
+ "stack_path": "./npu_dump/stack.json",
46
+ "is_print_compare_log": true
47
+ }
48
+ ```
49
+
50
+
51
+ **参数说明**
52
+
53
+ | 参数名 | 说明 | 是否必选 |
54
+ | -------------------- | ------------------------------------------------------------ | ------------------ |
55
+ | npu_path | 配置NPU环境下的dump.json文件(单卡场景)。数据类型:str。 | 是 |
56
+ | bench_path | 配置CPU、GPU或NPU环境下的dump.json文件(单卡场景)。数据类型:str。 | 是 |
57
+ | stack_path | 配置NPU dump目录下的stack.json文件。数据类型:str。 | 是|
58
+ | is_print_compare_log | 配置是否开启日志打屏。可取值True或False,默认为True。数据类型:bool | 否 |