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/docs/FAQ.md ADDED
@@ -0,0 +1,189 @@
1
+
2
+
3
+ # 1 数据采集
4
+
5
+ 1. dump.json中API或Module统计信息里出现null或None值的原因是什么?
6
+
7
+ dump.json里出现null或None值的可能性较多,常见的场景有:
8
+
9
+ - 输入或者输出参数本身是一个None值。
10
+ - 输入参数或输出参数类型当前工具不支持,会有日志打印提醒。
11
+ - 输入或者输出tensor的dtype为bool时,Mean和Norm等字段为null。
12
+
13
+ # 2 精度预检(PyTorch)
14
+
15
+ 1. 预检工具在 dump 和 run_ut 的过程中,是否需要同时开启或关闭 jit 编译(jit_compile)?
16
+
17
+ 答:是。
18
+
19
+ 2. 预检工具对于 type_as 这类涉及数据类型转换操作的 API,是否具有参考性?
20
+
21
+ 由于这类 API 在 CPU 侧存在精度先提升后下降的操作,因此这类 API 的有效性的参考价值有限。
22
+
23
+ 3. run ut 过程中出现报错:ERROR: Got unsupported ScalarType BFloat16。
24
+
25
+ 答:请使用最新版本的工具。
26
+
27
+ 4. Dropout 算子,CPU 和 NPU 的随机应该不一样,为什么结果比对是一致的?
28
+
29
+ 答:这个结果是正常的,工具对该算子有特殊处理,只判定位置为 0 的位置比例大约和设定 p 值相当。
30
+
31
+ 5. 为什么浮点型数据 bench 和 CPU 的 dtype 不一致?
32
+
33
+ 答:对于 fp16 的数据,CPU 会上升一个精度 fp32 去计算,这是和算子那边对齐的精度结论,CPU 用更高精度去计算会更接近真实值。
34
+
35
+ 6. 添加预检工具后截取操作报错:`IndexError: too many indices for tensor of dimension x` 或 `TypeError: len() of a 0-d tensor`。
36
+
37
+ 答:注释工具目录 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 文件中 Tensor: 下的 `- __getitem__`,工具会跳过采集该 API。如果是需要 dump 关键位置 API 也可以考虑根据报错堆栈信息注释引发报错的类型检查。
38
+
39
+ 7. Tensor 魔法函数具体对应什么操作?
40
+
41
+ 答:
42
+
43
+ | Tensor魔法函数 | 具体操作 |
44
+ | --------------- | ---------------- |
45
+ | `__add__` | + |
46
+ | `__and__` | & |
47
+ | `__bool__` | 返回 Tensor 布尔值 |
48
+ | `__div__` | / |
49
+ | `__eq__` | == |
50
+ | `__ge__` | >= |
51
+ | `__gt__` | > |
52
+ | `__iadd__` | += |
53
+ | `__iand__` | &= |
54
+ | `__idiv__` | /= |
55
+ | `__ifloordiv__` | //= |
56
+ | `__ilshift__` | <<= |
57
+ | `__imod__` | %= |
58
+ | `__imul__` | *= |
59
+ | `__ior__` | \|= |
60
+ | `__irshift__` | >>= |
61
+ | `__isub__` | -= |
62
+ | `__ixor__` | ^= |
63
+ | `__lshift__` | << |
64
+ | `__matmul__` | 矩阵乘法 |
65
+ | `__mod__` | % |
66
+ | `__mul__` | * |
67
+ | `__nonzero__` | 同 `__bool__` |
68
+ | `__or__` | \| |
69
+ | `__radd__` | +(反向) |
70
+ | `__rmul__` | *(反向) |
71
+ | `__rshift__` | >> |
72
+ | `__sub__` | - |
73
+ | `__truediv__` | 同 `__div__` |
74
+ | `__xor__` | ^ |
75
+
76
+ # 3 精度比对(PyTorch)
77
+
78
+ ## 3.1 工具使用
79
+
80
+ ### 3.1.1 dump 指定融合算子
81
+
82
+ 数据采集当前支持融合算子的输入输出,需要在 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 中添加,比如以下代码段调用的 softmax 融合算子。
83
+
84
+ ```python
85
+ def npu_forward_fused_softmax(self, input_, mask):
86
+ resl = torch_npu.npu_scaled_masked_softmax(input_, mask, self.scale, False)
87
+ return resl
88
+ ```
89
+
90
+ 如果需要 dump 其中调用的 npu_scaled_masked_softmax 算子的输入输出信息,需要在 `support_wrap_ops.yaml` 中的 `torch_npu: ` 中自行添加该融合算子:
91
+
92
+ ```yaml
93
+ - npu_scaled_masked_softmax
94
+ ```
95
+
96
+ (npu_scaled_masked_softmax 融合算子工具已支持 dump,本例仅供参考)。
97
+
98
+ ## 3.2 常见问题
99
+
100
+ 1. 在同一个目录多次执行 dump 会冲突吗?
101
+
102
+ 答:会,同一个目录多次 dump,会覆盖上一次结果,可以使用 dump_path 参数修改 dump 目录。
103
+
104
+ 2. 如何 dump 算子级的数据?
105
+
106
+ 答:需要配置 level 为 L2 模式。
107
+
108
+ 3. 工具比对发现 NPU 和标杆数据的 API 无法完全对齐?
109
+
110
+ 答:torch 版本和硬件差异属于正常情况。
111
+
112
+ ## 3.3 异常情况
113
+
114
+ 1. HCCL 报错: error code: EI0006。
115
+
116
+ **故障现象**:使用 msprobe 工具时,报错:error code: EI0006。
117
+
118
+ **故障原因**:CANN 软件版本较低导致不兼容。
119
+
120
+ **故障处理**:升级新版 CANN 软件版本。
121
+
122
+ 2. torch_npu._C._clear_overflow_npu() RuntimeError NPU error,error code is 107002。
123
+
124
+ 如果运行溢出检测功能遇到这个报错,采取以下解决方法:
125
+
126
+ 如果是单卡运行,添加如下代码,0 是卡号,选择自己空闲的卡号。
127
+
128
+ ```python
129
+ torch.npu.set_device('npu:0')
130
+ ```
131
+
132
+ 如果多卡运行,请在代码中修改对应卡号,比如进程使用卡号为 {rank} 时可以添加如下代码:
133
+
134
+ ```python
135
+ torch.npu.set_device(f'npu:{rank}')
136
+ ```
137
+
138
+ 如果运行精度比对功能遇到这个报错,尝试安装最新版本的 msprobe。
139
+
140
+ 3. dump 得到的 `VF_lstm_99_forward_input.1.0.npy`、`VF_lstm_99_forward_input.1.1.npy` 类似的数据是否正常?
141
+
142
+ 带 1.0/1.1/1.2 后缀的 npy 是正常现象,例如,当输入数据为 [[tensor1, tensor2, tensor3]] 会生成这样的后缀。
143
+
144
+ 4. 进行 compare 报错:The current file contains stack information, please turn on the stack_mode。
145
+
146
+ 在比对脚本中,设置 `stack_mode=True`,例如:
147
+
148
+ ```python
149
+ from msprobe.pytorch import compare
150
+ dump_result_param={
151
+ "npu_json_path": "./npu_dump/dump.json",
152
+ "bench_json_path": "./gpu_dump/dump.json",
153
+ "stack_json_path": "./npu_dump/stack.json",
154
+ "is_print_compare_log": True
155
+ }
156
+ compare(dump_result_param, output_path="./output", stack_mode=True)
157
+ ```
158
+
159
+ 5. dump 指定反向 API 的 kernel 级别的数据报错:NameError:name 'torch_npu' is not defined。
160
+
161
+ 答:如果是 npu 环境,请安装 torch_npu;如果是 gpu 环境,暂不支持 dump 指定 API 的 kernel 级别的数据。
162
+
163
+ 6. 配置 dump_path 后,使用工具报错:[ERROR] The file path /home/xxx/dump contains special characters。
164
+
165
+ 答:请检查你设置的 dump 绝对路径是否包含特殊字符,确保路径名只包含大小写字母、数字、下划线、斜杠、点和短横线;注意,如果执行脚本的路径为 /home/abc++/,设置的 dump_path="./dump",工具实际校验的路径为绝对路径 /home/abc++/dump,++ 为特殊字符,会引发本条报错。
166
+
167
+ 7. 无法 dump matmul 权重的反向梯度数据。
168
+
169
+ 答:matmul 期望的输入是二维,当输入不是二维时,会将输入通过 view 操作展成二维,再进行 matmul 运算,因此在反向求导时,backward_hook 能拿到的是 UnsafeViewBackward 这步操作里面数据的梯度信息,取不到 MmBackward 这步操作里面数据的梯度信息,即权重的反向梯度数据。典型的例子有,当 linear 的输入不是二维,且无 bias 时,会调用 output = input.matmul(weight.t()),因此拿不到 linear 层的 weight 的反向梯度数据。
170
+
171
+ 8. dump.json 文件中的某些 api 的 dtype 类型为 float16,但是读取此 api 的 npy 文件显示的 dtype 类型为 float32。
172
+
173
+ 答:msprobe 工具在 dump 数据时需要将原始数据从 npu to cpu 上再转换为 numpy 类型,npu to cpu 的逻辑和 gpu to cpu 是保持一致的,都存在 dtype 可能从 float16 变为 float32 类型的情况,如果出现 dtype 不一致的问题,最终采集数据的 dtype 以 pkl 文件为准。
174
+
175
+ 9. 使用 dataloader 后 raise 异常 Exception("msprobe: exit after iteration {}". format(max(self.config.step)))。
176
+
177
+ 答:正常现象,dataloader 通过 raise 结束程序,堆栈信息可忽略。
178
+
179
+ 10. 添加 msprobe 工具后截取操作报错:`IndexError: too many indices for tensor of dimension x` 或 `TypeError: len() of a 0-d tensor`。
180
+
181
+ 答:注释工具目录 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 文件中 `Tensor: ` 下的 `- __getitem__`,工具会跳过采集该 API。如果是需要采集关键位置 API 也可以考虑根据报错堆栈信息注释引发报错的类型检查。
182
+
183
+ 11. 添加 msprobe 工具后 F.gelu 触发 ValueError 报错:`activation_func must be F.gelu` 等。以及采集 Megatron 数据时报错:`ValueError(Only support fusion of gelu and swiglu)`。
184
+
185
+ 答:这一类问题是因为工具本身封装了 torch 算子,所以校验算子名时会报错。注释 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 文件中的 `-gelu` 或者 `-silu`,工具会跳过采集该 API。如果需要采集关键位置 API 也可以考虑根据报错堆栈信息注释引发报错的类型检查。
186
+
187
+ 12. 添加 msprobe 工具后触发与 AsStrided 算子相关、或者编译相关的报错,如:`Failed to compile Op [AsStrided]`。
188
+
189
+ 答:注释工具目录 `mstt/debug/accuracy_tools/msprobe/pytorch/hook_module/support_wrap_ops.yaml` 文件中 `Tensor: `下的 `-t` 和 `- transpose`。
@@ -0,0 +1,146 @@
1
+ # 无标杆工具场景验证和性能基线报告
2
+
3
+ ## 1 环境信息
4
+
5
+ NPU:Atlas A2 训练系列产品
6
+
7
+ CPU:
8
+
9
+ ![输入图片说明](img/cpu_info.png)
10
+
11
+ Torch:2.1.0
12
+
13
+ CANN:8.0.T5
14
+
15
+ 除上述环境信息影响性能外,API 的数量、种类以及 Shape 都会对性能产生影响,因此本次选取不同场景网络和不同算子进行测试。
16
+
17
+ ## 2 模型信息和性能基线
18
+
19
+ 大模型在使用 msprobe 采集数据时,建议先简化模型层数,减少采集数据量。
20
+
21
+ 以下场景的性能基线测试数据均为多次测试后取平均值,实际运行时性能数据可能会根据环境状态稍有浮动。
22
+
23
+ ### [2.1 ModelLink 模型](https://gitee.com/ascend/ModelLink)
24
+
25
+ NUM_LAYER:1
26
+
27
+ NPU 卡数:1
28
+
29
+ 主要数据类型:FLOAT16
30
+
31
+ #### 2.1.1 LLaMA2-7B
32
+
33
+ softmax 算子为 FLOAT32,输入输出大小均为 2G,为模型最大显存开销的 API。在该模型下、对无标杆工具处理模式、插装范围、扰动方式组合下的性能和显存基线进行验证。
34
+
35
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
36
+ |-------|--------|------|-----|-------|---------|--------|-------|--------|
37
+ | / | / | / | / | 0.24 | 13.69 | 1 | 1 | 混合精度模式基线 |
38
+ | check | 前 | ["softmax"] | improve_precision | 0.26 | 13.69 | 1.08 | 1 | softmax 本身为高精度,跳过 |
39
+ | check | 前 | ["softmax"] | add_noise | 0.54 | 19.17 | 2.25 | 1.40 | |
40
+ | check | 前 | ["softmax"] | bit_noise | 0.56 | 19.17 | 2.33 | 1.40 | |
41
+ | check | 前 | ["softmax"] | change_value | 0.48 | 14.9 | 2 | 1.09 | |
42
+ | check | 前 | ["softmax"] | no_change | 0.47 | 14.9 | 1.96 | 1.09 | |
43
+ | check | 前 | ["softmax"] | to_cpu | 26.45 | 22.67 | 110.21 | 1.66 | 不建议整网 |
44
+ | check | 前 | ["matmul"] | improve_precision | 0.57 | 13.69 | 2.38 | 1 | |
45
+ | check | 前 | ["matmul"] | change_value | 0.48 | 13.69 | 2 | 1 | |
46
+ | check | 前 | ["matmul"] | to_cpu | 78.43 | 19.20 | 326.79 | 1.40 | 不建议整网 |
47
+ | check | 前 | [] | improve_precision | 3.45 | 18.79 | 14.37 | 1.37 | |
48
+ | check | 前 | [] | add_noise | 4.67 | 19.17 | 19.46 | 1.40 | |
49
+ | check | 前 | [] | bit_noise | 16.99 | 19.17 | 70.79 | 1.40 | |
50
+ | check | 前 | [] | no_change | 3.22 | 14.90 | 13.42 | 1.09 | |
51
+ | check | 反 | ["softmax"] | improve_precision | 6.23 | 25.69 | 25.96 | 1.88 | 不建议整网 |
52
+ | check | 反 | ["softmax"] | change_value | 22.76 | 25.69 | 94.83 | 1.88 | 不建议整网 |
53
+ | check | 反 | ["softmax"] | to_cpu | 141.71 | 26.19 | 590.46 | 1.91 | 不建议整网 |
54
+ | fix | 前 | ["softmax"] | to_cpu | 9.70 | 16.67 | 40.42 | 1.22 | 不支持整网、不支持反向 |
55
+ | fix | 前 | ["softmax"] | improve_precision | 0.26 | 14.67 | 1.08 | 1.07 | 不支持整网、不支持反向 |
56
+ | 预热 | 前 | [] | improve_precision | 155.07 | 24.79 | 646.13 | 1.81 | 低精度模型基线、只测预热的迭代 |
57
+ | 预热 | 反 | [] | improve_precision | 72.29 | 22.01 | 301.21 | 1.61 | 低精度模型基线、只测预热的迭代,grad_output 为高精度的算子跳过 |
58
+
59
+ #### 2.1.2 Aquila2-7B
60
+
61
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
62
+ |----------|------|-----|---|----|-----|-------|------|-------------|
63
+ | / | / | / | / | 0.17 | 13.66 | 1 | 1 | 混合精度模式基线 |
64
+ | check | 前 | [] | improve_precision | 1.57 | 14.24 | 9.24 | 1.04 | |
65
+ | check | 反 | [] | add_noise | 21.05 | 14.19 | 123.82 | 1.04 | |
66
+ | fix | 前 | [] | improve_precision | 0.95 | 15.55 | 5.59 | 1.14 | |
67
+
68
+ #### 2.1.3 Baichuan2-7B
69
+
70
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s)| 显存峰值(GB)| 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
71
+ |----|-----|---|--|----|----|------|-------|---------|
72
+ | / | / | / | / | 0.26 | 12.12 | 1 | 1 | 混合精度模式基线 |
73
+ | check | 前 | [] | improve_precision | 1.02 | 12.27 | 3.92 | 1.01 | |
74
+ | check | 反 | [] | add_noise | 11.15 | 12.67 | 42.88 | 1.05 | |
75
+ | fix | 前 | [] | improve_precision | 0.95 | 12.82 | 3.65 | 1.06 | |
76
+
77
+ #### 2.1.4 Bloom-7B
78
+
79
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s)| 显存峰值(GB)| 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
80
+ |-----|------|------|------|----|-----|-----|-------|----|
81
+ | / | / | / | / | 0.14 | 9.51 | 1 | 1 | 混合精度模式基线 |
82
+ | check | 前 | [] | improve_precision | 1.64 | 11.58 | 11.71 | 1.22 | |
83
+ | check | 反 | [] | add_noise | 17.15 | 9.51 | 122.5 | 1 | |
84
+ | fix | 前 | [] | improve_precision | 0.87 | 10.62 | 6.21 | 1.12 | |
85
+
86
+ #### 2.1.5 Interlm-7B
87
+
88
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
89
+ |-------------|--------|-------|----|------|-----|------|-------|----|
90
+ | / | / | / | / | 0.13 | 10.76 | 1 | 1 | 混合精度模式基线 |
91
+ | check | 前 | [] | improve_precision | 1.19 | 11.68 | 9.15 | 1.09 | |
92
+ | check | 反 | [] | add_noise | 11.69 | 10.89 | 89.92 | 1.01 | |
93
+ | fix | 前 | [] | improve_precision | 0.75 | 11.68 | 5.77 | 1.09 | |
94
+
95
+ #### 2.1.6 Qwen-7B
96
+
97
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
98
+ |--------|-------|-----|-----|----|------|-----|------|------|
99
+ | / | / | / | / | 0.28 | 18.41 | 1 | 1 | 混合精度模式基线 |
100
+ | check | 前 | [] | improve_precision | 2.34 | 23.18 | 8.36 | 1.26 | |
101
+ | check | 反 | [] | add_noise | 22.07 | 19.47 | 78.82 | 1.06 | |
102
+ | fix | 前 | [] | improve_precision | 1.31 | 21.11 | 4.68 | 1.15 | |
103
+
104
+ #### 2.1.7 Gemma-7B
105
+
106
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
107
+ |--------|-------|------|---|----|-----|-----|-----|---------|
108
+ | / | / | / | / | 0.15 | 11.06 | 1 | 1 | 混合精度模式基线 |
109
+ | check | 前 | [] | improve_precision | 1.49 | 13.17 | 9.93 | 1.19 | |
110
+ | check | 反 | [] | add_noise | 16.69 | 11.06 | 111.27 | 1 | |
111
+ | fix | 前 | [] | improve_precision | 0.87 | 12.25 | 5.8 | 1.11 | |
112
+
113
+ ### [2.2 ModelZoo-PyTorch 模型](https://gitee.com/ascend/ModelZoo-PyTorch)
114
+
115
+ #### 2.2.1 ResNet50-Cifar
116
+
117
+ NPU 卡数:1
118
+
119
+ 主要数据类型:FLOAT16
120
+
121
+ 主要算子为 conv2d,每个 step 有 51 个, 因此对 conv2d 进行检测。CV 模型、依赖 mmcv 实现(如果不修改 mmcv 代码、工具无法获取 step 信息和反向信息)。
122
+
123
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
124
+ |------------|---------|--------|-----|------|---|--------|-------|----|
125
+ | / | / | / | / | 0.09 | 7.63 | 1 | 1 | 基线 |
126
+ | check | 前 | ["conv2d"] | improve_precision | 0.889 | 7.94 | 9.81 | 1.04 | |
127
+ | fix | 前 | ["conv2d"] | improve_precision | 0.328 | 7.47 | 3.64 | 0.91 | |
128
+ | fix | 前 | ["conv2d"] | to_cpu | 12.23 | 7.47 | 135.88 | 0.91 | |
129
+
130
+ #### 2.2.2 OpenSora1.0
131
+
132
+ NPU 卡数:4
133
+
134
+ 主要数据类型:FLOAT16
135
+
136
+ 每张卡每个 step 中 linear 算子个数为 257 个,FA 算子个数为 83(FA 算子反向无效)。
137
+
138
+ | 处理模式 | 前/反向 | 算子范围 | 扰动方式 | 耗时(s) | 显存峰值(GB) | 耗时膨胀倍数 | 显存峰值膨胀倍数 | 备注 |
139
+ |------------|------|-------|----|----|-----|-----|------|-----|
140
+ | / | / | / | / | 0.99 | 17.61 | 1 | 1 | 混合精度模式基线 |
141
+ | check | 前 | ["linear","npu_fusion_attention"] | improve_precision | 3.88 | 17.61 | 3.92 | 1 | |
142
+ | check | 前 | ["linear","npu_fusion_attention"] | add_noise | 3.46 | 17.61 | 3.49 | 1 | |
143
+ | check | 反 | ["linear"] | improve_precision | 12.61 | 17.61 | 12.74 | 1 | |
144
+ | check | 反 | ["linear"] | add_noise | 9.8 | 17.61 | 9.90 | 1 | |
145
+ | fix | 前 | ["linear"] | to_cpu | 18.83 | 17.61 | 19.02 | 1 | |
146
+ | fix | 前 | ["linear"] | improve_precision | 2.83 | 17.61 | 2.86 | 1 | |
Binary file
Binary file
Binary file
@@ -1 +1,2 @@
1
- from msprobe.mindspore.debugger.precision_debugger import PrecisionDebugger
1
+ from msprobe.mindspore.debugger.precision_debugger import PrecisionDebugger
2
+ from msprobe.mindspore.common.utils import seed_all