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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/LICENSE +201 -201
  2. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/METADATA +36 -34
  3. mindstudio_probe-1.1.0.dist-info/RECORD +287 -0
  4. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/WHEEL +1 -1
  5. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/entry_points.txt +1 -0
  6. msprobe/README.md +131 -237
  7. msprobe/__init__.py +16 -1
  8. msprobe/{config/config.json → config.json} +47 -49
  9. msprobe/core/advisor/advisor.py +124 -124
  10. msprobe/core/advisor/advisor_const.py +58 -59
  11. msprobe/core/advisor/advisor_result.py +58 -58
  12. msprobe/core/common/const.py +402 -318
  13. msprobe/core/common/exceptions.py +99 -99
  14. msprobe/core/common/{file_check.py → file_utils.py} +523 -283
  15. msprobe/core/common/inplace_op_checker.py +38 -0
  16. msprobe/core/common/inplace_ops.yaml +251 -0
  17. msprobe/core/common/log.py +86 -69
  18. msprobe/core/common/utils.py +371 -616
  19. msprobe/core/common_config.py +78 -71
  20. msprobe/core/compare/acc_compare.py +472 -298
  21. msprobe/core/compare/check.py +180 -95
  22. msprobe/core/compare/compare_cli.py +69 -49
  23. msprobe/core/compare/highlight.py +259 -222
  24. msprobe/core/compare/multiprocessing_compute.py +174 -149
  25. msprobe/core/compare/npy_compare.py +310 -295
  26. msprobe/core/compare/utils.py +464 -429
  27. msprobe/core/data_dump/data_collector.py +153 -144
  28. msprobe/core/data_dump/data_processor/base.py +337 -293
  29. msprobe/core/data_dump/data_processor/factory.py +76 -59
  30. msprobe/core/data_dump/data_processor/mindspore_processor.py +192 -198
  31. msprobe/core/data_dump/data_processor/pytorch_processor.py +383 -389
  32. msprobe/core/data_dump/json_writer.py +117 -116
  33. msprobe/core/data_dump/scope.py +194 -178
  34. msprobe/core/grad_probe/constant.py +74 -70
  35. msprobe/core/grad_probe/grad_compare.py +170 -175
  36. msprobe/core/grad_probe/utils.py +77 -52
  37. msprobe/docs/01.installation.md +99 -0
  38. msprobe/docs/02.config_introduction.md +137 -0
  39. msprobe/docs/03.config_examples.md +237 -0
  40. msprobe/docs/04.acl_config_examples.md +78 -0
  41. msprobe/docs/05.data_dump_PyTorch.md +326 -0
  42. msprobe/docs/06.data_dump_MindSpore.md +285 -0
  43. msprobe/docs/07.accuracy_checker_PyTorch.md +297 -0
  44. msprobe/docs/08.accuracy_checker_online_PyTorch.md +238 -0
  45. msprobe/docs/09.accuracy_checker_MindSpore.md +68 -0
  46. msprobe/docs/10.accuracy_compare_PyTorch.md +327 -0
  47. msprobe/docs/11.accuracy_compare_MindSpore.md +333 -0
  48. msprobe/docs/12.overflow_check_PyTorch.md +79 -0
  49. msprobe/docs/13.overflow_check_MindSpore.md +31 -0
  50. msprobe/{pytorch/doc/parse_tool.md → docs/14.data_parse_PyTorch.md} +283 -286
  51. msprobe/docs/15.free_benchmarking_PyTorch.md +170 -0
  52. msprobe/docs/16.free_benchmarking_MindSpore.md +140 -0
  53. msprobe/{doc/grad_probe/grad_probe.md → docs/17.grad_probe.md} +205 -207
  54. msprobe/{pytorch/doc//321/205/320/254/320/270/321/207/342/225/221/342/224/220/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/206/320/277/320/244/321/205/320/277/342/225/243.md → docs/18.online_dispatch.md} +89 -90
  55. msprobe/docs/FAQ.md +189 -0
  56. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +146 -0
  57. msprobe/docs/img/free_benchmark_framework.png +0 -0
  58. msprobe/docs/img/ms_dump.png +0 -0
  59. msprobe/docs/img/ms_layer.png +0 -0
  60. msprobe/docs/img/pt_dump.png +0 -0
  61. msprobe/mindspore/__init__.py +2 -1
  62. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +278 -245
  63. msprobe/mindspore/api_accuracy_checker/api_info.py +76 -69
  64. msprobe/mindspore/api_accuracy_checker/api_runner.py +155 -151
  65. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +196 -196
  66. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +6 -0
  67. msprobe/mindspore/api_accuracy_checker/compute_element.py +238 -223
  68. msprobe/mindspore/api_accuracy_checker/main.py +8 -15
  69. msprobe/mindspore/api_accuracy_checker/type_mapping.py +113 -113
  70. msprobe/mindspore/api_accuracy_checker/utils.py +79 -62
  71. msprobe/mindspore/cell_processor.py +58 -34
  72. msprobe/mindspore/common/const.py +108 -87
  73. msprobe/mindspore/common/log.py +37 -37
  74. msprobe/mindspore/common/utils.py +97 -57
  75. msprobe/mindspore/compare/distributed_compare.py +62 -75
  76. msprobe/mindspore/compare/layer_mapping.py +146 -0
  77. msprobe/mindspore/compare/modify_mapping.py +107 -0
  78. msprobe/mindspore/compare/ms_compare.py +357 -117
  79. msprobe/mindspore/compare/ms_graph_compare.py +364 -317
  80. msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -399
  81. msprobe/mindspore/debugger/debugger_config.py +69 -74
  82. msprobe/mindspore/debugger/precision_debugger.py +150 -107
  83. msprobe/mindspore/dump/dump_tool_factory.py +50 -35
  84. msprobe/mindspore/dump/hook_cell/api_registry.py +128 -104
  85. msprobe/mindspore/dump/hook_cell/hook_cell.py +55 -53
  86. msprobe/mindspore/dump/hook_cell/primitive_hooks.py +206 -0
  87. msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +994 -925
  88. msprobe/mindspore/dump/hook_cell/wrap_api.py +121 -0
  89. msprobe/mindspore/dump/jit_dump.py +96 -56
  90. msprobe/mindspore/dump/kernel_graph_dump.py +75 -60
  91. msprobe/mindspore/dump/kernel_kbyk_dump.py +79 -65
  92. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +131 -116
  93. msprobe/mindspore/free_benchmark/common/config.py +27 -12
  94. msprobe/mindspore/free_benchmark/common/handler_params.py +32 -17
  95. msprobe/mindspore/free_benchmark/common/utils.py +85 -71
  96. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -842
  97. msprobe/mindspore/free_benchmark/decorator/dec_forward.py +57 -42
  98. msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +122 -107
  99. msprobe/mindspore/free_benchmark/handler/base_handler.py +105 -90
  100. msprobe/mindspore/free_benchmark/handler/check_handler.py +56 -41
  101. msprobe/mindspore/free_benchmark/handler/fix_handler.py +51 -36
  102. msprobe/mindspore/free_benchmark/handler/handler_factory.py +36 -21
  103. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +82 -67
  104. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +36 -21
  105. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +78 -63
  106. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +77 -0
  107. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +49 -34
  108. msprobe/mindspore/free_benchmark/perturbation/no_change.py +27 -12
  109. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +44 -27
  110. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +48 -33
  111. msprobe/mindspore/grad_probe/global_context.py +100 -91
  112. msprobe/mindspore/grad_probe/grad_analyzer.py +231 -231
  113. msprobe/mindspore/grad_probe/grad_monitor.py +27 -27
  114. msprobe/mindspore/grad_probe/grad_stat_csv.py +131 -131
  115. msprobe/mindspore/grad_probe/hook.py +94 -92
  116. msprobe/mindspore/grad_probe/utils.py +29 -28
  117. msprobe/mindspore/ms_config.py +128 -126
  118. msprobe/mindspore/overflow_check/kernel_graph_overflow_check.py +60 -45
  119. msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +49 -34
  120. msprobe/mindspore/runtime.py +4 -4
  121. msprobe/mindspore/service.py +297 -354
  122. msprobe/mindspore/task_handler_factory.py +24 -24
  123. msprobe/msprobe.py +105 -107
  124. msprobe/pytorch/__init__.py +23 -4
  125. msprobe/pytorch/api_accuracy_checker/common/config.py +70 -55
  126. msprobe/pytorch/api_accuracy_checker/common/utils.py +246 -165
  127. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +230 -213
  128. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +632 -581
  129. msprobe/pytorch/api_accuracy_checker/compare/api_precision_standard.yaml +132 -132
  130. msprobe/pytorch/api_accuracy_checker/compare/api_precision_threshold.yaml +390 -390
  131. msprobe/pytorch/api_accuracy_checker/compare/compare.py +416 -381
  132. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +90 -73
  133. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +265 -244
  134. msprobe/pytorch/api_accuracy_checker/config.yaml +10 -10
  135. msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +370 -332
  136. msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +221 -199
  137. msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +150 -134
  138. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +518 -581
  139. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +213 -74
  140. msprobe/pytorch/api_accuracy_checker/run_ut/torch_ut_setting.json +7 -4
  141. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +218 -202
  142. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +370 -324
  143. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +227 -204
  144. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/dump_dispatch.py +110 -0
  145. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +244 -218
  146. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/torch_ops_config.yaml +63 -0
  147. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py +44 -0
  148. msprobe/pytorch/bench_functions/__init__.py +30 -15
  149. msprobe/pytorch/bench_functions/apply_adam_w.py +43 -28
  150. msprobe/pytorch/bench_functions/confusion_transpose.py +34 -19
  151. msprobe/pytorch/bench_functions/fast_gelu.py +70 -55
  152. msprobe/pytorch/bench_functions/layer_norm_eval.py +21 -6
  153. msprobe/pytorch/bench_functions/linear.py +27 -12
  154. msprobe/pytorch/bench_functions/matmul_backward.py +63 -48
  155. msprobe/pytorch/bench_functions/npu_fusion_attention.py +538 -421
  156. msprobe/pytorch/bench_functions/rms_norm.py +30 -15
  157. msprobe/pytorch/bench_functions/rotary_mul.py +71 -52
  158. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +41 -26
  159. msprobe/pytorch/bench_functions/swiglu.py +70 -55
  160. msprobe/pytorch/common/__init__.py +17 -2
  161. msprobe/pytorch/common/compare_script.template +14 -14
  162. msprobe/pytorch/common/log.py +33 -32
  163. msprobe/pytorch/common/parse_json.py +54 -39
  164. msprobe/pytorch/common/utils.py +310 -300
  165. msprobe/pytorch/compare/distributed_compare.py +66 -66
  166. msprobe/pytorch/compare/mapping.yaml +607 -607
  167. msprobe/pytorch/compare/match.py +49 -33
  168. msprobe/pytorch/compare/pt_compare.py +82 -40
  169. msprobe/pytorch/debugger/debugger_config.py +108 -95
  170. msprobe/pytorch/debugger/precision_debugger.py +173 -125
  171. msprobe/pytorch/free_benchmark/__init__.py +23 -8
  172. msprobe/pytorch/free_benchmark/common/constant.py +70 -70
  173. msprobe/pytorch/free_benchmark/common/counter.py +71 -71
  174. msprobe/pytorch/free_benchmark/common/enums.py +65 -37
  175. msprobe/pytorch/free_benchmark/common/params.py +144 -129
  176. msprobe/pytorch/free_benchmark/common/utils.py +118 -102
  177. msprobe/pytorch/free_benchmark/compare/grad_saver.py +200 -179
  178. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +119 -104
  179. msprobe/pytorch/free_benchmark/main.py +120 -105
  180. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +28 -13
  181. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +56 -41
  182. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +105 -90
  183. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +119 -104
  184. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +87 -63
  185. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +83 -68
  186. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +43 -28
  187. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +60 -45
  188. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +34 -19
  189. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +256 -217
  190. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +54 -39
  191. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +38 -23
  192. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +45 -30
  193. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +185 -170
  194. msprobe/pytorch/function_factory.py +91 -75
  195. msprobe/pytorch/functional/module_dump.py +84 -0
  196. msprobe/pytorch/grad_probe/grad_monitor.py +91 -90
  197. msprobe/pytorch/grad_probe/grad_stat_csv.py +128 -128
  198. msprobe/pytorch/hook_module/__init__.py +16 -1
  199. msprobe/pytorch/hook_module/api_registry.py +166 -161
  200. msprobe/pytorch/hook_module/hook_module.py +118 -120
  201. msprobe/pytorch/hook_module/support_wrap_ops.yaml +1879 -1877
  202. msprobe/pytorch/hook_module/utils.py +28 -29
  203. msprobe/pytorch/hook_module/wrap_aten.py +111 -110
  204. msprobe/pytorch/hook_module/wrap_distributed.py +77 -78
  205. msprobe/pytorch/hook_module/wrap_functional.py +104 -105
  206. msprobe/pytorch/hook_module/wrap_npu_custom.py +85 -84
  207. msprobe/pytorch/hook_module/wrap_tensor.py +69 -71
  208. msprobe/pytorch/hook_module/wrap_torch.py +84 -86
  209. msprobe/pytorch/hook_module/wrap_vf.py +60 -62
  210. msprobe/pytorch/module_processer.py +153 -138
  211. msprobe/pytorch/online_dispatch/__init__.py +20 -20
  212. msprobe/pytorch/online_dispatch/compare.py +235 -236
  213. msprobe/pytorch/online_dispatch/dispatch.py +271 -271
  214. msprobe/pytorch/online_dispatch/dump_compare.py +155 -156
  215. msprobe/pytorch/online_dispatch/single_compare.py +391 -391
  216. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +57 -49
  217. msprobe/pytorch/online_dispatch/utils.py +127 -146
  218. msprobe/pytorch/parse.py +19 -4
  219. msprobe/pytorch/parse_tool/cli.py +31 -32
  220. msprobe/pytorch/parse_tool/lib/compare.py +259 -271
  221. msprobe/pytorch/parse_tool/lib/config.py +52 -52
  222. msprobe/pytorch/parse_tool/lib/file_desc.py +31 -31
  223. msprobe/pytorch/parse_tool/lib/interactive_cli.py +102 -102
  224. msprobe/pytorch/parse_tool/lib/parse_exception.py +54 -54
  225. msprobe/pytorch/parse_tool/lib/parse_tool.py +161 -158
  226. msprobe/pytorch/parse_tool/lib/utils.py +320 -321
  227. msprobe/pytorch/parse_tool/lib/visualization.py +85 -91
  228. msprobe/pytorch/pt_config.py +317 -187
  229. msprobe/pytorch/service.py +311 -252
  230. mindstudio_probe-1.0.3.dist-info/RECORD +0 -272
  231. msprobe/config/README.md +0 -539
  232. msprobe/mindspore/doc/compare.md +0 -58
  233. msprobe/mindspore/doc/dump.md +0 -217
  234. msprobe/mindspore/dump/hook_cell/wrap_functional.py +0 -91
  235. msprobe/mindspore/dump/hook_cell/wrap_tensor.py +0 -63
  236. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +0 -10
  237. msprobe/pytorch/doc/FAQ.md +0 -193
  238. msprobe/pytorch/doc/api_accuracy_checker.md +0 -313
  239. msprobe/pytorch/doc/api_accuracy_checker_online.md +0 -187
  240. msprobe/pytorch/doc/dump.md +0 -260
  241. msprobe/pytorch/doc/msprobe/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/206/320/245/342/226/221/321/206/320/235/320/276dump/321/206/320/260/320/227/321/205/320/227/320/226/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -182
  242. msprobe/pytorch/doc/ptdbg_ascend_compare.md +0 -240
  243. msprobe/pytorch/doc/ptdbg_ascend_overview.md +0 -68
  244. msprobe/pytorch/doc/ptdbg_ascend_quickstart.md +0 -381
  245. msprobe/pytorch/doc/run_overflow_check.md +0 -25
  246. msprobe/pytorch/doc//321/206/320/247/320/260/321/206/320/260/320/227/321/206/320/255/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/205/320/254/342/225/221/321/206/320/251/320/277/321/211/320/272/320/234/321/210/320/277/320/221/321/205/320/242/320/234/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -151
  247. msprobe/pytorch/functional/data_processor.py +0 -0
  248. msprobe/pytorch/functional/dump_module.py +0 -39
  249. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/top_level.txt +0 -0
  250. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_1.png +0 -0
  251. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_2.png +0 -0
  252. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_3.png +0 -0
  253. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_4.png +0 -0
  254. /msprobe/{pytorch/doc → docs}/img/GPT-3_1.png +0 -0
  255. /msprobe/{pytorch/doc → docs}/img/GPT-3_2.png +0 -0
  256. /msprobe/{pytorch/doc → docs}/img/GPT-3_3.png +0 -0
  257. /msprobe/{pytorch/doc → docs}/img/GPT-3_4.png +0 -0
  258. /msprobe/{pytorch/doc → docs}/img/GPT-3_5.png +0 -0
  259. /msprobe/{pytorch/doc → docs}/img/GPT-3_6.png +0 -0
  260. /msprobe/{pytorch/doc → docs}/img/GPT-3_7.png +0 -0
  261. /msprobe/{pytorch/doc → docs}/img/GPT-3_8.png +0 -0
  262. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_1.png +0 -0
  263. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_2.png +0 -0
  264. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_details.png +0 -0
  265. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_result.png +0 -0
  266. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_details.png +0 -0
  267. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_result.png +0 -0
  268. /msprobe/{pytorch/doc → docs}/img/auto_analyze_log.png +0 -0
  269. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl.png +0 -0
  270. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl_md5.png.png +0 -0
  271. /msprobe/{pytorch/doc → docs}/img/cpu_info.png +0 -0
  272. /msprobe/{config → docs}/img/free_benchmark.png +0 -0
  273. /msprobe/{doc/grad_probe/img/image-1.png → docs/img/grad_probe_image-1.png} +0 -0
  274. /msprobe/{doc/grad_probe/img/image-2.png → docs/img/grad_probe_image-2.png} +0 -0
  275. /msprobe/{doc/grad_probe/img/image-3.png → docs/img/grad_probe_image-3.png} +0 -0
  276. /msprobe/{doc/grad_probe/img/image-4.png → docs/img/grad_probe_image-4.png} +0 -0
  277. /msprobe/{doc/grad_probe/img/image.png → docs/img/grad_probe_image.png} +0 -0
  278. /msprobe/{pytorch/doc → docs}/img/module_compare.png +0 -0
msprobe/README.md CHANGED
@@ -1,237 +1,131 @@
1
- # MindStudio精度调试工具
2
-
3
- MindStudio精度调试工具(MindStudio Probe),简称msprobe,是MindStudio Training Tools工具链下精度调试部分的工具包。主要包括精度预检和精度比对等子工具,当前适配场景包括PyTorch和MindSpore。
4
-
5
- ## 工具安装
6
-
7
- 精度工具合一软件包名称:`mindstudio_probe-{version}-py3-none-any.whl`
8
-
9
- ### pip安装
10
- ```shell
11
- pip install mindstudio-probe
12
- ```
13
- 使用`pip install mindstudio-probe==版本号`可安装指定版本的包。
14
-
15
- pip命令会自动安装最新的包及其配套依赖。
16
-
17
- 提示如下信息则表示安装成功。
18
-
19
- ```bash
20
- Successfully installed mindstudio_probe-{version}
21
- ```
22
-
23
- ### 下载whl包安装
24
- 1. 使用pip命令安装依赖:
25
-
26
- 1. 根据实际环境安装torch或mindspore
27
-
28
- 2. 安装numpy、openpyxl、pandas、PyYAML、rich、tqdm、einops、matplotlib、pyOpenSSL、twisted
29
-
30
-
31
- 若环境中已安装部分依赖,不需要重复安装。
32
-
33
- 2. whl包获取。
34
-
35
- 请通过下表链接下载工具whl包。
36
-
37
- | 版本 | 发布日期 | 支持PyTorch版本 | 支持MindSpore版本 | 下载链接 | 校验码 |
38
- | ----- | ---------- | ---------------- | ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
39
- | 1.0.2 | 2024-08-09 | 1.11/2.0/2.1/2.2 | 2.3.1 | [mindstudio_probe-1.0.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/msprobe/1.0/mindstudio_probe-1.0.2-py3-none-any.whl) | e4a980e5d98c426ce5ce9842520d9bc031d3b3de621c74b3d59414cc6e238e0e |
40
- | 1.0.1 | 2024-07-25 | 2.0/2.1/2.2 | 2.3.1 | [mindstudio_probe-1.0.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/msprobe/1.0/mindstudio_probe-1.0.1-py3-none-any.whl) | b699e224e4d4e3bcf9412c54fa858a1ee370f0d7a2bc69cb3f1273ac14a6dc82 |
41
- | 1.0 | 2024-07-09 | 2.0/2.1/2.2 | 2.3.0 | [ascend_training_accuracy_tools-1.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/att/1.0/ascend_training_accuracy_tools-1.0-py3-none-any.whl) | 5016dfe886c5d340ec6f60a959673355855f313c91f100680da814efb49f8e81 |
42
- | 0.0.3 | 2024-06-11 | 2.0/2.1/2.2 | 2.3.0 | [ascend_training_accuracy_tools-0.0.3-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/att/0.0/ascend_training_accuracy_tools-0.0.3-py3-none-any.whl) | f46d9714704859e2d67861a65bbb3c76b0a250cf6e238b978b5b959ab1fe125a |
43
- | 0.0.2 | 2024-05-23 | 2.0/2.1/2.2 | 2.3.0 | [ascend_training_accuracy_tools-0.0.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/att/0.0/ascend_training_accuracy_tools-0.0.2-py3-none-any.whl) | 2e35809bde559e9c4d2f16a02ccde779ed9e436bb65fded0b7ebaf6ac2c88d93 |
44
- | 0.0.1 | 2024-03-15 | 2.0/2.1 | - | [ascend_training_accuracy_tools-0.0.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/att/0.0/ascend_training_accuracy_tools-0.0.1-py3-none-any.whl) | 5801510d4e827e4859bc9a5aca021e4d30c2ea42d60a4c8ad0c2baab1b7782c9 |
45
-
46
- 3. whl包校验。
47
-
48
- 1. 根据以上下载链接下载whl包到Linux安装环境。
49
-
50
- 2. 进入whl包所在目录,执行如下命令。
51
-
52
- ```bash
53
- sha256sum {name}.whl
54
- ```
55
-
56
- {name}为whl包名称。
57
-
58
- 若回显呈现对应版本whl包一致的**校验码**,则表示下载了正确的ptdbg_ascend精度工具whl安装包。示例如下:
59
-
60
- ```bash
61
- sha256sum ascend_training_accuracy_tools-0.0.1-py3-none-any.whl
62
- 5801510d4e827e4859bc9a5aca021e4d30c2ea42d60a4c8ad0c2baab1b7782c9 *ascend_training_accuracy_tools-0.0.1-py3-none-any.whl
63
- ```
64
-
65
- 4. 执行如下命令进行安装。
66
-
67
- ```bash
68
- pip3 install ./mindstudio_probe-{version}-py3-none-any.whl
69
- ```
70
-
71
- 若为覆盖安装,请在命令行末尾增加“--force-reinstall”参数强制安装,例如:
72
-
73
- ```bash
74
- pip3 install ./mindstudio_probe-{version}-py3-none-any.whl --force-reinstall
75
- ```
76
-
77
- 提示如下信息则表示安装成功。
78
-
79
- ```bash
80
- Successfully installed mindstudio_probe-{version}
81
- ```
82
-
83
- ### 从源码安装
84
- 1. 克隆或者下载项目源代码
85
-
86
- ```shell
87
- git clone https://gitee.com/ascend/mstt.git
88
- cd debug/accuracy_tools
89
- ```
90
-
91
- 2. 安装setuptools和wheel
92
-
93
- ```shell
94
- pip install setuptools wheel
95
- ```
96
-
97
- 3. 安装msprobe
98
-
99
- ```shell
100
- python setup.py bdist_wheel
101
- cd dist
102
- pip install mindstudio_probe*.whl
103
- ```
104
- 提示出现如下信息则表示源码安装成功。
105
- ```shell
106
- Successfully installed ... mindstudio_probe-{version} ...
107
- ```
108
-
109
- ### 查看msprobe工具信息
110
-
111
- 执行如下命令查看msprobe工具信息。
112
-
113
- ```bash
114
- pip show mindstudio-probe
115
- ```
116
-
117
- 输出结果如下示例:
118
-
119
- ```bash
120
- Name: mindstudio-probe
121
- Version: 1.0
122
- Summary: This is a pytorch precision comparison tools
123
- Home-page:
124
- Author:
125
- Author-email:
126
- License:
127
- Location: /home/xx/anaconda3/envs/pt21py38/lib/python3.8/site-packages
128
- Requires: numpy, openpyxl, pandas, pyyaml, rich, tqdm, wheel
129
- Required-by:
130
- ```
131
-
132
- 关键字段含义:
133
-
134
- - Name:工具名称。
135
- - Version:工具版本号。
136
- - Summary:工具概述。
137
- - Location:工具安装路径。
138
- - Requires:工具依赖。
139
-
140
- ## 工具使用
141
-
142
- 安装msprobe工具后,可以按照如下思路选择合适的子工具进行精度调试:
143
-
144
- 1. 判断框架场景。
145
-
146
- 当前支持PyTorch和MindSpore场景。
147
-
148
- 2. 执行数据采集。
149
-
150
- 工具通过在训练脚本中添加PrecisionDebugger接口的方式对API执行精度数据dump操作。
151
-
152
- PyTorch场景:详见[PyTorch_精度数据采集](./pytorch/doc/dump.md)。
153
-
154
- MindSpore场景:详见[MindSpore_精度数据采集](./mindspore/doc/dump.md)。
155
-
156
- 3. 执行精度预检。
157
-
158
- 在昇腾NPU上扫描用户训练模型中所有API,进行API复现,给出精度情况的诊断和分析。
159
-
160
- PyTorch场景:详见[PyTorch_精度预检工具](./pytorch/doc/api_accuracy_checker.md)。
161
-
162
- MindSpore场景:暂不支持。
163
-
164
- 4. 执行精度比对。
165
-
166
- 进行PyTorch整网API粒度的数据dump、精度比对和溢出检测,从而定位训练场景下的精度问题。
167
-
168
- PyTorch场景:详见[PyTorch_精度比对工具](./pytorch/doc/ptdbg_ascend_compare.md)。
169
-
170
- MindSpore场景:详见[MindSpore_精度比对工具](./mindspore/doc/compare.md)。
171
-
172
- 5. 执行溢出解析。
173
-
174
- 溢出解析是在执行精度数据dump时,配置了溢出检测dump,那么对于输入正常但输出存在溢出的API,可以判断是否为正常溢出。
175
-
176
- PyTorch场景:详见[PyTorch_溢出解析工具](./pytorch/doc/run_overflow_check.md)。
177
-
178
- MindSpore场景:暂不支持。
179
-
180
- 6. 执行数据解析。
181
-
182
- 用于比对前后两次NPU ACL层级dump数据的一致性。
183
-
184
- PyTorch场景:详见[PyTorch_数据解析工具](./pytorch/doc/parse_tool.md)。
185
-
186
- MindSpore场景:暂不支持。
187
-
188
- 6. 执行梯度采集和比对。
189
-
190
- 用于采集梯度数据并进行梯度相似度比对。可以精准定位问题出现的step。
191
-
192
- 详见[梯度状态监测工具](./doc/grad_probe/grad_probe.md)。
193
-
194
-
195
-
196
- 上述流程中的工具均为msprobe工具的子工具,使用相同的命令行,格式如下:
197
-
198
- 精度预检工具
199
-
200
- ```bash
201
- msprobe -f <framework> run_ut [-h]
202
- ```
203
-
204
- ```bash
205
- msprobe -f <framework> multi_run_ut [-h]
206
- ```
207
-
208
- ```bash
209
- msprobe -f <framework> api_precision_compare [-h]
210
- ```
211
-
212
- 精度比对工具
213
-
214
- ```bash
215
- msprobe -f <framework> compare [-h]
216
- ```
217
-
218
- 溢出解析工具
219
-
220
- ```bash
221
- msprobe -f <framework> run_overflow_check [-h]
222
- ```
223
-
224
- 数据解析工具
225
-
226
- ```bash
227
- msprobe -f <framework> parse [-h]
228
- ```
229
-
230
- | 参数 | 说明 |
231
- | ---- | ------------------------------------------------------------ |
232
- | -f | 框架,请按所使用框架配置,当前支持配置为:pytorch、mindspore。 |
233
- | -h | 帮助信息。 |
234
-
235
- ## 贡献
236
-
237
- push代码前,请务必保证已经完成了基础功能测试和网络测试。
1
+ # 📖 msprobe 使用手册
2
+
3
+ ![version](https://img.shields.io/badge/version-1.0.4-blueviolet)
4
+ ![python](https://img.shields.io/badge/python-3.8|3.9|3.10-blue)
5
+ ![platform](https://img.shields.io/badge/platform-Linux-yellow)
6
+
7
+ **msprobe** 是 MindStudio Training Tools 工具链下精度调试部分的工具包。主要包括精度预检、溢出检测和精度比对等功能,目前适配 [PyTorch](https://pytorch.org/) 和 [MindSpore](https://www.mindspore.cn/) 框架。这些子工具侧重不同的训练场景,可以定位模型训练中的精度问题。
8
+
9
+ 为方便使用,本工具提供了统一、简易的程序接口:**PrecisionDebugger**。以 PyTorch 框架为例,通过以下示例模板和 **config.json** 可以轻松使用各种功能。
10
+
11
+ ```python
12
+ from msprobe.pytorch import PrecisionDebugger
13
+
14
+ debugger = PrecisionDebugger(config_path='./config.json')
15
+ ...
16
+ debugger.start() # 一般在训练循环开头启动工具
17
+ ... # 循环体
18
+ debugger.stop() # 一般在训练循环末尾结束工具
19
+ debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要
20
+ ```
21
+
22
+ 此外,根据以下规则,可以通过环境变量设置日志级别。
23
+ - MSPROBE_LOG_LEVEL=4,不打印任何日志;
24
+ - MSPROBE_LOG_LEVEL=3,仅打印 ERROR;
25
+ - MSPROBE_LOG_LEVEL=2,仅打印 WARNING、ERROR;
26
+ - MSPROBE_LOG_LEVEL=1,仅打印 INFO、WARNING、ERROR(默认配置);
27
+ - MSPROBE_LOG_LEVEL=0,打印 DEBUG、INFO、WARNING、ERROR。
28
+
29
+ 例如在 shell 脚本:
30
+
31
+ ```shell
32
+ export MSPROBE_LOG_LEVEL={x}
33
+ ```
34
+ **config.json** 的配置要求和各功能具体的使用指导详见后续章节。
35
+
36
+ ## ⚙️ [安装](./docs/01.installation.md)
37
+
38
+ ## 🛠️ config.json [介绍](./docs/02.config_introduction.md) [示例](./docs/03.config_examples.md)
39
+
40
+ ## 🧰 主要功能
41
+
42
+ ### 1 数据采集
43
+
44
+ msprobe 通过在训练脚本中添加 PrecisionDebugger 接口的方式对 API 执行精度数据 dump 操作,对应 config.json 中的 task 为 statistics 或 tensor。
45
+
46
+ [PyTorch 场景的数据采集](./docs/05.data_dump_PyTorch.md)
47
+
48
+ [MindSpore 场景的数据采集](./docs/06.data_dump_MindSpore.md)
49
+
50
+ ### 2 精度预检
51
+
52
+ 精度预检旨在昇腾 NPU 上扫描训练模型中的所有 API 进行 API 复现,给出精度情况的诊断和分析。对应 config.json 中的 task 为 run_ut。
53
+
54
+ PyTorch 场景的[离线预检](./docs/07.accuracy_checker_PyTorch.md)和[在线预检](./docs/08.accuracy_checker_online_PyTorch.md)
55
+
56
+ MindSpore 动态图场景的[离线预检](./docs/09.accuracy_checker_MindSpore.md)
57
+
58
+ ### 3 精度比对
59
+
60
+ 该功能进行 PyTorch 整网 API 粒度的数据 dump、精度比对,进而定位训练场景下的精度问题。
61
+
62
+ [PyTorch 场景的精度比对](./docs/10.accuracy_compare_PyTorch.md)
63
+
64
+ [MindSpore 场景的精度比对](./docs/11.accuracy_compare_MindSpore.md)
65
+
66
+ ### 4 溢出检测与解析
67
+
68
+ 溢出检测与解析是在执行精度数据 dump 时,判断是否存在输入正常但输出存在溢出的 API,从而判断是否为正常溢出。对应 config.json 中的 overflow_check。
69
+
70
+ [PyTorch 场景的溢出检测与解析](./docs/12.overflow_check_PyTorch.md)
71
+
72
+ [MindSpore 场景的溢出检测与解析](./docs/13.overflow_check_MindSpore.md)
73
+
74
+ ### 5 数据解析
75
+
76
+ 该功能用于比对前后两次 NPU ACL 层级 dump 数据的一致性。
77
+
78
+ [PyTorch 场景的数据解析](./docs/14.data_parse_PyTorch.md)
79
+
80
+ ### 6 无标杆比对
81
+
82
+ [PyTorch 场景的无标杆比对](./docs/15.free_benchmarking_PyTorch.md)
83
+
84
+ [MindSpore 场景的无标杆比对](./docs/16.free_benchmarking_MindSpore.md)
85
+
86
+ ### 7 梯度状态监测
87
+
88
+ 本功能用于采集梯度数据并进行梯度相似度比对,可以精准定位出现问题的 step。
89
+
90
+ [兼容 PyTorch 和 MindSpore 框架的梯度监测](./docs/17.grad_probe.md)
91
+
92
+ ### 8 在线精度比对
93
+
94
+ 在线精度比对是实现在PyTorch训练过程中直接完成精度比对并输出比对结果的功能,是NPU与CPU之间的精度比对。
95
+
96
+ [PyTorch 场景的在线精度比对](./docs/18.online_dispatch.md)
97
+
98
+ ## 🌟 新版本特性
99
+
100
+ 若查看历史版本特性,请点击[安装](./docs/01.installation.md)。
101
+
102
+ 【数据采集】
103
+ - 支持 config.json 中的 step 传入范围;
104
+ - 优化了指定 step 的机制,指定 step 结束后工具不再采集数据,但训练会继续运行。工具结束运行后,日志提示信息如下:
105
+ ```bash
106
+ ****************************************
107
+ * msprobe ends successfully. *
108
+ ****************************************
109
+ ```
110
+ 注:在多卡场景,每张卡进程训练到指定 step 之后都会打印一次上述信息。
111
+
112
+ 【精度预检】
113
+ - 在 PyTorch 场景,支持部分 NPU 融合算子预检。
114
+
115
+ 【精度比对】
116
+ - 解决了使用 MindSpore 需要安装 PyTorch 的问题。
117
+
118
+ 【无标杆比对】
119
+ - 补充在 PyTorch 场景的性能基线报告;
120
+ - 支持 MindSpore 场景的 change_value 扰动模式。
121
+
122
+ ## 📑 补充材料
123
+
124
+ [无标杆比对功能在 PyTorch 场景的性能基线报告](./docs/S02.report_free_benchmarking_validation_performance_baseline.md)
125
+
126
+ ## ❗ 免责声明
127
+ 本工具建议执行用户与安装用户保持一致,如果您要使用 root 执行,请自行关注 root 高权限触及的安全风险。
128
+
129
+ ## ❓ FAQ
130
+
131
+ [FAQ for PyTorch](./docs/FAQ_PyTorch.md)
msprobe/__init__.py CHANGED
@@ -1 +1,16 @@
1
- from msprobe.core.grad_probe.grad_compare import GradComparator
1
+ # Copyright (c) 2024-2024, Huawei Technologies Co., Ltd.
2
+ # All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ from msprobe.core.grad_probe.grad_compare import GradComparator
@@ -1,50 +1,48 @@
1
- {
2
- "task": "statistics",
3
- "dump_path": "./dump_path",
4
- "rank": [],
5
- "step": [],
6
- "level": "L1",
7
- "seed": 1234,
8
- "is_deterministic": false,
9
- "enable_dataloader": false,
10
- "acl_config": "",
11
- "tensor": {
12
- "scope": [],
13
- "list":[],
14
- "data_mode": ["all"],
15
- "backward_input": [],
16
- "file_format": "npy"
17
- },
18
- "statistics": {
19
- "scope": [],
20
- "list":[],
21
- "data_mode": ["all"],
22
- "summary_mode": "statistics"
23
- },
24
- "overflow_check": {
25
- "overflow_nums": 1,
26
- "check_mode":"all"
27
- },
28
- "run_ut": {
29
- "white_list": [],
30
- "black_list": [],
31
- "error_data_path": "./"
32
- },
33
- "grad_probe": {
34
- "grad_level": "L1",
35
- "param_list": [],
36
- "bounds": [-1, 0, 1]
37
- },
38
- "free_benchmark": {
39
- "scope": [],
40
- "list": [],
41
- "fuzz_device": "npu",
42
- "pert_mode": "improve_precision",
43
- "handler_type": "check",
44
- "fuzz_level": "L1",
45
- "fuzz_stage": "forward",
46
- "if_preheat": false,
47
- "preheat_step": 15,
48
- "max_sample": 20
49
- }
1
+ {
2
+ "task": "statistics",
3
+ "dump_path": "./dump_path",
4
+ "rank": [],
5
+ "step": [],
6
+ "level": "L1",
7
+ "enable_dataloader": false,
8
+ "acl_config": "",
9
+ "tensor": {
10
+ "scope": [],
11
+ "list":[],
12
+ "data_mode": ["all"],
13
+ "backward_input": [],
14
+ "file_format": "npy"
15
+ },
16
+ "statistics": {
17
+ "scope": [],
18
+ "list":[],
19
+ "data_mode": ["all"],
20
+ "summary_mode": "statistics"
21
+ },
22
+ "overflow_check": {
23
+ "overflow_nums": 1,
24
+ "check_mode":"all"
25
+ },
26
+ "run_ut": {
27
+ "white_list": [],
28
+ "black_list": [],
29
+ "error_data_path": "./"
30
+ },
31
+ "grad_probe": {
32
+ "grad_level": "L1",
33
+ "param_list": [],
34
+ "bounds": [-1, 0, 1]
35
+ },
36
+ "free_benchmark": {
37
+ "scope": [],
38
+ "list": [],
39
+ "fuzz_device": "npu",
40
+ "pert_mode": "improve_precision",
41
+ "handler_type": "check",
42
+ "fuzz_level": "L1",
43
+ "fuzz_stage": "forward",
44
+ "if_preheat": false,
45
+ "preheat_step": 15,
46
+ "max_sample": 20
47
+ }
50
48
  }