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
@@ -0,0 +1,532 @@
1
+ # coding=utf-8
2
+ # -------------------------------------------------------------------------
3
+ # This file is part of the MindStudio project.
4
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
5
+ #
6
+ # MindStudio is licensed under Mulan PSL v2.
7
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
8
+ # You may obtain a copy of Mulan PSL v2 at:
9
+ #
10
+ # http://license.coscl.org.cn/MulanPSL2
11
+ #
12
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
13
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
14
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
15
+ # See the Mulan PSL v2 for more details.
16
+ # -------------------------------------------------------------------------
17
+
18
+ """
19
+ Function:
20
+ This class mainly involves the main function.
21
+ """
22
+
23
+ import os
24
+ import re
25
+ import sys
26
+ import argparse
27
+ import time
28
+
29
+ from msprobe.msaccucmp.cmp_utils import log, path_check, file_utils
30
+ from msprobe.msaccucmp.cmp_utils.utils import safe_path_string, check_file_size
31
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
32
+ from msprobe.msaccucmp.cmp_utils.reg_manager import RegManager
33
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
34
+ from msprobe.msaccucmp.cmp_utils.path_check import check_others_permission
35
+ from msprobe.msaccucmp.algorithm_manager.algorithm_manager import AlgorithmManagerMain
36
+ from msprobe.msaccucmp.compare_vector import VectorComparison
37
+ from msprobe.msaccucmp.conversion.shape_format_conversion import FormatConversionMain
38
+ from msprobe.msaccucmp.dump_parse.dump_data_parser import DumpDataParser
39
+ from msprobe.msaccucmp.overflow.overflow_analyse import OverflowAnalyse
40
+ from msprobe.msaccucmp.pytorch_cmp.compare_pytorch import PytorchComparison
41
+ from msprobe.msaccucmp.vector_cmp.batch_compare import BatchCompare
42
+
43
+
44
+ MIND_STUDIO_LOGO = "[Powered by MindStudio]"
45
+
46
+
47
+ def _get_algorithm_help_info() -> str:
48
+ """
49
+ get algorithm help info
50
+ :return: help info
51
+ """
52
+ algorithm_help_info = ['<Optional> the algorithm selection, built-in algorithm where ']
53
+ for index, item in enumerate(ConstManager.BUILT_IN_ALGORITHM):
54
+ algorithm_help_info.append("".join([str(index), "=", item, ", "]))
55
+ algorithm_help_info.append('The custom algorithm uses the algorithm name. '
56
+ 'The selection splits by ",", such as "0,MaxAbsoluteError,4,CustomAlg" or "all". '
57
+ 'The default value is "all"')
58
+ return "".join(algorithm_help_info)
59
+
60
+
61
+ def _get_algorithm_help_info_for_int(default_value_list: list) -> str:
62
+ """
63
+ get algorithm help info for int
64
+ :param default_value_list:
65
+ :return:
66
+ """
67
+ algorithm_help_info = ['<Optional> the algorithm selection, ']
68
+ for index, item in enumerate(ConstManager.BUILT_IN_ALGORITHM):
69
+ algorithm_help_info.append("".join([str(index), ":", item, ", "]))
70
+ default_info = "The default value is %s." % default_value_list
71
+ algorithm_help_info.append(default_info)
72
+ return "".join(algorithm_help_info)
73
+
74
+
75
+ def _match_built_in_arg_value(alg_arg: str) -> bool:
76
+ # the alg value like -alg 1 2 3 --algorithm 1 4
77
+ if alg_arg in sys.argv:
78
+ alg_index = sys.argv.index(alg_arg)
79
+ re_pattern = re.compile(RegManager.BUILTIN_ALGORITHM_INDEX_PATTERN)
80
+ # check the second value after -alg match BUILTIN_ALGORITHM_INDEX_PATTERN
81
+ if alg_index + 2 < len(sys.argv):
82
+ if re_pattern.match(sys.argv[alg_index + 2]):
83
+ return True
84
+ return False
85
+
86
+
87
+ def _add_alg_argument(compare_parser: argparse.ArgumentParser) -> None:
88
+ if _match_built_in_arg_value('-alg') or _match_built_in_arg_value('--algorithm'):
89
+ default_value_list = []
90
+ for index, _ in enumerate(ConstManager.BUILT_IN_ALGORITHM):
91
+ default_value_list.append(index)
92
+ compare_parser.add_argument(
93
+ '-alg', '--algorithm', dest='algorithm', type=int, nargs="+", choices=default_value_list,
94
+ default=default_value_list, help=_get_algorithm_help_info_for_int(default_value_list))
95
+ else:
96
+ compare_parser.add_argument(
97
+ '-alg', '--algorithm', dest='algorithm', default="all", type=safe_path_string,
98
+ help=_get_algorithm_help_info())
99
+
100
+
101
+ def _add_fusion_rule_argument(compare_parser: argparse.ArgumentParser) -> None:
102
+ compare_parser.add_argument(
103
+ '-f', '--fusion_rule_file', dest='fusion_rule_file', default='', type=safe_path_string,
104
+ help='<Optional> the fusion rule file path')
105
+ compare_parser.add_argument(
106
+ '-q', '--quant_fusion_rule_file', dest='quant_fusion_rule_file', type=safe_path_string,
107
+ default='', help='<Optional> the quant fusion rule file path')
108
+ compare_parser.add_argument(
109
+ '-cf', '--close_fusion_rule_file', dest='close_fusion_rule_file', type=safe_path_string,
110
+ default='', help='<Optional> the rule file path without fusion')
111
+
112
+
113
+ def _compare_parser(compare_parser: argparse.ArgumentParser) -> None:
114
+ compare_parser.add_argument(
115
+ '-m', '--my_dump_path', dest='my_dump_path', default='', type=safe_path_string, required=True,
116
+ help='<Required> my dump path, the data compared with golden data')
117
+ compare_parser.add_argument(
118
+ '-g', '--golden_dump_path', dest='golden_dump_path', default='', type=safe_path_string,
119
+ help='<Required> the golden dump path', required=True)
120
+ _add_fusion_rule_argument(compare_parser)
121
+ compare_parser.add_argument(
122
+ '-out', '--output', dest='output_path', type=safe_path_string, default='', help='<Optional> the output path')
123
+ compare_parser.add_argument(
124
+ '-c', '--custom_script_path', dest='custom_script_path', default='', type=safe_path_string,
125
+ help='<Optional> the user-defined script path, including format conversion and algorithm')
126
+ compare_parser.add_argument(
127
+ '-a', '--algorithm_options', dest='algorithm_options', default='',
128
+ help='<Optional> the arguments for each algorithm. The format is "algorithm_name:param_name='
129
+ 'param_value". The parameter splits by ",". The algorithm splits by ";". '
130
+ 'Such as "CosineSimilarity:max=1,min=0;aa:max=1,min=0"')
131
+ _add_alg_argument(compare_parser)
132
+ compare_parser.add_argument(
133
+ '-map', '--mapping', dest="mapping", action="store_true", required=False,
134
+ help="<Optional> create mappings between my output operators and ground truth one")
135
+ compare_parser.add_argument(
136
+ "-overflow_detection", dest="overflow_detection", action="store_true", required=False,
137
+ help="<Optional> Operator overflow detection, only operators of the fp16 type are supported")
138
+ compare_parser.add_argument(
139
+ '-r', '--range', dest="range", default=None, required=False,
140
+ help='<Optional> compare network with the range. The format is "start,end,step". '
141
+ '`start` means the count starts position, limited to [1, op_count], default 1.'
142
+ '`end` means the count ends position, limited to [>=start, op_count] or -1, default -1'
143
+ '`step` limited to [1, op_count], default 1. -r command and -s command can not be used at the same time')
144
+ compare_parser.add_argument(
145
+ '-s', '--select', dest="select", default=None, required=False,
146
+ help='<Optional> compare network with the range. The format is "index_1, index_2,..." Every index should be'
147
+ 'a number in the fusion operator list -r command and -s command can not be used at the same time')
148
+ compare_parser.add_argument(
149
+ '-p', '--post_process', dest='post_process', choices=[0, 1], type=int, default=None,
150
+ help='<Optional> whether to extract the compare result, only pytorch is supported.'
151
+ '0 indicates the comparison result is not extracted, 1 indicates the comparison result is extracted')
152
+
153
+ compare_parser.add_argument(
154
+ '-max', '--max_cmp_size', dest='max_cmp_size', type=int, default=0,
155
+ help='<Optional> max size of tensor array to compare')
156
+
157
+ _add_advisor_argument(compare_parser)
158
+ _add_version_argument(compare_parser)
159
+ _add_argument_for_single_op(compare_parser)
160
+ _add_ffts_argument(compare_parser)
161
+
162
+
163
+ def _add_advisor_argument(compare_parser: argparse.ArgumentParser) -> None:
164
+ compare_parser.add_argument(
165
+ '-advisor', dest="advisor", action="store_true", required=False, help="<optional> Enable advisor after compare"
166
+ )
167
+
168
+
169
+ def _add_ffts_argument(compare_parser: argparse.ArgumentParser) -> None:
170
+ compare_parser.add_argument(
171
+ '-ffts', dest="ffts", action="store_true",
172
+ help="<optional> Enable the comparison between ffts+ and ffts+. "
173
+ "Direct comparison is performed without data combination")
174
+
175
+
176
+ def _add_argument_for_single_op(compare_parser: argparse.ArgumentParser) -> None:
177
+ compare_parser.add_argument('-op', '--op_name', dest='op_name', default=None, help='<Optional> operator name')
178
+ group = compare_parser.add_mutually_exclusive_group()
179
+ group.add_argument(
180
+ '-o', '--output_tensor', dest='output', default=None,
181
+ help='<Optional> the index of output, takes effect only when the "-op" exists')
182
+ group.add_argument(
183
+ '-i', '--input_tensor', dest='input', default=None,
184
+ help='<Optional> the index for input, takes effect only when the "-op" exists')
185
+ compare_parser.add_argument(
186
+ '--ignore_single_op_result', dest="ignore_single_op_result", action="store_true", default=False, required=False,
187
+ help='<Optional> ignore the single operator detail result, takes effect only when the "-op" exists')
188
+ compare_parser.add_argument(
189
+ '-n', '--topn', dest='topn', type=int, default=ConstManager.DEFAULT_TOP_N,
190
+ help='<Optional> the TopN for the single operator detail result, takes effect '
191
+ 'only when the "-op" exists. The value ranges from 1 to 10000. The default value is 20')
192
+ compare_parser.add_argument(
193
+ '-ml', '--max_line', dest='max_line', type=int, default=None,
194
+ help='<Optional> the max line count for the single operator detail result, takes effect '
195
+ 'only when the "-op" exists. The default value is 1000000, and it should range '
196
+ 'from {} to {}'.format(ConstManager.DETAIL_LINE_COUNT_RANGE_MIN, ConstManager.DETAIL_LINE_COUNT_RANGE_MAX))
197
+
198
+
199
+ def _add_version_argument(parser: argparse.ArgumentParser) -> None:
200
+ parser.add_argument(
201
+ '-v', '--version', dest='dump_version', choices=[1, 2], type=int, default=2,
202
+ help='<Optional> the version of the dump file, '
203
+ '1 means the protobuf dump file, 2 means the binary dump file, the default value is 2')
204
+
205
+
206
+ def _convert_parser(covert_parser: argparse.ArgumentParser) -> None:
207
+ group = covert_parser.add_mutually_exclusive_group()
208
+ covert_parser.add_argument(
209
+ '-d', '--dump_file', dest='dump_path', default='', type=safe_path_string, required=True,
210
+ help='<Required> the dump file path, supports one file, file list(splits by ",") and directory')
211
+ covert_parser.add_argument('-f', '--format', dest='format', default=None, help='<Optional> the format to transfer')
212
+ covert_parser.add_argument(
213
+ '-s', '--shape', dest='shape', default=None,
214
+ help='<Optional> the shape for format transfer, currently only used for FRACTAL_NZ conversion, '
215
+ 'shape format is ([0-9]+,)+[0-9]+, such as 1,3,224,224')
216
+ group.add_argument(
217
+ '-o', '--output_tensor', dest='output', default=None,
218
+ help='<Optional> the index for output, takes effect only when the "-f" exists')
219
+ group.add_argument(
220
+ '-i', '--input_tensor', dest='input', default=None,
221
+ help='<Optional> the index for input, takes effect only when the "-f" exists')
222
+ covert_parser.add_argument(
223
+ '-c', '--custom_script_path', dest='custom_script_path', default=None, type=safe_path_string,
224
+ help='<Optional> the user-defined script path, including format conversion')
225
+ covert_parser.add_argument('-out', '--output', dest='output_path', default='', help='<Optional> the output path')
226
+ _add_version_argument(covert_parser)
227
+ covert_parser.add_argument(
228
+ '-t', '--type', dest='output_file_type', choices=['npy', 'bin', 'msnpy'],
229
+ default='npy',
230
+ help='<Optional> the type of the output file, '
231
+ 'npy means the output is saved as numpy format, '
232
+ 'bin means the output is saved as binary format, '
233
+ 'msnpy means the output is saved as numpy format for MindSpore, '
234
+ 'the default value is npy')
235
+
236
+
237
+ def _overflow_parser(overflow_parser: argparse.ArgumentParser) -> None:
238
+ overflow_parser.add_argument(
239
+ '-d', '--dump_path', dest='dump_path', default='', type=safe_path_string, required=True,
240
+ help='<Required> the dump file path')
241
+ overflow_parser.add_argument(
242
+ '-out', '--output', dest='output_path', default='', type=safe_path_string, required=True,
243
+ help='<Optional> the output path')
244
+ overflow_parser.add_argument(
245
+ '-n', '--top_n', dest='top_num', choices=[1, 2, 3, 4, 5], type=int, default=1,
246
+ help='<Optional> the number of overflow ops, first n will be analyzed. the default value is 1')
247
+
248
+
249
+ def _file_compare_parser(file_compare_parser: argparse.ArgumentParser) -> None:
250
+ file_compare_parser.add_argument(
251
+ '-m', '--my_dump_path', dest='my_dump_path', default='', type=safe_path_string,
252
+ help='<Required> my dump path, the data compared with golden data',
253
+ required=True)
254
+ file_compare_parser.add_argument(
255
+ '-g', '--golden_dump_path', dest='golden_dump_path', default='', type=safe_path_string,
256
+ help='<Required> the golden dump path', required=True)
257
+ file_compare_parser.add_argument(
258
+ '-out', '--output', dest='output_path', default='', type=safe_path_string,
259
+ help='<Required> the output path', required=True)
260
+
261
+
262
+ def _check_argument_effect(required_arg: any, options_arg: any, options_arg_str: str, required_arg_str: str) -> None:
263
+ if required_arg is None and options_arg is not None:
264
+ log.print_error_log(
265
+ 'The argument %r takes effect only when the "%r" exists.' % (options_arg_str, required_arg_str))
266
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
267
+
268
+
269
+ def _check_single_op_argument(args: argparse.Namespace) -> None:
270
+ if args.op_name:
271
+ log.print_error_log('When --mapping or -map exists,the -op parameter is invalid.')
272
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
273
+ if args.output or args.input:
274
+ log.print_error_log('When --mapping or -map exists,the -i or -o parameter is invalid.')
275
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
276
+ if not args.fusion_rule_file and not args.quant_fusion_rule_file:
277
+ log.print_error_log('When --mapping or -map exists,there is need to enter the -f or -q parameter.')
278
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
279
+
280
+
281
+ def _check_dump_path_exist(dump_path_array: list) -> None:
282
+ for item_path in dump_path_array:
283
+ ret = path_check.check_path_valid(item_path, True)
284
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
285
+ raise CompareError(ret)
286
+
287
+
288
+ def _check_file_compare_file(args: argparse.Namespace, file_type) -> None:
289
+ for file in [args.my_dump_path, args.golden_dump_path]:
290
+ if not file.endswith(file_type):
291
+ log.print_error_log("[file_compare] The file %r is invalid.Only support %s file." % (file, file_type))
292
+ raise CompareError(CompareError.MSACCUCMP_INVALID_TYPE_ERROR)
293
+ ret = path_check.check_path_valid(file, True, False, path_type=path_check.PathType.File)
294
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
295
+ raise CompareError(ret)
296
+
297
+
298
+ def _check_file_compare_out(args: argparse.Namespace) -> None:
299
+ ret = path_check.check_output_path_valid(args.output_path, exist=True)
300
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
301
+ log.print_error_log('[file_compare] The -out parameter: "%r" is invalid!' % args.output_path)
302
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
303
+
304
+
305
+ def _check_hdf5_file_valid(file_path: str) -> bool:
306
+ """
307
+ Check file is hdf5
308
+ :param file_path: the file path
309
+ :return bool
310
+ """
311
+ return os.path.isfile(os.path.realpath(file_path)) and file_path.endswith(".h5")
312
+
313
+
314
+ def start_compare(args: argparse.Namespace) -> int:
315
+ """
316
+ compare entry.
317
+ """
318
+ if _check_hdf5_file_valid(args.my_dump_path) and _check_hdf5_file_valid(args.golden_dump_path):
319
+ pytorch_compare = PytorchComparison(args)
320
+ pytorch_compare.check_arguments_valid(args)
321
+ check_file_size(args.my_dump_path, ConstManager.ONE_HUNDRED_MB)
322
+ check_file_size(args.golden_dump_path, ConstManager.ONE_HUNDRED_MB)
323
+ ret = check_others_permission(args.my_dump_path)
324
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
325
+ raise CompareError(ret)
326
+ ret = check_others_permission(args.golden_dump_path)
327
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
328
+ raise CompareError(ret)
329
+ ret = pytorch_compare.compare()
330
+ return ret
331
+
332
+ if args.post_process is not None:
333
+ log.print_error_log('param -p only used in pytorch session.')
334
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
335
+
336
+ if os.path.isfile(os.path.realpath(args.my_dump_path)) and os.path.isfile(os.path.realpath(args.golden_dump_path)):
337
+ ret = check_others_permission(args.my_dump_path)
338
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
339
+ raise CompareError(ret)
340
+ ret = check_others_permission(args.golden_dump_path)
341
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
342
+ raise CompareError(ret)
343
+ compare = AlgorithmManagerMain(args)
344
+ ret = compare.process()
345
+ elif args.fusion_rule_file != "" and BatchCompare().check_fusion_rule_json_dir(args.fusion_rule_file):
346
+ ret = BatchCompare().compare(args)
347
+ else:
348
+ args = _check_advisor_effect(args)
349
+ compare = VectorComparison(args)
350
+ ret = compare.compare()
351
+ return ret
352
+
353
+
354
+ def _do_cmd() -> int:
355
+ parser = argparse.ArgumentParser(description=MIND_STUDIO_LOGO)
356
+ subparsers = parser.add_subparsers(help='commands')
357
+ compare_parser = subparsers.add_parser(
358
+ 'compare', help='Compare network or single op.', description=MIND_STUDIO_LOGO
359
+ )
360
+ covert_parser = subparsers.add_parser(
361
+ 'convert', help='Convert my dump data to numpy data or bin data.', description=MIND_STUDIO_LOGO
362
+ )
363
+ overflow_parser = subparsers.add_parser(
364
+ 'overflow', help='Analyze the information of the overflow operators.', description=MIND_STUDIO_LOGO
365
+ )
366
+ file_compare_parser = subparsers.add_parser(
367
+ 'file_compare', help='Compare two single .npy file.', description=MIND_STUDIO_LOGO
368
+ )
369
+
370
+ _compare_parser(compare_parser)
371
+ _convert_parser(covert_parser)
372
+ _overflow_parser(overflow_parser)
373
+ _file_compare_parser(file_compare_parser)
374
+
375
+ args = parser.parse_args(sys.argv[1:])
376
+ if len(sys.argv) < 2:
377
+ parser.print_help()
378
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
379
+
380
+ if sys.argv[1] == 'compare':
381
+ ret = _do_compare(args)
382
+ elif sys.argv[1] == 'convert':
383
+ ret = _do_convert(args)
384
+ elif sys.argv[1] == 'file_compare':
385
+ ret = _do_file_compare(args)
386
+ else:
387
+ ret = _do_overflow(args)
388
+
389
+ return ret
390
+
391
+
392
+ def _check_advisor_effect(args):
393
+ if args.advisor and args.range is not None:
394
+ log.print_warn_log('The argument "-advisor" takes no effect when the "-r" or "--range" exists.')
395
+ args.advisor = False
396
+ if args.advisor and args.select is not None:
397
+ log.print_warn_log('The argument "-advisor" takes no effect when the "-s" or "--select" exists.')
398
+ args.advisor = False
399
+ if args.advisor and args.op_name is not None:
400
+ log.print_warn_log('The argument "-advisor" takes no effect when the "-op" exists.')
401
+ args.advisor = False
402
+ if args.advisor:
403
+ log.print_warn_log('The argument "-advisor" will automatically configure "-overflow_detection".')
404
+ args.overflow_detection = True
405
+ return args
406
+
407
+
408
+ def _check_range_effect(args: argparse.Namespace) -> None:
409
+ if not args.fusion_rule_file and args.range is not None:
410
+ log.print_error_log('The argument "-r" or "--range" takes effect only when the "-f" exists.')
411
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
412
+ if args.op_name and args.range is not None:
413
+ log.print_error_log('The argument "-r" or "--range" exists, the "-op" parameter is invalid.')
414
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
415
+ if not args.fusion_rule_file and args.select is not None:
416
+ log.print_error_log('The argument "-s" or "--select" takes effect only when the "-f" exists.')
417
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
418
+ if args.op_name and args.select is not None:
419
+ log.print_error_log('The argument "-s" or "--select" exists, the "-op" parameter is invalid.')
420
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
421
+ if args.range and args.select is not None:
422
+ log.print_error_log('The argument "-r" and "-s" can not be used at the same time')
423
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
424
+ if args.max_cmp_size < 0:
425
+ log.print_error_log(
426
+ "Please enter a valid number for max_cmp_size, the max_cmp_size should be"
427
+ " in [0, ∞), now is %s." % args.max_cmp_size)
428
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
429
+
430
+
431
+ def _do_compare(args: argparse.Namespace) -> int:
432
+ _check_range_effect(args)
433
+ if args.dump_version == 1:
434
+ log.print_warn_log(
435
+ "The -v argument will be deprecated. when the -v value is 1, it will be processed as 2."
436
+ )
437
+ if args.mapping:
438
+ _check_single_op_argument(args)
439
+ compare = VectorComparison(args)
440
+ ret = compare.compare()
441
+ else:
442
+ _check_argument_effect(args.op_name, args.output, '"-o" or "--output_tensor"', '-op')
443
+ _check_argument_effect(args.op_name, args.input, '"-i" or "--input_tensor"', '-op')
444
+ if '-n' in sys.argv or '--topn' in sys.argv:
445
+ _check_argument_effect(args.op_name, args.topn, '"-n" or "--topn"', '-op')
446
+ if '--ignore_single_op_result' in sys.argv:
447
+ _check_argument_effect(args.op_name, args.ignore_single_op_result, '"--ignore_single_op_result"', '-op')
448
+ if '-ml' in sys.argv or '--max_line' in sys.argv:
449
+ _check_argument_effect(args.op_name, args.max_line, '"-ml" or "--max_line"', '-op')
450
+ dump_path_array = [args.my_dump_path, args.golden_dump_path]
451
+ _check_dump_path_exist(dump_path_array)
452
+ ret = start_compare(args)
453
+
454
+ return ret
455
+
456
+
457
+ def _do_convert(args: argparse.Namespace) -> int:
458
+ _check_argument_effect(args.format, args.output, '"-o" or "--output_tensor"', '-f')
459
+ _check_argument_effect(args.format, args.input, '"-i" or "--input_tensor"', '-f')
460
+ _check_argument_effect(args.format, args.shape, '"-s" or "--shape"', '-f')
461
+ _check_argument_effect(args.format, args.custom_script_path, '"-c" or "--custom_script_path"', '-f')
462
+ if args.dump_version == 1:
463
+ log.print_warn_log(
464
+ "The -v argument will be deprecated. when the -v value is 1, it will be processed as 2."
465
+ )
466
+ abs_dump_path = os.path.abspath(args.dump_path)
467
+ if os.path.isdir(abs_dump_path) and not os.listdir(abs_dump_path):
468
+ log.print_error_log('The dump path is empty.')
469
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
470
+ if args.format:
471
+ if os.path.isdir(abs_dump_path):
472
+ log.print_warn_log(
473
+ 'The dump path is a directory. If the -o, -i and -s arguments exist, these arguments will be ignored.'
474
+ )
475
+ conversion = FormatConversionMain(args)
476
+ ret = conversion.convert_format()
477
+ else:
478
+ ret = DumpDataParser(args).parse_dump_data()
479
+
480
+ return ret
481
+
482
+
483
+ def _do_file_compare(args: argparse.Namespace) -> int:
484
+ _check_file_compare_file(args, ConstManager.NPY_SUFFIX)
485
+ _check_file_compare_out(args)
486
+ args.custom_script_path = ""
487
+ args.algorithm = ConstManager.FILE_CMP_SUPPORTED_ALGORITHM
488
+ args.algorithm_options = ""
489
+ compare = AlgorithmManagerMain(args)
490
+ ret = compare.process(save_result=True)
491
+
492
+ return ret
493
+
494
+
495
+ def _do_overflow(args: argparse.Namespace) -> int:
496
+ overflow_analyse = OverflowAnalyse(args)
497
+ ret = overflow_analyse.check_argument(args)
498
+ if ret == CompareError.MSACCUCMP_NONE_ERROR:
499
+ return overflow_analyse.analyse()
500
+ return ret
501
+
502
+
503
+ def _root_privilege_warning():
504
+ if os.getuid() == 0:
505
+ log.print_warn_log(
506
+ "msaccucmp is being run as root. "
507
+ "To avoid security risks, it is recommended to switch to a regular user to run it."
508
+ )
509
+
510
+
511
+ def main() -> None:
512
+ """
513
+ parse argument and run command
514
+ :return:
515
+ """
516
+ start = time.time()
517
+ with file_utils.UmaskWrapper():
518
+ try:
519
+ _root_privilege_warning()
520
+ ret = _do_cmd()
521
+ except CompareError as err:
522
+ ret = err.code
523
+ except Exception as base_err:
524
+ log.print_error_log(f'Basic error running {sys.argv[0]}: {base_err}')
525
+ sys.exit(1)
526
+ end = time.time()
527
+ log.print_info_log('The command was completed and took %d seconds.' % (end - start))
528
+ sys.exit(ret)
529
+
530
+
531
+ if __name__ == '__main__':
532
+ main()
@@ -0,0 +1,128 @@
1
+ # coding=utf-8
2
+ # -------------------------------------------------------------------------
3
+ # This file is part of the MindStudio project.
4
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
5
+ #
6
+ # MindStudio is licensed under Mulan PSL v2.
7
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
8
+ # You may obtain a copy of Mulan PSL v2 at:
9
+ #
10
+ # http://license.coscl.org.cn/MulanPSL2
11
+ #
12
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
13
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
14
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
15
+ # See the Mulan PSL v2 for more details.
16
+ # -------------------------------------------------------------------------
17
+
18
+ """
19
+ Function:
20
+ Make advisor, perform comparative analysis, This class mainly involves the main function.
21
+ """
22
+
23
+ import os
24
+ import sys
25
+ import argparse
26
+ import re
27
+ from msprobe.msaccucmp.cmp_utils import log, path_check, file_utils
28
+ from msprobe.msaccucmp.cmp_utils.utils import safe_path_string
29
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
30
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
31
+ from msprobe.msaccucmp.advisor.compare_advisor import CompareAdvisor
32
+ MAX_STRING_LENGTH = 1024
33
+ NODE_WHITE_LIST_REGEX = re.compile(r"[^_A-Za-z0-9/.,;-]")
34
+
35
+
36
+ def parse_input_nodes(input_nodes):
37
+ """
38
+ Convert input_nodes string to nodes list
39
+ :param input_nodes: string of input nodes
40
+ """
41
+ if not input_nodes:
42
+ return []
43
+ else:
44
+ check_safe_string(input_nodes)
45
+ check_string_length(input_nodes)
46
+ return [node.strip() for node in input_nodes.strip().split(";") if node.strip()]
47
+
48
+
49
+ def _compare_advisor_parser(parser):
50
+ parser.add_argument("-i", "--input_file", dest="input_file", default="", type=safe_path_string,
51
+ help="<Required> The compare result file: generate from msaccucmp compare command, a csv file.",
52
+ required=True)
53
+ parser.add_argument('-input_nodes', dest="input_nodes", default="",
54
+ help="<optional> Input nodes designated by user. Separate multiple nodes with semicolons(;)."
55
+ " E.g: \"node_name1;node_name2;node_name3\"", required=False)
56
+ parser.add_argument("-o", "--out_path", dest="out_path", default="", type=safe_path_string,
57
+ help="<optional> The compare advice out path.",
58
+ required=False)
59
+
60
+
61
+ def _do_advisor():
62
+ parser = argparse.ArgumentParser()
63
+ _compare_advisor_parser(parser)
64
+ args = parser.parse_args(sys.argv[1:])
65
+ input_file = os.path.realpath(args.input_file)
66
+ check_file_size(input_file)
67
+ _check_input_file(input_file, ConstManager.CSV_SUFFIX)
68
+ input_nodes = parse_input_nodes(args.input_nodes)
69
+ if args.out_path:
70
+ if os.path.islink(os.path.abspath(args.out_path)):
71
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % args.out_path)
72
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
73
+ out_path = os.path.realpath(args.out_path)
74
+ else:
75
+ out_path = ""
76
+ compare_advisor = CompareAdvisor(input_file, input_nodes, out_path)
77
+ advisor_result = compare_advisor.advisor()
78
+ message_list = advisor_result.print_advisor_log()
79
+ if out_path:
80
+ path_check.check_output_path_valid(out_path, exist=True)
81
+ advisor_result.gen_summary_file(out_path, message_list)
82
+
83
+
84
+ def check_file_size(input_file):
85
+ try:
86
+ file_size = os.path.getsize(input_file)
87
+ except OSError as os_error:
88
+ log.print_error_log('Failed to open "%r". %s' % (input_file, str(os_error)))
89
+ raise CompareError(CompareError.MSACCUCMP_OPEN_FILE_ERROR) from os_error
90
+ if file_size > ConstManager.ONE_HUNDRED_MB:
91
+ log.print_error_log('The size (%d) of %r exceeds 100MB, tools not support.' % (file_size, input_file))
92
+ raise CompareError(CompareError.MSACCUCMP_INVALID_FILE_ERROR)
93
+
94
+
95
+ def check_string_length(s):
96
+ byte_length = len(s.encode('utf-8'))
97
+ if byte_length > MAX_STRING_LENGTH:
98
+ log.print_error_log('The length (%d) of %s exceeds 1024, tools not support.' % (byte_length, s))
99
+ raise CompareError(CompareError.MSACCUCMP_INVALID_FILE_ERROR)
100
+
101
+
102
+ def check_safe_string(s):
103
+ if re.search(NODE_WHITE_LIST_REGEX, s):
104
+ log.print_error_log("String parameter contains invalid characters.")
105
+ raise ValueError
106
+
107
+
108
+ def _check_input_file(input_file: str, file_type: str) -> None:
109
+ if not input_file.endswith(file_type):
110
+ log.print_error_log("[file_compare] The file %r is invalid.Only support %r file." % (input_file, file_type))
111
+ raise CompareError(CompareError.MSACCUCMP_INVALID_TYPE_ERROR)
112
+ ret = path_check.check_exec_file_valid(input_file)
113
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
114
+ raise CompareError(ret)
115
+
116
+
117
+ if __name__ == '__main__':
118
+ with file_utils.UmaskWrapper():
119
+ try:
120
+ _do_advisor()
121
+ except CompareError as err:
122
+ sys.exit(err.code)
123
+ except Exception as base_err:
124
+ log.print_error_log(f'Basic error running {sys.argv[0]}: {base_err}')
125
+ sys.exit(1)
126
+
127
+ log.print_info_log("Advisor completed.")
128
+ sys.exit(CompareError.MSACCUCMP_NONE_ERROR)
@@ -0,0 +1,16 @@
1
+ # -------------------------------------------------------------------------
2
+ # This file is part of the MindStudio project.
3
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
4
+ #
5
+ # MindStudio is licensed under Mulan PSL v2.
6
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
7
+ # You may obtain a copy of Mulan PSL v2 at:
8
+ #
9
+ # http://license.coscl.org.cn/MulanPSL2
10
+ #
11
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
12
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
13
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
14
+ # See the Mulan PSL v2 for more details.
15
+ # -------------------------------------------------------------------------
16
+