mindstudio-probe 8.3.3__py3-none-any.whl → 26.0.0a1__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 (689) hide show
  1. {mindstudio_probe-8.3.3.dist-info → mindstudio_probe-26.0.0a1.dist-info}/METADATA +26 -14
  2. mindstudio_probe-26.0.0a1.dist-info/RECORD +498 -0
  3. {mindstudio_probe-8.3.3.dist-info → mindstudio_probe-26.0.0a1.dist-info}/WHEEL +1 -1
  4. mindstudio_probe-26.0.0a1.dist-info/entry_points.txt +5 -0
  5. mindstudio_probe-26.0.0a1.dist-info/licenses/LICENSE +124 -0
  6. mindstudio_probe-26.0.0a1.dist-info/top_level.txt +2 -0
  7. msprobe/__init__.py +12 -13
  8. msprobe/config.json +9 -31
  9. msprobe/core/__init__.py +12 -11
  10. msprobe/core/acc_check/acc_check_cli.py +145 -0
  11. msprobe/core/common/const.py +97 -38
  12. msprobe/core/common/db_manager.py +133 -12
  13. msprobe/core/common/decorator.py +12 -11
  14. msprobe/core/common/exceptions.py +12 -11
  15. msprobe/core/common/file_utils.py +101 -25
  16. msprobe/core/common/framework_adapter.py +36 -25
  17. msprobe/core/common/global_lock.py +12 -11
  18. msprobe/core/common/inplace_op_checker.py +12 -11
  19. msprobe/core/common/log.py +22 -11
  20. msprobe/core/common/megatron_utils.py +566 -11
  21. msprobe/core/common/parallel_state.py +12 -11
  22. msprobe/core/common/runtime.py +12 -11
  23. msprobe/core/common/utils.py +41 -41
  24. msprobe/core/compare/acc_compare.py +361 -104
  25. msprobe/core/compare/atb_data_compare.py +422 -0
  26. msprobe/core/compare/auto_compare.py +134 -0
  27. msprobe/core/compare/check.py +14 -17
  28. msprobe/core/compare/compare_cli.py +72 -149
  29. msprobe/core/compare/config.py +12 -13
  30. msprobe/core/compare/diff_analyze/first_diff_analyze.py +28 -15
  31. msprobe/core/compare/diff_analyze/ignore_op_list.yaml +3 -0
  32. msprobe/core/compare/find_first/analyzer.py +18 -18
  33. msprobe/core/compare/find_first/graph.py +12 -11
  34. msprobe/core/compare/find_first/utils.py +13 -12
  35. msprobe/core/compare/indicator_analysis/__init__.py +15 -0
  36. msprobe/core/compare/indicator_analysis/algorithm.py +363 -0
  37. msprobe/core/compare/indicator_analysis/api_data.py +141 -0
  38. msprobe/core/compare/indicator_analysis/calculator.py +181 -0
  39. msprobe/core/compare/indicator_analysis/utils.py +116 -0
  40. msprobe/core/compare/layer_mapping/__init__.py +12 -11
  41. msprobe/core/compare/layer_mapping/data_scope_parser.py +20 -11
  42. msprobe/core/compare/layer_mapping/layer_mapping.py +14 -13
  43. msprobe/core/compare/layer_mapping/postprocess_pass.py +13 -11
  44. msprobe/core/compare/merge_result/merge_result.py +12 -11
  45. msprobe/core/compare/merge_result/merge_result_cli.py +12 -11
  46. msprobe/core/compare/merge_result/utils.py +12 -11
  47. msprobe/core/compare/multiprocessing_compute.py +13 -14
  48. msprobe/core/compare/npy_compare.py +13 -11
  49. msprobe/core/compare/offline_data_compare.py +160 -0
  50. msprobe/core/compare/stats_diff_calc.py +39 -0
  51. msprobe/core/compare/torchair_acc_cmp.py +764 -0
  52. msprobe/core/compare/torchair_cmp_utils.py +338 -0
  53. msprobe/core/compare/utils.py +140 -49
  54. msprobe/core/config_check/__init__.py +12 -11
  55. msprobe/core/config_check/checkers/__init__.py +12 -11
  56. msprobe/core/config_check/checkers/base_checker.py +15 -14
  57. msprobe/core/config_check/checkers/dataset_checker.py +13 -12
  58. msprobe/core/config_check/checkers/env_args_checker.py +13 -12
  59. msprobe/core/config_check/checkers/hyperparameter_checker.py +16 -15
  60. msprobe/core/config_check/checkers/pip_checker.py +15 -15
  61. msprobe/core/config_check/checkers/random_checker.py +13 -12
  62. msprobe/core/config_check/checkers/weights_checker.py +14 -12
  63. msprobe/core/config_check/ckpt_compare/ckpt_comparator.py +13 -17
  64. msprobe/core/config_check/ckpt_compare/megatron_loader.py +13 -12
  65. msprobe/core/config_check/ckpt_compare/metrics.py +12 -11
  66. msprobe/core/config_check/config_check_cli.py +18 -17
  67. msprobe/core/config_check/config_checker.py +16 -14
  68. msprobe/core/config_check/resource/dependency.yaml +15 -12
  69. msprobe/core/config_check/resource/env.yaml +12 -11
  70. msprobe/core/config_check/utils/hyperparameter_parser.py +12 -11
  71. msprobe/core/config_check/utils/utils.py +12 -11
  72. msprobe/core/{data_dump → dump/api_dump}/api_registry.py +12 -11
  73. msprobe/core/{common_config.py → dump/common_config.py} +13 -24
  74. msprobe/core/dump/data_dump/data_collector.py +257 -0
  75. msprobe/core/{data_dump → dump/data_dump}/data_processor/base.py +45 -36
  76. msprobe/core/{data_dump → dump/data_dump}/data_processor/factory.py +33 -25
  77. msprobe/core/{data_dump → dump/data_dump}/data_processor/mindspore_processor.py +37 -113
  78. msprobe/core/{data_dump → dump/data_dump}/data_processor/pytorch_processor.py +364 -131
  79. msprobe/core/{data_dump → dump/data_dump}/json_writer.py +24 -31
  80. msprobe/core/{data_dump → dump/data_dump}/scope.py +12 -13
  81. msprobe/core/{debugger → dump/debugger}/precision_debugger.py +15 -23
  82. msprobe/core/dump/dump2db/db_utils.py +215 -0
  83. msprobe/core/dump/dump2db/dump2db.py +409 -0
  84. msprobe/core/{hook_manager.py → dump/hook_manager.py} +38 -87
  85. msprobe/core/dump/kernel_dump/kernel_config.py +34 -0
  86. msprobe/core/{service.py → dump/service.py} +43 -27
  87. msprobe/core/install_deps/install_deps.py +51 -0
  88. msprobe/core/monitor/anomaly_processor.py +13 -11
  89. msprobe/core/monitor/csv2db.py +73 -93
  90. msprobe/core/monitor/db_utils.py +140 -205
  91. msprobe/core/monitor/utils.py +18 -17
  92. msprobe/core/monitor_v2/__init__.py +20 -0
  93. msprobe/core/monitor_v2/base.py +83 -0
  94. msprobe/core/monitor_v2/cc.py +287 -0
  95. msprobe/core/monitor_v2/factory.py +81 -0
  96. msprobe/core/monitor_v2/module.py +201 -0
  97. msprobe/core/monitor_v2/optimizer.py +245 -0
  98. msprobe/core/monitor_v2/param.py +154 -0
  99. msprobe/core/monitor_v2/trainer.py +326 -0
  100. msprobe/core/monitor_v2/utils.py +122 -0
  101. msprobe/core/monitor_v2/weight_grad.py +419 -0
  102. msprobe/core/monitor_v2/writer.py +162 -0
  103. msprobe/core/overflow_check/abnormal_scene.py +12 -11
  104. msprobe/core/overflow_check/api_info.py +12 -11
  105. msprobe/core/overflow_check/checker.py +12 -11
  106. msprobe/core/overflow_check/filter.py +13 -11
  107. msprobe/core/overflow_check/level.py +12 -11
  108. msprobe/core/overflow_check/utils.py +12 -11
  109. msprobe/core/single_save/single_comparator.py +12 -11
  110. msprobe/core/single_save/single_saver.py +12 -11
  111. msprobe/infer/__init__.py +16 -0
  112. msprobe/infer/offline/__init__.py +16 -0
  113. msprobe/infer/offline/compare/__init__.py +16 -0
  114. msprobe/infer/offline/compare/msquickcmp/__init__.py +16 -0
  115. msprobe/infer/offline/compare/msquickcmp/adapter_cli/__init__.py +16 -0
  116. msprobe/infer/offline/compare/msquickcmp/adapter_cli/args_adapter.py +46 -0
  117. msprobe/infer/offline/compare/msquickcmp/atc/__init__.py +16 -0
  118. msprobe/infer/offline/compare/msquickcmp/atc/atc_utils.py +98 -0
  119. msprobe/infer/offline/compare/msquickcmp/cmp_process.py +328 -0
  120. msprobe/infer/offline/compare/msquickcmp/common/__init__.py +16 -0
  121. msprobe/infer/offline/compare/msquickcmp/common/args_check.py +112 -0
  122. msprobe/infer/offline/compare/msquickcmp/common/convert.py +74 -0
  123. msprobe/infer/offline/compare/msquickcmp/common/dump_data.py +121 -0
  124. msprobe/infer/offline/compare/msquickcmp/common/dynamic_argument_bean.py +39 -0
  125. msprobe/infer/offline/compare/msquickcmp/common/utils.py +669 -0
  126. msprobe/infer/offline/compare/msquickcmp/config.ini +6 -0
  127. msprobe/infer/offline/compare/msquickcmp/dump/__init__.py +16 -0
  128. msprobe/infer/offline/compare/msquickcmp/dump/args_adapter.py +50 -0
  129. msprobe/infer/offline/compare/msquickcmp/dump/dump_process.py +91 -0
  130. msprobe/infer/offline/compare/msquickcmp/install_aclruntime_aisbench.sh +180 -0
  131. msprobe/infer/offline/compare/msquickcmp/main.py +199 -0
  132. msprobe/infer/offline/compare/msquickcmp/net_compare/__init__.py +16 -0
  133. msprobe/infer/offline/compare/msquickcmp/net_compare/net_compare.py +277 -0
  134. msprobe/infer/offline/compare/msquickcmp/npu/__init__.py +16 -0
  135. msprobe/infer/offline/compare/msquickcmp/npu/npu_dump_data.py +558 -0
  136. msprobe/infer/offline/compare/msquickcmp/npu/om_parser.py +416 -0
  137. msprobe/infer/offline/compare/msquickcmp/onnx_model/__init__.py +16 -0
  138. msprobe/infer/offline/compare/msquickcmp/onnx_model/onnx_dump_data.py +374 -0
  139. msprobe/infer/utils/__init__.py +15 -0
  140. msprobe/infer/utils/acc_cmp.py +94 -0
  141. msprobe/infer/utils/check/__init__.py +37 -0
  142. msprobe/infer/utils/check/args_checker.py +35 -0
  143. msprobe/infer/utils/check/checker.py +227 -0
  144. msprobe/infer/utils/check/dict_checker.py +78 -0
  145. msprobe/infer/utils/check/func_wrapper.py +96 -0
  146. msprobe/infer/utils/check/list_checker.py +56 -0
  147. msprobe/infer/utils/check/number_checker.py +64 -0
  148. msprobe/infer/utils/check/obj_checker.py +41 -0
  149. msprobe/infer/utils/check/path_checker.py +249 -0
  150. msprobe/infer/utils/check/rule.py +126 -0
  151. msprobe/infer/utils/check/string_checker.py +66 -0
  152. msprobe/infer/utils/cmp_algorithm.py +261 -0
  153. msprobe/infer/utils/constants.py +112 -0
  154. msprobe/infer/utils/file_open_check.py +337 -0
  155. msprobe/infer/utils/util.py +177 -0
  156. msprobe/mindspore/__init__.py +14 -13
  157. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +14 -13
  158. msprobe/mindspore/api_accuracy_checker/api_info.py +12 -11
  159. msprobe/mindspore/api_accuracy_checker/api_runner.py +12 -11
  160. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +12 -11
  161. msprobe/mindspore/api_accuracy_checker/bench_functions/flash_attention_score.py +12 -11
  162. msprobe/mindspore/api_accuracy_checker/bench_functions/fusion_operator.py +12 -11
  163. msprobe/mindspore/api_accuracy_checker/checker_support_api.yaml +12 -11
  164. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +15 -14
  165. msprobe/mindspore/api_accuracy_checker/compute_element.py +12 -11
  166. msprobe/mindspore/api_accuracy_checker/data_manager.py +13 -11
  167. msprobe/mindspore/api_accuracy_checker/main.py +12 -11
  168. msprobe/mindspore/api_accuracy_checker/multi_api_accuracy_checker.py +14 -12
  169. msprobe/mindspore/api_accuracy_checker/multi_data_manager.py +13 -11
  170. msprobe/mindspore/api_accuracy_checker/torch_mindtorch_importer.py +12 -11
  171. msprobe/mindspore/api_accuracy_checker/type_mapping.py +12 -11
  172. msprobe/mindspore/api_accuracy_checker/utils.py +12 -11
  173. msprobe/mindspore/common/const.py +15 -74
  174. msprobe/mindspore/common/log.py +12 -11
  175. msprobe/mindspore/common/utils.py +30 -15
  176. msprobe/mindspore/compare/common_dir_compare.py +21 -23
  177. msprobe/mindspore/compare/distributed_compare.py +18 -16
  178. msprobe/mindspore/compare/ms_compare.py +14 -14
  179. msprobe/mindspore/compare/ms_graph_compare.py +26 -20
  180. msprobe/mindspore/compare/utils.py +14 -12
  181. msprobe/mindspore/{cell_processor.py → dump/cell_processor.py} +15 -14
  182. msprobe/mindspore/{debugger → dump/debugger}/debugger_config.py +12 -30
  183. msprobe/mindspore/{debugger → dump/debugger}/precision_debugger.py +43 -45
  184. msprobe/mindspore/dump/{cell_dump_process.py → dump_processor/cell_dump_process.py} +31 -17
  185. msprobe/mindspore/dump/{cell_dump_with_insert_gradient.py → dump_processor/cell_dump_with_insert_gradient.py} +18 -14
  186. msprobe/mindspore/dump/{dump_tool_factory.py → dump_processor/dump_tool_factory.py} +16 -15
  187. msprobe/mindspore/dump/{graph_mode_cell_dump.py → dump_processor/graph_mode_cell_dump.py} +16 -15
  188. msprobe/mindspore/dump/{graph_tensor_dump.py → dump_processor/graph_tensor_dump.py} +134 -133
  189. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/api_register.py +15 -14
  190. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/hook_cell.py +12 -11
  191. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/ms_hook_manager.py +47 -20
  192. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/primitive_hooks.py +14 -13
  193. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/support_wrap_ops.yaml +13 -11
  194. msprobe/mindspore/dump/{jit_dump.py → dump_processor/jit_dump.py} +14 -13
  195. msprobe/mindspore/dump/{kernel_graph_dump.py → dump_processor/kernel_graph_dump.py} +13 -12
  196. msprobe/mindspore/dump/{kernel_kbyk_dump.py → dump_processor/kernel_kbyk_dump.py} +13 -12
  197. msprobe/mindspore/{exception_dump → dump/exception_dump}/exception_dump_tool_factory.py +14 -13
  198. msprobe/mindspore/{exception_dump → dump/exception_dump}/kernel_graph_exception_dump.py +13 -12
  199. msprobe/mindspore/{mindspore_service.py → dump/mindspore_service.py} +18 -17
  200. msprobe/mindspore/dump/mindtorch/__init__.py +19 -0
  201. msprobe/mindspore/dump/ms_config.py +105 -0
  202. msprobe/mindspore/{overflow_check → dump/overflow_check}/kernel_graph_overflow_check.py +13 -12
  203. msprobe/mindspore/{overflow_check → dump/overflow_check}/overflow_check_tool_factory.py +14 -13
  204. msprobe/mindspore/dump/task_handler_factory.py +43 -0
  205. msprobe/mindspore/monitor/common_func.py +12 -11
  206. msprobe/mindspore/monitor/data_writers.py +12 -11
  207. msprobe/mindspore/monitor/distributed/wrap_distributed.py +93 -39
  208. msprobe/mindspore/monitor/features.py +12 -11
  209. msprobe/mindspore/monitor/module_hook.py +19 -22
  210. msprobe/mindspore/monitor/optimizer_collect.py +29 -25
  211. msprobe/mindspore/monitor/utils.py +13 -11
  212. msprobe/msaccucmp/advisor/__init__.py +16 -0
  213. msprobe/msaccucmp/advisor/advisor_const.py +65 -0
  214. msprobe/msaccucmp/advisor/advisor_result.py +73 -0
  215. msprobe/msaccucmp/advisor/compare_advisor.py +99 -0
  216. msprobe/msaccucmp/advisor/input_advisor.py +66 -0
  217. msprobe/msaccucmp/advisor/node_advisor.py +68 -0
  218. msprobe/msaccucmp/advisor/overflow_advisor.py +58 -0
  219. msprobe/msaccucmp/algorithm_manager/__init__.py +16 -0
  220. msprobe/msaccucmp/algorithm_manager/algorithm_manager.py +464 -0
  221. msprobe/msaccucmp/algorithm_manager/algorithm_parameter.py +42 -0
  222. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_AccumulatedRelativeError.py +46 -0
  223. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_CosineSimilarity.py +58 -0
  224. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_KullbackLeiblerDivergence.py +84 -0
  225. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MaxAbsoluteError.py +41 -0
  226. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MaxRelativeError.py +46 -0
  227. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MeanAbsoluteError.py +41 -0
  228. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MeanRelativeError.py +46 -0
  229. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_RelativeEuclideanDistance.py +46 -0
  230. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_RootMeanSquareError.py +40 -0
  231. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_StandardDeviation.py +47 -0
  232. msprobe/msaccucmp/cmp_utils/__init__.py +16 -0
  233. msprobe/msaccucmp/cmp_utils/common.py +113 -0
  234. msprobe/msaccucmp/cmp_utils/constant/__init__.py +16 -0
  235. msprobe/msaccucmp/cmp_utils/constant/compare_error.py +81 -0
  236. msprobe/msaccucmp/cmp_utils/constant/const_manager.py +530 -0
  237. msprobe/msaccucmp/cmp_utils/file_utils.py +497 -0
  238. msprobe/msaccucmp/cmp_utils/log.py +257 -0
  239. msprobe/msaccucmp/cmp_utils/multi_process/__init__.py +16 -0
  240. msprobe/msaccucmp/cmp_utils/multi_process/multi_convert_process.py +140 -0
  241. msprobe/msaccucmp/cmp_utils/multi_process/progress.py +78 -0
  242. msprobe/msaccucmp/cmp_utils/path_check.py +274 -0
  243. msprobe/msaccucmp/cmp_utils/reg_manager.py +98 -0
  244. msprobe/msaccucmp/cmp_utils/tlv_parse.py +279 -0
  245. msprobe/msaccucmp/cmp_utils/utils.py +356 -0
  246. msprobe/msaccucmp/cmp_utils/utils_type.py +63 -0
  247. msprobe/msaccucmp/compare_vector.py +48 -0
  248. msprobe/msaccucmp/conversion/__init__.py +16 -0
  249. msprobe/msaccucmp/conversion/data_conversion.py +277 -0
  250. msprobe/msaccucmp/conversion/dtype_conversion.py +99 -0
  251. msprobe/msaccucmp/conversion/shape_format_conversion.py +477 -0
  252. msprobe/msaccucmp/conversion/tensor_conversion.py +369 -0
  253. msprobe/msaccucmp/dump_data_conversion.py +46 -0
  254. msprobe/msaccucmp/dump_parse/__init__.py +16 -0
  255. msprobe/msaccucmp/dump_parse/big_dump_data.py +317 -0
  256. msprobe/msaccucmp/dump_parse/dump.py +423 -0
  257. msprobe/msaccucmp/dump_parse/dump_data_object.py +322 -0
  258. msprobe/msaccucmp/dump_parse/dump_data_parser.py +436 -0
  259. msprobe/msaccucmp/dump_parse/dump_utils.py +246 -0
  260. msprobe/msaccucmp/dump_parse/ffts_parser.py +137 -0
  261. msprobe/msaccucmp/dump_parse/mapping.py +62 -0
  262. msprobe/msaccucmp/dump_parse/nano_dump_data.py +392 -0
  263. msprobe/msaccucmp/dump_parse/proto_dump_data.py +308 -0
  264. msprobe/msaccucmp/dump_parser.py +90 -0
  265. msprobe/msaccucmp/format_manager/__init__.py +16 -0
  266. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_NCHW.py +53 -0
  267. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_ND.py +52 -0
  268. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_NHWC.py +53 -0
  269. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_Z_to_HWCN.py +47 -0
  270. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_Z_to_NCHW.py +47 -0
  271. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_FRACTAL_Z.py +89 -0
  272. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_NCHW.py +37 -0
  273. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_NHWC.py +37 -0
  274. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_HWCN.py +43 -0
  275. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_NCHW.py +48 -0
  276. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_NHWC.py +43 -0
  277. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NCHW_to_FRACTAL_Z.py +87 -0
  278. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NCHW_to_NHWC.py +37 -0
  279. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NDC1HWC0_to_NCDHW.py +48 -0
  280. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NDC1HWC0_to_ND.py +44 -0
  281. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_FRACTAL_Z.py +87 -0
  282. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_HWCN.py +37 -0
  283. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_NCHW.py +37 -0
  284. msprobe/msaccucmp/format_manager/format_manager.py +307 -0
  285. msprobe/msaccucmp/inplace_layer_process.py +186 -0
  286. msprobe/msaccucmp/msaccucmp.py +532 -0
  287. msprobe/msaccucmp/mscmp_advisor.py +128 -0
  288. msprobe/msaccucmp/overflow/__init__.py +16 -0
  289. msprobe/msaccucmp/overflow/overflow_analyse.py +305 -0
  290. msprobe/msaccucmp/overflow/overflow_detection.py +143 -0
  291. msprobe/msaccucmp/pytorch_cmp/__init__.py +16 -0
  292. msprobe/msaccucmp/pytorch_cmp/compare_pytorch.py +389 -0
  293. msprobe/msaccucmp/pytorch_cmp/hdf5_parser.py +377 -0
  294. msprobe/msaccucmp/pytorch_cmp/pytorch_dump_data.py +461 -0
  295. msprobe/msaccucmp/shape_conversion.py +41 -0
  296. msprobe/msaccucmp/vector_cmp/__init__.py +16 -0
  297. msprobe/msaccucmp/vector_cmp/batch_compare.py +197 -0
  298. msprobe/msaccucmp/vector_cmp/compare_detail/__init__.py +16 -0
  299. msprobe/msaccucmp/vector_cmp/compare_detail/compare_detail.py +245 -0
  300. msprobe/msaccucmp/vector_cmp/compare_detail/detail.py +182 -0
  301. msprobe/msaccucmp/vector_cmp/compare_detail/detail_writer.py +580 -0
  302. msprobe/msaccucmp/vector_cmp/fusion_manager/__init__.py +16 -0
  303. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_fusion_op.py +588 -0
  304. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_npu_vs_npu.py +339 -0
  305. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_result.py +326 -0
  306. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_rule.py +156 -0
  307. msprobe/msaccucmp/vector_cmp/fusion_manager/fusion_op.py +204 -0
  308. msprobe/msaccucmp/vector_cmp/fusion_manager/fusion_rule_parser.py +635 -0
  309. msprobe/msaccucmp/vector_cmp/fusion_manager/quant_filter.py +187 -0
  310. msprobe/msaccucmp/vector_cmp/range_manager/__init__.py +16 -0
  311. msprobe/msaccucmp/vector_cmp/range_manager/range_manager.py +100 -0
  312. msprobe/msaccucmp/vector_cmp/range_manager/range_mode.py +94 -0
  313. msprobe/msaccucmp/vector_cmp/range_manager/select_mode.py +86 -0
  314. msprobe/msaccucmp/vector_cmp/vector_comparison.py +535 -0
  315. msprobe/msprobe.py +101 -130
  316. msprobe/overflow_check/__init__.py +15 -0
  317. msprobe/{nan_analyze → overflow_check}/analyzer.py +38 -27
  318. msprobe/{nan_analyze → overflow_check}/graph.py +28 -27
  319. msprobe/{nan_analyze → overflow_check}/utils.py +15 -14
  320. msprobe/pytorch/__init__.py +20 -14
  321. msprobe/pytorch/aclgraph_dump/__init__.py +45 -0
  322. msprobe/pytorch/aclgraph_dump/_meta.py +26 -0
  323. msprobe/pytorch/api_accuracy_checker/{run_ut/run_ut.py → acc_check/acc_check.py} +50 -45
  324. msprobe/pytorch/api_accuracy_checker/{run_ut/run_ut_utils.py → acc_check/acc_check_utils.py} +201 -30
  325. msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/data_generate.py +56 -16
  326. msprobe/pytorch/api_accuracy_checker/{run_ut/multi_run_ut.py → acc_check/multi_acc_check.py} +32 -47
  327. msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/run_overflow_check.py +19 -18
  328. msprobe/pytorch/api_accuracy_checker/common/config.py +22 -20
  329. msprobe/pytorch/api_accuracy_checker/common/utils.py +72 -13
  330. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +41 -11
  331. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +23 -14
  332. msprobe/pytorch/api_accuracy_checker/compare/compare.py +45 -32
  333. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +12 -11
  334. msprobe/pytorch/api_accuracy_checker/compare/compare_input.py +14 -12
  335. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +14 -12
  336. msprobe/pytorch/api_accuracy_checker/precision_standard/absolute_threshold.py +12 -11
  337. msprobe/pytorch/api_accuracy_checker/precision_standard/accumulative_error_compare.py +12 -11
  338. msprobe/pytorch/api_accuracy_checker/precision_standard/base_standard.py +21 -19
  339. msprobe/pytorch/api_accuracy_checker/precision_standard/benchmark_compare.py +14 -13
  340. msprobe/pytorch/api_accuracy_checker/precision_standard/binary_consistency.py +12 -11
  341. msprobe/pytorch/api_accuracy_checker/precision_standard/standard_config.py +60 -11
  342. msprobe/pytorch/api_accuracy_checker/precision_standard/standard_register.py +27 -16
  343. msprobe/pytorch/api_accuracy_checker/precision_standard/thousandth_standard.py +13 -11
  344. msprobe/pytorch/api_accuracy_checker/precision_standard/ulp_compare.py +39 -18
  345. msprobe/pytorch/bench_functions/__init__.py +12 -11
  346. msprobe/pytorch/bench_functions/apply_adam.py +12 -11
  347. msprobe/pytorch/bench_functions/apply_adam_w.py +12 -11
  348. msprobe/pytorch/bench_functions/confusion_transpose.py +12 -11
  349. msprobe/pytorch/bench_functions/fast_gelu.py +12 -11
  350. msprobe/pytorch/bench_functions/group_norm_silu.py +12 -11
  351. msprobe/pytorch/bench_functions/layer_norm_eval.py +12 -11
  352. msprobe/pytorch/bench_functions/linear.py +12 -11
  353. msprobe/pytorch/bench_functions/matmul_backward.py +12 -11
  354. msprobe/pytorch/bench_functions/mish.py +12 -11
  355. msprobe/pytorch/bench_functions/moe_gating_top_k_softmax.py +12 -11
  356. msprobe/pytorch/bench_functions/npu_fusion_attention.py +12 -11
  357. msprobe/pytorch/bench_functions/rms_norm.py +12 -11
  358. msprobe/pytorch/bench_functions/rotary_mul.py +12 -11
  359. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +12 -11
  360. msprobe/pytorch/bench_functions/sort_v2.py +12 -11
  361. msprobe/pytorch/bench_functions/swiglu.py +12 -11
  362. msprobe/pytorch/common/__init__.py +12 -11
  363. msprobe/pytorch/common/log.py +12 -11
  364. msprobe/pytorch/common/parse_json.py +12 -11
  365. msprobe/pytorch/common/utils.py +52 -19
  366. msprobe/pytorch/compare/distributed_compare.py +13 -13
  367. msprobe/pytorch/compare/match.py +12 -11
  368. msprobe/pytorch/compare/pt_compare.py +14 -20
  369. msprobe/pytorch/compare/pt_diff_analyze.py +12 -11
  370. msprobe/pytorch/compare/utils.py +12 -11
  371. msprobe/pytorch/{hook_module → dump/api_dump}/api_register.py +18 -16
  372. msprobe/pytorch/{hook_module → dump/api_dump}/hook_module.py +14 -13
  373. msprobe/pytorch/{hook_module → dump/api_dump}/pt_hook_manager.py +68 -23
  374. msprobe/pytorch/{hook_module → dump/api_dump}/register_optimizer_hook.py +13 -11
  375. msprobe/pytorch/{hook_module → dump/api_dump}/script_wrapper.py +17 -14
  376. msprobe/pytorch/{hook_module → dump/api_dump}/utils.py +12 -11
  377. msprobe/pytorch/{debugger → dump/debugger}/debugger_config.py +23 -38
  378. msprobe/pytorch/dump/debugger/precision_debugger.py +130 -0
  379. msprobe/pytorch/{function_factory.py → dump/function_factory.py} +12 -11
  380. msprobe/pytorch/dump/module_dump/hook_wrapper.py +17 -13
  381. msprobe/pytorch/dump/module_dump/module_dump.py +16 -15
  382. msprobe/pytorch/dump/module_dump/{module_processer.py → module_processor.py} +54 -42
  383. msprobe/pytorch/dump/pt_config.py +128 -0
  384. msprobe/pytorch/{pytorch_service.py → dump/pytorch_service.py} +22 -21
  385. msprobe/pytorch/monitor/csv2tb.py +13 -11
  386. msprobe/pytorch/monitor/data_writers.py +13 -11
  387. msprobe/pytorch/monitor/distributed/wrap_distributed.py +13 -11
  388. msprobe/pytorch/monitor/features.py +12 -11
  389. msprobe/pytorch/monitor/module_hook.py +67 -59
  390. msprobe/pytorch/monitor/module_metric.py +13 -11
  391. msprobe/pytorch/monitor/optimizer_collect.py +37 -35
  392. msprobe/pytorch/monitor/utils.py +13 -11
  393. msprobe/pytorch/monitor/visualizer.py +12 -11
  394. msprobe/pytorch/torchair_dump/__init__.py +17 -0
  395. msprobe/pytorch/torchair_dump/torchair_dump.py +114 -0
  396. msprobe/scripts/atb/config_example.json +10 -0
  397. msprobe/scripts/atb/load_atb_probe.sh +101 -0
  398. msprobe/scripts/atb/unload_atb_probe.sh +27 -0
  399. msprobe/scripts/build_msaccucmp.sh +186 -0
  400. msprobe/scripts/conf/help.info +6 -0
  401. msprobe/scripts/conf/version.info +3 -0
  402. msprobe/scripts/run_script/common.sh +538 -0
  403. msprobe/scripts/run_script/main_msaccucmp.sh +232 -0
  404. msprobe/visualization/__init__.py +12 -11
  405. msprobe/visualization/builder/__init__.py +12 -11
  406. msprobe/visualization/builder/graph_builder.py +45 -30
  407. msprobe/visualization/builder/graph_merger.py +53 -32
  408. msprobe/visualization/builder/msprobe_adapter.py +34 -44
  409. msprobe/visualization/compare/__init__.py +12 -11
  410. msprobe/visualization/compare/graph_comparator.py +63 -51
  411. msprobe/visualization/compare/mode_adapter.py +28 -113
  412. msprobe/visualization/db_utils.py +133 -22
  413. msprobe/visualization/graph/__init__.py +12 -11
  414. msprobe/visualization/graph/base_node.py +15 -27
  415. msprobe/visualization/graph/distributed_analyzer.py +97 -40
  416. msprobe/visualization/graph/graph.py +14 -16
  417. msprobe/visualization/graph/node_colors.py +34 -31
  418. msprobe/visualization/graph/node_op.py +12 -11
  419. msprobe/visualization/graph_service.py +580 -205
  420. msprobe/visualization/utils.py +278 -31
  421. tb_graph_ascend/secure_build.py +175 -0
  422. tb_graph_ascend/server/__init__.py +15 -0
  423. tb_graph_ascend/server/app/__init__.py +15 -0
  424. tb_graph_ascend/server/app/model/__init__.py +15 -0
  425. tb_graph_ascend/server/app/model/hierarchy.py +348 -0
  426. tb_graph_ascend/server/app/model/layout_hierarchy_model.py +69 -0
  427. tb_graph_ascend/server/app/model/match_nodes_model.py +573 -0
  428. tb_graph_ascend/server/app/repositories/__init__.py +15 -0
  429. tb_graph_ascend/server/app/repositories/graph_repo_base.py +32 -0
  430. tb_graph_ascend/server/app/repositories/graph_repo_db.py +879 -0
  431. tb_graph_ascend/server/app/repositories/graph_repo_vis.py +83 -0
  432. tb_graph_ascend/server/app/service/__init__.py +18 -0
  433. tb_graph_ascend/server/app/service/graph_service_base.py +158 -0
  434. tb_graph_ascend/server/app/service/graph_service_db.py +438 -0
  435. tb_graph_ascend/server/app/service/graph_service_factory.py +54 -0
  436. tb_graph_ascend/server/app/service/graph_service_vis.py +480 -0
  437. tb_graph_ascend/server/app/utils/__init__.py +15 -0
  438. tb_graph_ascend/server/app/utils/constant.py +80 -0
  439. tb_graph_ascend/server/app/utils/file_check_wrapper.py +46 -0
  440. tb_graph_ascend/server/app/utils/global_state.py +95 -0
  441. tb_graph_ascend/server/app/utils/graph_utils.py +661 -0
  442. tb_graph_ascend/server/app/utils/i18n.py +153 -0
  443. tb_graph_ascend/server/app/utils/request_method.py +46 -0
  444. tb_graph_ascend/server/app/views/__init__.py +15 -0
  445. tb_graph_ascend/server/app/views/graph_views.py +304 -0
  446. tb_graph_ascend/server/plugin.py +108 -0
  447. tb_graph_ascend/server/static/index.html +9250 -0
  448. tb_graph_ascend/server/static/index.js +21 -0
  449. tb_graph_ascend/setup.py +57 -0
  450. mindstudio_probe-8.3.3.dist-info/LICENSE +0 -201
  451. mindstudio_probe-8.3.3.dist-info/RECORD +0 -491
  452. mindstudio_probe-8.3.3.dist-info/entry_points.txt +0 -2
  453. mindstudio_probe-8.3.3.dist-info/top_level.txt +0 -1
  454. msprobe/CMakeLists.txt +0 -5
  455. msprobe/README.md +0 -203
  456. msprobe/core/advisor/advisor.py +0 -129
  457. msprobe/core/advisor/advisor_const.py +0 -58
  458. msprobe/core/advisor/advisor_result.py +0 -58
  459. msprobe/core/compare/find_first/data_processor.py +0 -35
  460. msprobe/core/compare/highlight.py +0 -390
  461. msprobe/core/data_dump/data_collector.py +0 -356
  462. msprobe/core/grad_probe/constant.py +0 -90
  463. msprobe/core/grad_probe/grad_compare.py +0 -187
  464. msprobe/core/grad_probe/utils.py +0 -105
  465. msprobe/core/kernel_dump/kernel_config.py +0 -33
  466. msprobe/docs/01.installation.md +0 -250
  467. msprobe/docs/02.config_introduction.md +0 -221
  468. msprobe/docs/03.config_examples.md +0 -281
  469. msprobe/docs/04.kernel_dump_PyTorch.md +0 -73
  470. msprobe/docs/05.data_dump_PyTorch.md +0 -518
  471. msprobe/docs/06.data_dump_MindSpore.md +0 -618
  472. msprobe/docs/07.accuracy_checker_PyTorch.md +0 -310
  473. msprobe/docs/09.accuracy_checker_MindSpore.md +0 -120
  474. msprobe/docs/10.accuracy_compare_PyTorch.md +0 -637
  475. msprobe/docs/11.accuracy_compare_MindSpore.md +0 -769
  476. msprobe/docs/12.overflow_check_PyTorch.md +0 -82
  477. msprobe/docs/13.overflow_check_MindSpore.md +0 -33
  478. msprobe/docs/14.data_parse_PyTorch.md +0 -282
  479. msprobe/docs/15.free_benchmarking_PyTorch.md +0 -169
  480. msprobe/docs/16.free_benchmarking_MindSpore.md +0 -159
  481. msprobe/docs/17.grad_probe.md +0 -205
  482. msprobe/docs/18.online_dispatch.md +0 -89
  483. msprobe/docs/19.monitor.md +0 -753
  484. msprobe/docs/20.monitor_performance_baseline.md +0 -52
  485. msprobe/docs/21.visualization_PyTorch.md +0 -519
  486. msprobe/docs/22.visualization_MindSpore.md +0 -515
  487. msprobe/docs/23.generate_operator_PyTorch.md +0 -107
  488. msprobe/docs/24.code_mapping_Mindspore.md +0 -29
  489. msprobe/docs/25.tool_function_introduction.md +0 -29
  490. msprobe/docs/26.data_dump_PyTorch_baseline.md +0 -48
  491. msprobe/docs/27.dump_json_instruction.md +0 -795
  492. msprobe/docs/28.debugger_save_instruction.md +0 -288
  493. msprobe/docs/28.kernel_dump_MindSpore.md +0 -69
  494. msprobe/docs/29.data_dump_MSAdapter.md +0 -235
  495. msprobe/docs/30.overflow_check_MSAdapter.md +0 -31
  496. msprobe/docs/31.config_check.md +0 -107
  497. msprobe/docs/32.ckpt_compare.md +0 -69
  498. msprobe/docs/33.generate_operator_MindSpore.md +0 -181
  499. msprobe/docs/34.RL_collect.md +0 -101
  500. msprobe/docs/35.nan_analyze.md +0 -73
  501. msprobe/docs/36.calculation_result_change.md +0 -75
  502. msprobe/docs/FAQ.md +0 -232
  503. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +0 -146
  504. msprobe/docs/accuracy_checker_MindSpore/accuracy_checker_MindSpore_baseline.md +0 -14
  505. msprobe/docs/data_dump_MindSpore/data_dump_MindSpore_baseline.md +0 -33
  506. msprobe/docs/data_dump_MindSpore/dynamic_graph_quick_start_example.md +0 -217
  507. msprobe/docs/img/BLOOM-7B_1.png +0 -0
  508. msprobe/docs/img/BLOOM-7B_2.png +0 -0
  509. msprobe/docs/img/BLOOM-7B_3.png +0 -0
  510. msprobe/docs/img/BLOOM-7B_4.png +0 -0
  511. msprobe/docs/img/GPT-3_1.png +0 -0
  512. msprobe/docs/img/GPT-3_2.png +0 -0
  513. msprobe/docs/img/GPT-3_3.png +0 -0
  514. msprobe/docs/img/GPT-3_4.png +0 -0
  515. msprobe/docs/img/GPT-3_5.png +0 -0
  516. msprobe/docs/img/GPT-3_6.png +0 -0
  517. msprobe/docs/img/GPT-3_7.png +0 -0
  518. msprobe/docs/img/GPT-3_8.png +0 -0
  519. msprobe/docs/img/YOLOV5S_1.png +0 -0
  520. msprobe/docs/img/YOLOV5S_2.png +0 -0
  521. msprobe/docs/img/accuracy_checking_details.png +0 -0
  522. msprobe/docs/img/accuracy_checking_result.png +0 -0
  523. msprobe/docs/img/api_precision_compare_details.png +0 -0
  524. msprobe/docs/img/api_precision_compare_result.png +0 -0
  525. msprobe/docs/img/auto_analyze_log.png +0 -0
  526. msprobe/docs/img/compare_result.png +0 -0
  527. msprobe/docs/img/compare_result_pkl.png +0 -0
  528. msprobe/docs/img/compare_result_pkl_md5.png.png +0 -0
  529. msprobe/docs/img/cpu_info.png +0 -0
  530. msprobe/docs/img/free_benchmark.png +0 -0
  531. msprobe/docs/img/free_benchmark_framework.png +0 -0
  532. msprobe/docs/img/grad_probe_image-1.png +0 -0
  533. msprobe/docs/img/grad_probe_image-2.png +0 -0
  534. msprobe/docs/img/grad_probe_image-3.png +0 -0
  535. msprobe/docs/img/grad_probe_image-4.png +0 -0
  536. msprobe/docs/img/grad_probe_image.png +0 -0
  537. msprobe/docs/img/merge_result.png +0 -0
  538. msprobe/docs/img/module_compare.png +0 -0
  539. msprobe/docs/img/monitor/cpu_info.png +0 -0
  540. msprobe/docs/img/monitor/step_count_per_record.png +0 -0
  541. msprobe/docs/img/ms_dump.png +0 -0
  542. msprobe/docs/img/ms_layer.png +0 -0
  543. msprobe/docs/img/pt_dump.png +0 -0
  544. msprobe/docs/img/save_compare_result_sample.png +0 -0
  545. msprobe/docs/img/visualization/fuzzy_match_ms.png +0 -0
  546. msprobe/docs/img/visualization/fuzzy_match_pt.png +0 -0
  547. msprobe/docs/img/visualization/proxy.png +0 -0
  548. msprobe/docs/img/visualization/tensorboard_1.png +0 -0
  549. msprobe/docs/img/visualization/tensorboard_2.png +0 -0
  550. msprobe/docs/img/visualization/vis_browser_1.png +0 -0
  551. msprobe/docs/img/visualization/vis_browser_2.png +0 -0
  552. msprobe/docs/img/visualization/vis_match_info.png +0 -0
  553. msprobe/docs/img/visualization/vis_precision_info.png +0 -0
  554. msprobe/docs/img/visualization/vis_search_info.png +0 -0
  555. msprobe/docs/img/visualization/vis_show_info.png +0 -0
  556. msprobe/docs/img/visualization/vis_showcase.png +0 -0
  557. msprobe/docs/img/visualization/vis_unmatch_info.png +0 -0
  558. msprobe/docs/visualization/GPTModel.png +0 -0
  559. msprobe/docs/visualization/ParallelMLP.png +0 -0
  560. msprobe/docs/visualization/layer_mapping_example.md +0 -132
  561. msprobe/docs/visualization/mapping.png +0 -0
  562. msprobe/docs/visualization/mapping1.png +0 -0
  563. msprobe/docs/visualization/mindspeed_llamafactoary_img/1.png +0 -0
  564. msprobe/docs/visualization/mindspeed_llamafactoary_img/2.png +0 -0
  565. msprobe/docs/visualization/mindspeed_llamafactoary_img/3.png +0 -0
  566. msprobe/docs/visualization/mindspeed_llamafactoary_img/4.png +0 -0
  567. msprobe/docs/visualization/mindspeed_llamafactoary_img/5.png +0 -0
  568. msprobe/docs/visualization/mindspeed_llamafactoary_img/6.png +0 -0
  569. msprobe/docs/visualization/mindspeed_llamafactoary_img/7.png +0 -0
  570. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory-qwen25vl.txt +0 -59
  571. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory1.png +0 -0
  572. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory2.png +0 -0
  573. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed-mm-qwen25vl.txt +0 -80
  574. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed1.png +0 -0
  575. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed2.png +0 -0
  576. msprobe/docs/visualization/mindspeed_llamafactory_mapping.md +0 -330
  577. msprobe/docs/visualization/module_name.png +0 -0
  578. msprobe/docs/visualization/module_name1.png +0 -0
  579. msprobe/docs/visualization/no_mapping.png +0 -0
  580. msprobe/docs/visualization/no_mapping1.png +0 -0
  581. msprobe/docs/visualization/no_mapping_analyze.png +0 -0
  582. msprobe/docs/visualization/top_layer.png +0 -0
  583. msprobe/mindspore/api_accuracy_checker/generate_op_script/op_generator.py +0 -460
  584. msprobe/mindspore/api_accuracy_checker/generate_op_script/operator_replication.template +0 -2081
  585. msprobe/mindspore/code_mapping/bind.py +0 -283
  586. msprobe/mindspore/code_mapping/cmd_parser.py +0 -40
  587. msprobe/mindspore/code_mapping/graph.py +0 -49
  588. msprobe/mindspore/code_mapping/graph_parser.py +0 -211
  589. msprobe/mindspore/code_mapping/main.py +0 -24
  590. msprobe/mindspore/code_mapping/processor.py +0 -34
  591. msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp +0 -111
  592. msprobe/mindspore/dym_loader/hook_dynamic_loader.h +0 -52
  593. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +0 -257
  594. msprobe/mindspore/free_benchmark/common/config.py +0 -27
  595. msprobe/mindspore/free_benchmark/common/handler_params.py +0 -31
  596. msprobe/mindspore/free_benchmark/common/utils.py +0 -100
  597. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +0 -638
  598. msprobe/mindspore/free_benchmark/handler/base_handler.py +0 -105
  599. msprobe/mindspore/free_benchmark/handler/check_handler.py +0 -55
  600. msprobe/mindspore/free_benchmark/handler/fix_handler.py +0 -51
  601. msprobe/mindspore/free_benchmark/handler/handler_factory.py +0 -36
  602. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +0 -82
  603. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +0 -45
  604. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +0 -78
  605. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +0 -77
  606. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +0 -56
  607. msprobe/mindspore/free_benchmark/perturbation/no_change.py +0 -27
  608. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +0 -46
  609. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +0 -51
  610. msprobe/mindspore/grad_probe/global_context.py +0 -127
  611. msprobe/mindspore/grad_probe/grad_analyzer.py +0 -260
  612. msprobe/mindspore/grad_probe/grad_monitor.py +0 -42
  613. msprobe/mindspore/grad_probe/grad_stat_csv.py +0 -161
  614. msprobe/mindspore/grad_probe/hook.py +0 -115
  615. msprobe/mindspore/grad_probe/utils.py +0 -43
  616. msprobe/mindspore/mindtorch/__init__.py +0 -18
  617. msprobe/mindspore/ms_config.py +0 -153
  618. msprobe/mindspore/task_handler_factory.py +0 -44
  619. msprobe/nan_analyze/__init__.py +0 -14
  620. msprobe/pytorch/api_accuracy_checker/generate_op_script/config_op.json +0 -9
  621. msprobe/pytorch/api_accuracy_checker/generate_op_script/op_generator.py +0 -480
  622. msprobe/pytorch/api_accuracy_checker/generate_op_script/operator_replication.template +0 -567
  623. msprobe/pytorch/debugger/precision_debugger.py +0 -181
  624. msprobe/pytorch/free_benchmark/__init__.py +0 -23
  625. msprobe/pytorch/free_benchmark/common/constant.py +0 -85
  626. msprobe/pytorch/free_benchmark/common/counter.py +0 -87
  627. msprobe/pytorch/free_benchmark/common/enums.py +0 -80
  628. msprobe/pytorch/free_benchmark/common/params.py +0 -152
  629. msprobe/pytorch/free_benchmark/common/utils.py +0 -143
  630. msprobe/pytorch/free_benchmark/compare/grad_saver.py +0 -215
  631. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +0 -121
  632. msprobe/pytorch/free_benchmark/main.py +0 -123
  633. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +0 -28
  634. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +0 -56
  635. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +0 -107
  636. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +0 -121
  637. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +0 -89
  638. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +0 -87
  639. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +0 -43
  640. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +0 -60
  641. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +0 -34
  642. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +0 -252
  643. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +0 -54
  644. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +0 -40
  645. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +0 -45
  646. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +0 -181
  647. msprobe/pytorch/grad_probe/__init__.py +0 -0
  648. msprobe/pytorch/grad_probe/grad_monitor.py +0 -108
  649. msprobe/pytorch/grad_probe/grad_stat_csv.py +0 -160
  650. msprobe/pytorch/hook_module/__init__.py +0 -16
  651. msprobe/pytorch/hook_module/wrap_aten.py +0 -111
  652. msprobe/pytorch/online_dispatch/__init__.py +0 -19
  653. msprobe/pytorch/online_dispatch/compare.py +0 -224
  654. msprobe/pytorch/online_dispatch/dispatch.py +0 -332
  655. msprobe/pytorch/online_dispatch/dump_compare.py +0 -179
  656. msprobe/pytorch/online_dispatch/single_compare.py +0 -412
  657. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +0 -58
  658. msprobe/pytorch/online_dispatch/utils.py +0 -158
  659. msprobe/pytorch/parse_tool/__init__.py +0 -0
  660. msprobe/pytorch/parse_tool/cli.py +0 -31
  661. msprobe/pytorch/parse_tool/lib/__init__.py +0 -0
  662. msprobe/pytorch/parse_tool/lib/compare.py +0 -253
  663. msprobe/pytorch/parse_tool/lib/config.py +0 -50
  664. msprobe/pytorch/parse_tool/lib/file_desc.py +0 -45
  665. msprobe/pytorch/parse_tool/lib/interactive_cli.py +0 -97
  666. msprobe/pytorch/parse_tool/lib/parse_exception.py +0 -54
  667. msprobe/pytorch/parse_tool/lib/parse_tool.py +0 -161
  668. msprobe/pytorch/parse_tool/lib/utils.py +0 -299
  669. msprobe/pytorch/parse_tool/lib/visualization.py +0 -85
  670. msprobe/pytorch/pt_config.py +0 -299
  671. /msprobe/core/{grad_probe → dump}/__init__.py +0 -0
  672. /msprobe/{mindspore/code_mapping → core/dump/api_dump}/__init__.py +0 -0
  673. /msprobe/{mindspore/debugger → core/dump/data_dump}/__init__.py +0 -0
  674. /msprobe/{mindspore/exception_dump → core/dump/data_dump/data_processor}/__init__.py +0 -0
  675. /msprobe/{mindspore/free_benchmark → core/dump/debugger}/__init__.py +0 -0
  676. /msprobe/{mindspore/free_benchmark/common → core/dump/kernel_dump}/__init__.py +0 -0
  677. /msprobe/mindspore/{free_benchmark/handler → dump/debugger}/__init__.py +0 -0
  678. /msprobe/mindspore/{grad_probe → dump/dump_processor}/__init__.py +0 -0
  679. /msprobe/mindspore/{overflow_check → dump/exception_dump}/__init__.py +0 -0
  680. /msprobe/mindspore/{mindtorch → dump/mindtorch}/mindtorch_adaptor.py +0 -0
  681. /msprobe/{pytorch/api_accuracy_checker/run_ut → mindspore/dump/overflow_check}/__init__.py +0 -0
  682. /msprobe/{pytorch/debugger → mindspore/monitor}/__init__.py +0 -0
  683. /msprobe/{pytorch/free_benchmark/common → msaccucmp}/__init__.py +0 -0
  684. /msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/.keep +0 -0
  685. /msprobe/pytorch/{free_benchmark/perturbed_layers → api_accuracy_checker/acc_check}/__init__.py +0 -0
  686. /msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/torch_ut_setting.json +0 -0
  687. /msprobe/pytorch/{free_benchmark/perturbed_layers/npu → dump/api_dump}/__init__.py +0 -0
  688. /msprobe/pytorch/{hook_module → dump/api_dump}/support_wrap_ops.yaml +0 -0
  689. /msprobe/pytorch/{free_benchmark/result_handlers → dump/debugger}/__init__.py +0 -0
@@ -1,299 +0,0 @@
1
- # Copyright (c) 2024-2025, 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
- import os
17
- import re
18
- import subprocess
19
- import sys
20
- import time
21
- import zlib
22
- from collections import namedtuple
23
-
24
- import numpy as np
25
- from msprobe.core.common.const import FileCheckConst
26
- from msprobe.core.common.file_utils import change_mode, check_other_user_writable, \
27
- check_path_executable, check_path_owner_consistent
28
- from msprobe.core.common.file_utils import check_file_or_directory_path, remove_path, check_file_type, os_walk_for_files
29
- from msprobe.pytorch.common.log import logger
30
- from msprobe.pytorch.parse_tool.lib.config import Const
31
- from msprobe.pytorch.parse_tool.lib.file_desc import DumpDecodeFileDesc, FileDesc
32
- from msprobe.pytorch.parse_tool.lib.parse_exception import ParseException
33
-
34
- try:
35
- from rich.traceback import install
36
- from rich.panel import Panel
37
- from rich.table import Table
38
- from rich import print as rich_print
39
- from rich.columns import Columns
40
- except ImportError as err:
41
- install = None
42
- Panel = None
43
- Table = None
44
- Columns = None
45
- rich_print = None
46
- logger.warning(
47
- "Failed to import rich, Some features may not be available. Please run 'pip install rich' to fix it.")
48
-
49
-
50
- class Util:
51
- def __init__(self):
52
- self.ms_accu_cmp = None
53
- self.log = logger
54
- self.python = sys.executable
55
-
56
- @staticmethod
57
- def print(content):
58
- rich_print(content)
59
-
60
- @staticmethod
61
- def path_strip(path):
62
- return path.strip("'").strip('"')
63
-
64
- @staticmethod
65
- def check_executable_file(path):
66
- check_path_owner_consistent(path)
67
- check_other_user_writable(path)
68
- check_path_executable(path)
69
-
70
- @staticmethod
71
- def get_subdir_count(directory):
72
- subdir_count = 0
73
- check_file_or_directory_path(directory, isdir=True)
74
- for _, dirs, _ in os.walk(directory):
75
- subdir_count += len(dirs)
76
- break
77
- return subdir_count
78
-
79
- @staticmethod
80
- def get_subfiles_count(directory):
81
- files = os_walk_for_files(directory, Const.MAX_TRAVERSAL_DEPTH)
82
- return len(files)
83
-
84
- @staticmethod
85
- def get_sorted_subdirectories_names(directory):
86
- subdirectories = []
87
- for item in os.listdir(directory):
88
- item_path = os.path.join(directory, item)
89
- if os.path.isdir(item_path):
90
- subdirectories.append(item)
91
- return sorted(subdirectories)
92
-
93
- @staticmethod
94
- def get_sorted_files_names(directory):
95
- files = []
96
- for item in os.listdir(directory):
97
- item_path = os.path.join(directory, item)
98
- if os.path.isfile(item_path):
99
- files.append(item)
100
- return sorted(files)
101
-
102
- @staticmethod
103
- def check_npy_files_valid_in_dir(dir_path):
104
- for file_name in os.listdir(dir_path):
105
- file_path = os.path.join(dir_path, file_name)
106
- check_file_or_directory_path(file_path)
107
- _, file_extension = os.path.splitext(file_path)
108
- if not file_extension == '.npy':
109
- return False
110
- return True
111
-
112
- @staticmethod
113
- def get_md5_for_numpy(obj):
114
- np_bytes = obj.tobytes()
115
- md5_crc = zlib.crc32(np_bytes)
116
- return f"{md5_crc:08x}"
117
-
118
- @staticmethod
119
- def deal_with_dir_or_file_inconsistency(output_path):
120
- logger.warning(f"Trying to delete {output_path}")
121
- remove_path(output_path)
122
- raise ParseException("Inconsistent directory structure or file.")
123
-
124
- @staticmethod
125
- def deal_with_value_if_has_zero(data):
126
- if data.dtype in Const.FLOAT_TYPE:
127
- zero_mask = (data == 0)
128
- # 给0的地方加上eps防止除0
129
- data[zero_mask] += np.finfo(data.dtype).eps
130
- else:
131
- # int type + float eps 会报错,所以这里要强转
132
- data = data.astype(float)
133
- zero_mask = (data == 0)
134
- data[zero_mask] += np.finfo(float).eps
135
- return data
136
-
137
- @staticmethod
138
- def dir_contains_only(path, endfix):
139
- files = os_walk_for_files(path, Const.MAX_TRAVERSAL_DEPTH)
140
- for file in files:
141
- if not file['file'].endswith(endfix):
142
- return False
143
- return True
144
-
145
- @staticmethod
146
- def localtime_str():
147
- return time.strftime("%Y%m%d%H%M%S", time.localtime())
148
-
149
- @staticmethod
150
- def change_filemode_safe(path):
151
- change_mode(path, FileCheckConst.DATA_FILE_AUTHORITY)
152
-
153
- @staticmethod
154
- def _gen_npu_dump_convert_file_info(name, match, dir_path):
155
- return DumpDecodeFileDesc(name, dir_path, int(match.groups()[-4]), op_name=match.group(2),
156
- op_type=match.group(1), task_id=int(match.group(3)), anchor_type=match.groups()[-3],
157
- anchor_idx=int(match.groups()[-2]))
158
-
159
- @staticmethod
160
- def _gen_numpy_file_info(name, math, dir_path):
161
- return FileDesc(name, dir_path)
162
-
163
- def execute_command(self, cmd):
164
- if not cmd:
165
- self.log.error("Commond is None")
166
- return -1
167
- self.log.info("[RUN CMD]: %s" % cmd)
168
- cmd = cmd.split(" ")
169
- complete_process = subprocess.run(cmd, shell=False)
170
- return complete_process.returncode
171
-
172
- def print_panel(self, content, title='', fit=True):
173
- if not Panel:
174
- self.print(content)
175
- return
176
- if fit:
177
- self.print(Panel.fit(content, title=title))
178
- else:
179
- self.print(Panel(content, title=title))
180
-
181
- def check_msaccucmp(self, target_file):
182
- if os.path.split(target_file)[-1] != Const.MS_ACCU_CMP_FILE_NAME:
183
- self.log.error(
184
- "Check msaccucmp failed in dir %s. This is not a correct msaccucmp file" % target_file)
185
- raise ParseException(ParseException.PARSE_MSACCUCMP_ERROR)
186
- result = subprocess.run(
187
- [self.python, target_file, "--help"], stdout=subprocess.PIPE, shell=False)
188
- if result.returncode == 0:
189
- self.log.info("Check [%s] success." % (target_file))
190
- else:
191
- self.log.error("Check msaccucmp failed in dir %s" % target_file)
192
- self.log.error("Please specify a valid msaccucmp.py path or install the cann package")
193
- raise ParseException(ParseException.PARSE_MSACCUCMP_ERROR)
194
- return target_file
195
-
196
- def gen_npy_info_txt(self, source_data):
197
- (shape, dtype, max_data, min_data, mean) = \
198
- self.npy_info(source_data)
199
- return \
200
- '[Shape: %s] [Dtype: %s] [Max: %s] [Min: %s] [Mean: %s]' % (shape, dtype, max_data, min_data, mean)
201
-
202
- def list_convert_files(self, path, external_pattern=""):
203
- return self.list_file_with_pattern(
204
- path, Const.OFFLINE_DUMP_CONVERT_PATTERN, external_pattern, self._gen_npu_dump_convert_file_info
205
- )
206
-
207
- def list_numpy_files(self, path, extern_pattern=''):
208
- return self.list_file_with_pattern(path, Const.NUMPY_PATTERN, extern_pattern,
209
- self._gen_numpy_file_info)
210
-
211
- def create_columns(self, content):
212
- if not Columns:
213
- self.log.error("No module named rich, please install it")
214
- raise ParseException(ParseException.PARSE_NO_MODULE_ERROR)
215
- return Columns(content)
216
-
217
- def create_table(self, title, columns):
218
- if not Table:
219
- self.log.error("No module named rich, please install it and restart parse tool")
220
- raise ParseException(ParseException.PARSE_NO_MODULE_ERROR)
221
- table = Table(title=title)
222
- for column_name in columns:
223
- table.add_column(column_name, overflow='fold')
224
- return table
225
-
226
- def check_path_valid(self, path):
227
- path = self.path_strip(path)
228
- if not path or not os.path.exists(path):
229
- self.log.error("The path does not exist.")
230
- raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR)
231
- isdir = check_file_type(path) == FileCheckConst.DIR
232
- check_file_or_directory_path(path, isdir=isdir)
233
- return True
234
-
235
- def check_files_in_path(self, path):
236
- if os.path.isdir(path) and len(os.listdir(path)) == 0:
237
- self.log.error("No files found in path.")
238
- raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR)
239
-
240
- def npy_info(self, source_data):
241
- if isinstance(source_data, np.ndarray):
242
- data = source_data
243
- else:
244
- self.log.error("Invalid data, data is not ndarray")
245
- raise ParseException(ParseException.PARSE_INVALID_DATA_ERROR)
246
- if data.dtype == 'object':
247
- self.log.error("Invalid data, data is object.")
248
- raise ParseException(ParseException.PARSE_INVALID_DATA_ERROR)
249
- if np.size(data) == 0:
250
- self.log.error("Invalid data, data is empty")
251
- raise ParseException(ParseException.PARSE_INVALID_DATA_ERROR)
252
- npu_info_result = namedtuple('npu_info_result', ['shape', 'dtype', 'max', 'min', 'mean'])
253
- res = npu_info_result(data.shape, data.dtype, data.max(), data.min(), data.mean())
254
- return res
255
-
256
- def list_file_with_pattern(self, path, pattern, extern_pattern, gen_info_func):
257
- self.check_path_valid(path)
258
- file_list = {}
259
- re_pattern = re.compile(pattern)
260
- files = os_walk_for_files(path, Const.MAX_TRAVERSAL_DEPTH)
261
- for file in files:
262
- name = file["file"]
263
- match = re_pattern.match(name)
264
- if not match:
265
- continue
266
- if extern_pattern != '' and re_pattern.match(extern_pattern) and not name.startswith(extern_pattern):
267
- continue
268
- file_list[name] = gen_info_func(name, match, file["root"])
269
- return file_list
270
-
271
- def check_file_path_format(self, path, suffix):
272
- if os.path.isfile(path):
273
- if not path.endswith(suffix):
274
- self.log.error("%s is not a %s file." % (path, suffix))
275
- raise ParseException(ParseException.PARSE_INVALID_FILE_FORMAT_ERROR)
276
- elif os.path.isdir(path):
277
- self.log.error("Please specify a single file path")
278
- raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR)
279
- else:
280
- self.log.error("The file path %s is invalid" % path)
281
- raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR)
282
-
283
- def check_str_param(self, param):
284
- if len(param) > Const.FILE_NAME_LENGTH:
285
- self.log.error('The parameter length exceeds limit')
286
- raise ParseException(ParseException.PARSE_INVALID_PARAM_ERROR)
287
- if not re.match(Const.FILE_PATTERN, param):
288
- self.log.error('The parameter {} contains special characters.'.format(param))
289
- raise ParseException(ParseException.PARSE_INVALID_PARAM_ERROR)
290
-
291
- def is_subdir_count_equal(self, dir1, dir2):
292
- dir1_count = self.get_subdir_count(dir1)
293
- dir2_count = self.get_subdir_count(dir2)
294
- return dir1_count == dir2_count
295
-
296
- def check_positive(self, value):
297
- if value <= 0.0:
298
- self.log.error("Invalid value. It must be greater than 0.")
299
- raise ParseException(ParseException.PARSE_INVALID_DATA_ERROR)
@@ -1,85 +0,0 @@
1
- # Copyright (c) 2024-2025, 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
- import json
17
-
18
- import numpy as np
19
- from msprobe.core.common.file_utils import FileOpen, load_npy, save_npy_to_txt
20
- from msprobe.pytorch.parse_tool.lib.config import Const
21
- from msprobe.pytorch.parse_tool.lib.parse_exception import ParseException
22
- from msprobe.pytorch.parse_tool.lib.utils import Util
23
-
24
-
25
- class Visualization:
26
- def __init__(self):
27
- self.util = Util()
28
-
29
- def print_npy_summary(self, target_file):
30
- np_data = load_npy(target_file)
31
- table = self.util.create_table('', ['Index', 'Data'])
32
- flatten_data = np_data.flatten()
33
- tablesize = 8
34
- for i in range(min(16, int(np.ceil(flatten_data.size / tablesize)))):
35
- last_idx = min(flatten_data.size, i * tablesize + tablesize)
36
- table.add_row(str(i * tablesize), ' '.join(flatten_data[i * tablesize: last_idx].astype('str').tolist()))
37
- summary = ['[yellow]%s[/yellow]' % self.util.gen_npy_info_txt(np_data), 'Path: %s' % target_file,
38
- "TextFile: %s.txt" % target_file]
39
- self.util.print_panel(self.util.create_columns([table, "\n".join(summary)]), target_file)
40
- save_npy_to_txt(np_data, target_file + ".txt")
41
-
42
- def print_npy_data(self, file_name):
43
- file_name = self.util.path_strip(file_name)
44
- self.util.check_path_valid(file_name)
45
- self.util.check_file_path_format(file_name, Const.NPY_SUFFIX)
46
- return self.print_npy_summary(file_name)
47
-
48
- def parse_pkl(self, path, api_name):
49
- path = self.util.path_strip(path)
50
- self.util.check_path_valid(path)
51
- self.util.check_file_path_format(path, Const.PKL_SUFFIX)
52
- self.util.check_str_param(api_name)
53
- with FileOpen(path, "r") as pkl_handle:
54
- title_printed = False
55
- while True:
56
- pkl_line = pkl_handle.readline()
57
- if pkl_line == '\n':
58
- continue
59
- if len(pkl_line) == 0:
60
- break
61
- try:
62
- msg = json.loads(pkl_line)
63
- except json.JSONDecodeError as e:
64
- self.util.log.error("%s %s in line %s" % ("JSONDecodeError", str(e), pkl_line))
65
- self.util.log.warning("Please check the pkl file")
66
- raise ParseException(ParseException.PARSE_JSONDECODE_ERROR) from e
67
- if not isinstance(msg, list) or len(msg) == 0:
68
- break
69
- info_prefix = msg[0]
70
- if not info_prefix.startswith(api_name):
71
- continue
72
- if info_prefix.find("stack_info") != -1 and len(msg) == 2:
73
- self.util.log.info("\nTrace back({}):".format(msg[0]))
74
- if msg[1] and len(msg[1]) > 4:
75
- for item in reversed(msg[1]):
76
- self.util.log.info(" File \"{}\", line {}, in {}".format(item[0], item[1], item[2]))
77
- self.util.log.info(" {}".format(item[3]))
78
- continue
79
- if len(msg) > 5 and len(msg[5]) >= 3:
80
- summery_info = " [{}][dtype: {}][shape: {}][max: {}][min: {}][mean: {}]" \
81
- .format(msg[0], msg[3], msg[4], msg[5][0], msg[5][1], msg[5][2])
82
- if not title_printed:
83
- self.util.log.info("\nStatistic Info:")
84
- title_printed = True
85
- self.util.log.info(summery_info)
@@ -1,299 +0,0 @@
1
- # Copyright (c) 2024-2025, 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
- import os
17
- import re
18
-
19
- from msprobe.core.common.const import Const, FileCheckConst
20
- from msprobe.core.common.exceptions import MsprobeException
21
- from msprobe.core.common.file_utils import FileOpen, load_json, check_file_or_directory_path, FileChecker
22
- from msprobe.core.common.log import logger
23
- from msprobe.core.common.utils import is_int
24
- from msprobe.core.common_config import BaseConfig, CommonConfig
25
- from msprobe.core.grad_probe.constant import level_adp
26
- from msprobe.core.grad_probe.utils import check_bounds
27
- from msprobe.pytorch.free_benchmark.common.enums import (
28
- DeviceType,
29
- HandlerType,
30
- PytorchFreeBenchmarkConst,
31
- )
32
- from msprobe.pytorch.hook_module.utils import get_ops
33
-
34
-
35
- class TensorConfig(BaseConfig):
36
- def __init__(self, json_config):
37
- super().__init__(json_config)
38
- self.check_config()
39
- self._check_summary_mode()
40
- self._check_file_format()
41
-
42
-
43
- def _check_file_format(self):
44
- if self.file_format is not None and self.file_format not in ["npy", "bin"]:
45
- raise Exception("file_format is invalid")
46
-
47
-
48
- class StatisticsConfig(BaseConfig):
49
- def __init__(self, json_config):
50
- super().__init__(json_config)
51
- self.check_config()
52
- self._check_summary_mode()
53
-
54
- self.tensor_list = json_config.get("tensor_list", [])
55
- self._check_str_list_config(self.tensor_list, "tensor_list")
56
-
57
-
58
- class OverflowCheckConfig(BaseConfig):
59
- def __init__(self, json_config):
60
- super().__init__(json_config)
61
- self.overflow_nums = json_config.get("overflow_nums")
62
- self.check_mode = json_config.get("check_mode")
63
- self.check_overflow_config()
64
-
65
- def check_overflow_config(self):
66
- if self.overflow_nums is not None and not is_int(self.overflow_nums):
67
- raise Exception("overflow_num is invalid")
68
- if self.overflow_nums is not None and self.overflow_nums != -1 and self.overflow_nums <= 0:
69
- raise Exception("overflow_nums should be -1 or positive integer")
70
- if self.check_mode is not None and self.check_mode not in ["all", "aicore", "atomic"]:
71
- raise Exception("check_mode is invalid")
72
-
73
-
74
- class FreeBenchmarkCheckConfig(BaseConfig):
75
-
76
- def __init__(self, json_config):
77
- super().__init__(json_config)
78
- self.fuzz_device = json_config.get("fuzz_device", PytorchFreeBenchmarkConst.DEFAULT_DEVICE)
79
- self.pert_mode = json_config.get("pert_mode", PytorchFreeBenchmarkConst.DEFAULT_MODE)
80
- self.handler_type = json_config.get("handler_type", PytorchFreeBenchmarkConst.DEFAULT_HANDLER)
81
- self.fuzz_level = json_config.get("fuzz_level", PytorchFreeBenchmarkConst.DEFAULT_FUZZ_LEVEL)
82
- self.fuzz_stage = json_config.get("fuzz_stage", PytorchFreeBenchmarkConst.DEFAULT_FUZZ_STAGE)
83
- self.list = json_config.get("list")
84
- self.if_preheat = json_config.get("if_preheat", False)
85
- self.preheat_step = json_config.get("preheat_step", PytorchFreeBenchmarkConst.DEFAULT_PREHEAT_STEP)
86
- self.max_sample = json_config.get("max_sample", PytorchFreeBenchmarkConst.DEFAULT_PREHEAT_STEP)
87
- self.check_freebenchmark_config()
88
-
89
- def check_freebenchmark_config(self):
90
- self._check_pert_mode()
91
- self._check_fuzz_device()
92
- self._check_handler_type()
93
- self._check_fuzz_stage()
94
- self._check_fuzz_level()
95
- self._check_if_preheat()
96
- if self.handler_type == HandlerType.FIX:
97
- self._check_fix_config()
98
- if self.if_preheat:
99
- self._check_preheat_config()
100
-
101
- def _check_pert_mode(self):
102
- if self.pert_mode not in PytorchFreeBenchmarkConst.PERTURBATION_MODE_LIST:
103
- msg = (
104
- f"pert_mode is invalid, it should be one of"
105
- f" {PytorchFreeBenchmarkConst.PERTURBATION_MODE_LIST}"
106
- )
107
- logger.error_log_with_exp(
108
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
109
- )
110
-
111
- def _check_fuzz_device(self):
112
- if self.fuzz_device not in PytorchFreeBenchmarkConst.DEVICE_LIST:
113
- msg = (
114
- f"fuzz_device is invalid, it should be one of"
115
- f" {PytorchFreeBenchmarkConst.DEVICE_LIST}"
116
- )
117
- logger.error_log_with_exp(
118
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
119
- )
120
- if (self.fuzz_device == DeviceType.CPU) ^ (
121
- self.pert_mode in PytorchFreeBenchmarkConst.CPU_MODE_LIST
122
- ):
123
- msg = (
124
- f"You need to and can only set fuzz_device as {DeviceType.CPU} "
125
- f"when pert_mode in {PytorchFreeBenchmarkConst.CPU_MODE_LIST}"
126
- )
127
- logger.error_log_with_exp(
128
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
129
- )
130
-
131
- def _check_handler_type(self):
132
- if self.handler_type not in PytorchFreeBenchmarkConst.HANDLER_LIST:
133
- msg = (
134
- f"handler_type is invalid, it should be one of"
135
- f" {PytorchFreeBenchmarkConst.HANDLER_LIST}"
136
- )
137
- logger.error_log_with_exp(
138
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
139
- )
140
-
141
- def _check_fuzz_stage(self):
142
- if self.fuzz_stage not in PytorchFreeBenchmarkConst.FUZZ_STAGE_LIST:
143
- msg = (
144
- f"fuzz_stage is invalid, it should be one of"
145
- f" {PytorchFreeBenchmarkConst.FUZZ_STAGE_LIST}"
146
- )
147
- logger.error_log_with_exp(
148
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
149
- )
150
- if self.fuzz_stage == Const.BACKWARD and not self.list:
151
- raise MsprobeException(
152
- MsprobeException.INVALID_PARAM_ERROR,
153
- f"When fuzz_stage is set to {Const.BACKWARD}, the parameters list must not be empty."
154
- )
155
-
156
- def _check_fuzz_level(self):
157
- if self.fuzz_level not in PytorchFreeBenchmarkConst.FUZZ_LEVEL_LIST:
158
- msg = (
159
- f"fuzz_level is invalid, it should be one of"
160
- f" {PytorchFreeBenchmarkConst.FUZZ_LEVEL_LIST}"
161
- )
162
- logger.error_log_with_exp(
163
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
164
- )
165
-
166
- def _check_if_preheat(self):
167
- if not isinstance(self.if_preheat, bool):
168
- msg = "if_preheat is invalid, it should be a boolean"
169
- logger.error_log_with_exp(
170
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
171
- )
172
-
173
- def _check_preheat_config(self):
174
- if not is_int(self.preheat_step):
175
- msg = "preheat_step is invalid, it should be an integer"
176
- logger.error_log_with_exp(
177
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
178
- )
179
- if self.preheat_step <= 0:
180
- msg = "preheat_step must be greater than 0"
181
- logger.error_log_with_exp(
182
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
183
- )
184
- if not is_int(self.max_sample):
185
- msg = "max_sample is invalid, it should be an integer"
186
- logger.error_log_with_exp(
187
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
188
- )
189
- if self.max_sample <= 0:
190
- msg = "max_sample must be greater than 0"
191
- logger.error_log_with_exp(
192
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
193
- )
194
-
195
- def _check_fix_config(self):
196
- if self.if_preheat:
197
- msg = f"Preheating is not supported for {HandlerType.FIX} handler type"
198
- logger.error_log_with_exp(
199
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
200
- )
201
- if self.fuzz_stage not in PytorchFreeBenchmarkConst.FIX_STAGE_LIST:
202
- msg = (
203
- f"The fuzz_stage when opening {HandlerType.FIX} handler must be one of "
204
- f"{PytorchFreeBenchmarkConst.FIX_STAGE_LIST}"
205
- )
206
- logger.error_log_with_exp(
207
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
208
- )
209
- if self.pert_mode not in PytorchFreeBenchmarkConst.FIX_MODE_LIST:
210
- msg = (
211
- f"The pert_mode when opening {HandlerType.FIX} handler must be one of "
212
- f"{PytorchFreeBenchmarkConst.FIX_MODE_LIST}"
213
- )
214
- logger.error_log_with_exp(
215
- msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
216
- )
217
-
218
-
219
- class RunUTConfig(BaseConfig):
220
- WrapApi = get_ops()
221
-
222
- def __init__(self, json_config):
223
- super().__init__(json_config)
224
- self.white_list = json_config.get("white_list", Const.DEFAULT_LIST)
225
- self.black_list = json_config.get("black_list", Const.DEFAULT_LIST)
226
- self.error_data_path = json_config.get("error_data_path", Const.DEFAULT_PATH)
227
-
228
- self.check_run_ut_config()
229
-
230
- @classmethod
231
- def check_filter_list_config(cls, key, filter_list):
232
- if not isinstance(filter_list, list):
233
- raise Exception("%s must be a list type" % key)
234
- if not all(isinstance(item, str) for item in filter_list):
235
- raise Exception("All elements in %s must be string type" % key)
236
- invalid_api = [item for item in filter_list if item not in cls.WrapApi]
237
- if invalid_api:
238
- raise Exception("Invalid api in %s: %s" % (key, invalid_api))
239
-
240
- @classmethod
241
- def check_error_data_path_config(cls, error_data_path):
242
- if not os.path.exists(error_data_path):
243
- raise Exception("error_data_path: %s does not exist" % error_data_path)
244
-
245
-
246
- def check_run_ut_config(self):
247
- RunUTConfig.check_filter_list_config(Const.WHITE_LIST, self.white_list)
248
- RunUTConfig.check_filter_list_config(Const.BLACK_LIST, self.black_list)
249
- RunUTConfig.check_error_data_path_config(self.error_data_path)
250
-
251
-
252
- class GradToolConfig(BaseConfig):
253
- def __init__(self, json_config):
254
- super().__init__(json_config)
255
- self.grad_level = json_config.get("grad_level", "L1")
256
- self.param_list = json_config.get("param_list", [])
257
- self.bounds = json_config.get("bounds", [-1, 0, 1])
258
- self._check_config()
259
-
260
- def _check_config(self):
261
- if self.grad_level not in level_adp.keys():
262
- raise Exception(f"grad_level must be one of {level_adp.keys()}")
263
- if not isinstance(self.param_list, list):
264
- raise Exception(f"param_list must be a list")
265
- check_bounds(self.bounds)
266
-
267
-
268
- class StructureConfig(BaseConfig):
269
- def __init__(self, json_config):
270
- super().__init__(json_config)
271
-
272
-
273
- TaskDict = {
274
- Const.TENSOR: TensorConfig,
275
- Const.STATISTICS: StatisticsConfig,
276
- Const.OVERFLOW_CHECK: OverflowCheckConfig,
277
- Const.FREE_BENCHMARK: FreeBenchmarkCheckConfig,
278
- Const.RUN_UT: RunUTConfig,
279
- Const.GRAD_PROBE: GradToolConfig,
280
- Const.STRUCTURE: StructureConfig
281
- }
282
-
283
-
284
- def parse_task_config(task, json_config):
285
- task_map = json_config.get(task, dict())
286
- return TaskDict.get(task)(task_map)
287
-
288
-
289
- def parse_json_config(json_file_path, task):
290
- if not json_file_path:
291
- config_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
292
- json_file_path = os.path.join(config_dir, "config.json")
293
- json_config = load_json(json_file_path)
294
- common_config = CommonConfig(json_config)
295
- if task:
296
- task_config = parse_task_config(task, json_config)
297
- else:
298
- task_config = parse_task_config(common_config.task, json_config)
299
- return common_config, task_config
File without changes