mindstudio-probe 8.3.2__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.2.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.2.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 +30 -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.2.dist-info/LICENSE +0 -201
  451. mindstudio_probe-8.3.2.dist-info/RECORD +0 -491
  452. mindstudio_probe-8.3.2.dist-info/entry_points.txt +0 -2
  453. mindstudio_probe-8.3.2.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,338 @@
1
+ #!/usr/bin/env python3
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
+ Utility helpers that support the torchair accuracy comparison flow.
20
+ """
21
+
22
+ import datetime
23
+ import os
24
+ from typing import Any, Dict, List
25
+
26
+ import numpy as np
27
+ import pandas as pd
28
+
29
+ from msprobe.core.common.const import FileCheckConst
30
+ from msprobe.core.common.file_utils import FileChecker, create_directory, write_df_to_csv
31
+ from msprobe.core.common.log import logger
32
+ from msprobe.infer.utils.check.rule import Rule
33
+ from msprobe.infer.utils.constants import TENSOR_MAX_SIZE
34
+ from msprobe.infer.utils.util import safe_torch_load
35
+
36
+ GLOBAL_HISTORY_AIT_DUMP_PATH_LIST = ["msit_dump", "ait_dump"]
37
+
38
+ TOKEN_ID = "token_id"
39
+ DATA_ID = "data_id"
40
+ GOLDEN_DATA_PATH = "golden_data_path"
41
+ GOLDEN_DTYPE = "golden_dtype"
42
+ GOLDEN_SHAPE = "golden_shape"
43
+ GOLDEN_MAX_VALUE = "golden_max_value"
44
+ GOLDEN_MIN_VALUE = "golden_min_value"
45
+ GOLDEN_MEAN_VALUE = "golden_mean_value"
46
+ GOLDEN_OP_TYPE = "golden_op_type"
47
+ MY_DATA_PATH = "my_data_path"
48
+ MY_DTYPE = "my_dtype"
49
+ MY_SHAPE = "my_shape"
50
+ MY_MAX_VALUE = "my_max_value"
51
+ MY_MIN_VALUE = "my_min_value"
52
+ MY_MEAN_VALUE = "my_mean_value"
53
+ MY_OP_TYPE = "my_op_type"
54
+ CMP_FAIL_REASON = "cmp_fail_reason"
55
+ DTYPE = "dtype"
56
+ SHAPE = "shape"
57
+ MAX_VALUE = "max_value"
58
+ MIN_VALUE = "min_value"
59
+ MEAN_VALUE = "mean_value"
60
+
61
+ CSV_GOLDEN_HEADER_BASE = [
62
+ TOKEN_ID,
63
+ DATA_ID,
64
+ GOLDEN_DATA_PATH,
65
+ GOLDEN_OP_TYPE,
66
+ GOLDEN_DTYPE,
67
+ GOLDEN_SHAPE,
68
+ GOLDEN_MAX_VALUE,
69
+ GOLDEN_MIN_VALUE,
70
+ GOLDEN_MEAN_VALUE,
71
+ MY_DATA_PATH,
72
+ MY_OP_TYPE,
73
+ MY_DTYPE,
74
+ MY_SHAPE,
75
+ MY_MAX_VALUE,
76
+ MY_MIN_VALUE,
77
+ MY_MEAN_VALUE,
78
+ ]
79
+
80
+
81
+ def _lazy_import_torch():
82
+ try:
83
+ import torch # pylint: disable=import-outside-toplevel
84
+ except ModuleNotFoundError as err:
85
+ if err.name == "torch":
86
+ logger.error("Missing dependency: torch. Please install torch to use torchair compare.")
87
+ raise
88
+ return torch
89
+
90
+
91
+ def _lazy_cmp_alg_maps():
92
+ from msprobe.infer.utils import cmp_algorithm # pylint: disable=import-outside-toplevel
93
+
94
+ return cmp_algorithm.CMP_ALG_MAP, cmp_algorithm.CUSTOM_ALG_MAP
95
+
96
+
97
+ def _build_csv_golden_header():
98
+ cmp_alg_map, _ = _lazy_cmp_alg_maps()
99
+ header = list(CSV_GOLDEN_HEADER_BASE)
100
+ header.extend(list(cmp_alg_map.keys()))
101
+ header.append(CMP_FAIL_REASON)
102
+ return header
103
+
104
+
105
+ class BasicDataInfo:
106
+ """Metadata holder for a pair of tensors."""
107
+
108
+ count_data_id = 0 # Count data_id, increment by 1 every time creating a new instance
109
+ TORCH_UNSUPPORTED_D_TYPE_MAP = {"uint16": "int32", "uint32": "int64"}
110
+
111
+ def __init__(self, golden_data_path, my_data_path, token_id=None, data_id=None, op_type=None):
112
+ global_path = os.path.realpath(golden_data_path.split(",")[0])
113
+ self._check_path(global_path)
114
+ my_real_path = os.path.realpath(my_data_path.split(",")[0])
115
+ self._check_path(my_real_path)
116
+
117
+ self.my_data_path, self.golden_data_path = os.path.realpath(my_data_path), os.path.realpath(golden_data_path)
118
+ self.token_id = self.get_token_id(self.my_data_path) if token_id is None else token_id
119
+ self.data_id = self.count_data_id if data_id is None else data_id
120
+ self.my_op_type, self.golden_op_type = self._validate_op_type(op_type)
121
+ self._count()
122
+
123
+ @staticmethod
124
+ def _check_path(path):
125
+ path_type = FileCheckConst.DIR if os.path.isdir(path) else FileCheckConst.FILE
126
+ FileChecker(path, path_type, ability=FileCheckConst.READ_ABLE).common_check()
127
+
128
+ @staticmethod
129
+ def _validate_op_type(op_type):
130
+ if op_type is None:
131
+ return None, None
132
+
133
+ if isinstance(op_type, (list, tuple)) and len(op_type) == 2:
134
+ return op_type[0], op_type[1]
135
+ raise ValueError("op_type must be a list or tuple containing two elements")
136
+
137
+ @classmethod
138
+ def _count(cls):
139
+ cls.count_data_id += 1
140
+
141
+ def to_dict(self):
142
+ return {
143
+ TOKEN_ID: str(self.token_id),
144
+ DATA_ID: str(self.data_id),
145
+ GOLDEN_DATA_PATH: self.golden_data_path,
146
+ GOLDEN_OP_TYPE: self.golden_op_type,
147
+ MY_DATA_PATH: self.my_data_path,
148
+ MY_OP_TYPE: self.my_op_type,
149
+ }
150
+
151
+ def get_token_id(self, cur_path):
152
+ dump_filename_idx = 4
153
+ dump_tensor_idx = 3
154
+ dirseg = cur_path.split(os.path.sep)
155
+ if len(dirseg) > 16:
156
+ raise RecursionError(f'The depth of "{cur_path}" directory is too deep.')
157
+ if len(dirseg) < dump_filename_idx:
158
+ return 0
159
+ flag1 = dirseg[-dump_tensor_idx] in {"tensors", "torch_tensors"}
160
+ flag2 = any(dirseg[-dump_filename_idx].startswith(x) for x in GLOBAL_HISTORY_AIT_DUMP_PATH_LIST)
161
+ if flag1 and flag2:
162
+ try:
163
+ token_id = int(dirseg[-1])
164
+ except (IndexError, AttributeError, TypeError, ValueError) as err:
165
+ logger.debug(f"get_token_id error, dirseg: {dirseg}, error: {err}")
166
+ token_id = 0
167
+ else:
168
+ token_id = self.get_token_id(os.path.dirname(cur_path))
169
+ return token_id
170
+
171
+
172
+ def fill_row_data(
173
+ data_info: BasicDataInfo,
174
+ loaded_my_data: Any = None,
175
+ loaded_golden_data: Any = None,
176
+ ):
177
+ golden_data_path, my_data_path = data_info.golden_data_path, data_info.my_data_path
178
+ row_data = data_info.to_dict()
179
+ if loaded_golden_data is None and not os.path.isfile(golden_data_path):
180
+ row_data[CMP_FAIL_REASON] = f"golden_data_path: {golden_data_path} is not a file."
181
+ return row_data
182
+ if loaded_my_data is None and not os.path.isfile(my_data_path):
183
+ row_data[CMP_FAIL_REASON] = f"my_data_path: {my_data_path} is not a file."
184
+ return row_data
185
+ golden_data = load_as_torch_tensor(golden_data_path, loaded_golden_data)
186
+ my_data = load_as_torch_tensor(my_data_path, loaded_my_data)
187
+
188
+ compare_metrics_dict = compare_data(golden_data, my_data)
189
+ tensor_basic_info_dict = set_tensor_basic_info_in_row_data(golden_data, my_data)
190
+ row_data.update(compare_metrics_dict)
191
+ row_data.update(tensor_basic_info_dict)
192
+
193
+ return row_data
194
+
195
+
196
+ def load_as_torch_tensor(data_path, loaded_data=None):
197
+ torch = _lazy_import_torch()
198
+ if loaded_data is not None:
199
+ if str(loaded_data.dtype) in BasicDataInfo.TORCH_UNSUPPORTED_D_TYPE_MAP:
200
+ mapped = BasicDataInfo.TORCH_UNSUPPORTED_D_TYPE_MAP.get(str(loaded_data.dtype))
201
+ loaded_data = loaded_data.astype(mapped)
202
+ return loaded_data if isinstance(loaded_data, torch.Tensor) else torch.from_numpy(loaded_data)
203
+ return read_data(data_path)
204
+
205
+
206
+ def get_tensor_basic_info(data: Any) -> Dict[str, Any]:
207
+ tensor_info: Dict[str, Any] = {}
208
+ tensor_info[DTYPE] = str(data.dtype)
209
+ tensor_info[SHAPE] = str(list(data.shape))
210
+ if 0 not in data.shape:
211
+ data = data.float()
212
+ tensor_info[MAX_VALUE] = data.max().item()
213
+ tensor_info[MIN_VALUE] = data.min().item()
214
+ tensor_info[MEAN_VALUE] = data.mean().item()
215
+ return tensor_info
216
+
217
+
218
+ def set_tensor_basic_info_in_row_data(golden_data, my_data):
219
+ row_data: Dict[str, Any] = {}
220
+ golden_info = get_tensor_basic_info(golden_data)
221
+ row_data.update({f"golden_{key}": value for key, value in golden_info.items()})
222
+
223
+ my_info = get_tensor_basic_info(my_data)
224
+ row_data.update({f"my_{key}": value for key, value in my_info.items()})
225
+ return row_data
226
+
227
+
228
+ def save_compare_result_to_csv(gathered_row_data, output_path=".", columns=None, rank_id=-1):
229
+ create_directory(output_path)
230
+ cur_time = datetime.datetime.now(datetime.timezone.utc).strftime("%Y%m%d%H%M%S")
231
+ columns = columns or _build_csv_golden_header()
232
+ if rank_id != -1:
233
+ csv_save_path = os.path.join(output_path, f"msit_cmp_report_rank{rank_id}_{cur_time}.csv")
234
+ else:
235
+ csv_save_path = os.path.join(output_path, f"msit_cmp_report_{cur_time}.csv")
236
+ gathered_row_data = list(
237
+ filter(
238
+ lambda item: not (CMP_FAIL_REASON in item and item[CMP_FAIL_REASON] == "data shape doesn't match."),
239
+ gathered_row_data,
240
+ )
241
+ )
242
+ for row_data in gathered_row_data[:]:
243
+ if GOLDEN_DTYPE in row_data and MY_DTYPE in row_data:
244
+ if (row_data[GOLDEN_DTYPE] == "torch.int8") ^ (row_data[MY_DTYPE] == "torch.int8"):
245
+ gathered_row_data.remove(row_data)
246
+
247
+ data_frame = pd.DataFrame(gathered_row_data, columns=columns)
248
+ data_frame.fillna(value="", inplace=True)
249
+ data_frame.dropna(axis=0, how="all", inplace=True)
250
+ write_df_to_csv(data_frame, csv_save_path)
251
+ logger.info(f"Saved comparing results: {csv_save_path}")
252
+ return csv_save_path
253
+
254
+
255
+ def compare_data(golden_data, my_data):
256
+ torch = _lazy_import_torch()
257
+ if not hasattr(compare_data, "index"):
258
+ compare_data.index = 0
259
+
260
+ golden_data_dtype = golden_data.dtype
261
+ my_data_dtype = my_data.dtype
262
+ if golden_data_dtype != torch.float32:
263
+ logger.debug(
264
+ f"The dtype of golden_data with index {compare_data.index} is {golden_data_dtype}, convert it to fp32"
265
+ )
266
+ if my_data_dtype != torch.float32:
267
+ logger.debug(f"The dtype of my_data with index {compare_data.index} is {my_data_dtype}, convert it to fp32")
268
+ golden_data_fp32 = golden_data.reshape(-1).float()
269
+ my_data_fp32 = my_data.reshape(-1).float()
270
+ compare_data.index += 1
271
+ compare_metrics_dict = compare_tensor(golden_data_fp32, my_data_fp32)
272
+ return compare_metrics_dict
273
+
274
+
275
+ def read_data(data_path):
276
+ torch = _lazy_import_torch()
277
+ data_path = os.path.realpath(data_path)
278
+ Rule.input_file().check(data_path, will_raise=True)
279
+ if data_path.endswith(".npy"):
280
+ data = torch.as_tensor(np.load(data_path, allow_pickle=False))
281
+ elif data_path.endswith((".pth", ".pt")):
282
+ data = safe_torch_load(data_path, map_location=torch.device("cpu"))
283
+ else:
284
+ logger.error(f"Unsupported data format {data_path}")
285
+ raise TypeError("Unsupported data format.")
286
+
287
+ if isinstance(data, torch.Tensor):
288
+ return data.cpu()
289
+ if isinstance(data, np.ndarray):
290
+ return torch.from_numpy(data)
291
+ if isinstance(data, (list, tuple)):
292
+ return torch.as_tensor(data)
293
+ logger.error(f"Unsupported tensor content type {type(data)} from {data_path}")
294
+ raise TypeError("Unsupported tensor content type.")
295
+
296
+
297
+ def compare_tensor(golden_data_fp32, my_data_fp32):
298
+ row_data: Dict[str, Any] = {}
299
+ fail_messages: List[str] = []
300
+
301
+ tensor_pass, message = check_tensor(golden_data_fp32, my_data_fp32)
302
+ if not tensor_pass:
303
+ logger.debug(f"check_tensor failed: {message}")
304
+ row_data[CMP_FAIL_REASON] = message
305
+ return row_data
306
+
307
+ cmp_alg_map, custom_alg_map = _lazy_cmp_alg_maps()
308
+ for name, cmp_func in list(cmp_alg_map.items()) + list(custom_alg_map.items()):
309
+ result, message = cmp_func(golden_data_fp32, my_data_fp32)
310
+ row_data[name] = result
311
+ if message:
312
+ fail_messages.append(message)
313
+ row_data[CMP_FAIL_REASON] = " ".join(fail_messages)
314
+ return row_data
315
+
316
+
317
+ def check_tensor(golden_data_fp32, my_data_fp32):
318
+ torch = _lazy_import_torch()
319
+ tensor_pass = True
320
+ fail_reasons = []
321
+
322
+ if len(golden_data_fp32) != len(my_data_fp32):
323
+ fail_reasons.append("data shape doesn't match.")
324
+ tensor_pass = False
325
+ if not torch.all(torch.isfinite(golden_data_fp32)):
326
+ fail_reasons.append("golden_data includes NAN or inf.")
327
+ tensor_pass = False
328
+ if not torch.all(torch.isfinite(my_data_fp32)):
329
+ fail_reasons.append("my_data includes NAN or inf.")
330
+ tensor_pass = False
331
+ return tensor_pass, " ".join(fail_reasons)
332
+
333
+
334
+ __all__ = [
335
+ "BasicDataInfo",
336
+ "fill_row_data",
337
+ "save_compare_result_to_csv",
338
+ ]
@@ -1,17 +1,18 @@
1
- # Copyright (c) 2024-2025, Huawei Technologies Co., Ltd.
2
- # All rights reserved.
1
+ # -------------------------------------------------------------------------
2
+ # This file is part of the MindStudio project.
3
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
3
4
  #
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
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:
7
8
  #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
+ # http://license.coscl.org.cn/MulanPSL2
9
10
  #
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.
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
+ # -------------------------------------------------------------------------
15
16
 
16
17
  import os
17
18
  import re
@@ -24,7 +25,8 @@ import numpy as np
24
25
  import pandas as pd
25
26
 
26
27
  from msprobe.core.common.const import Const, CompareConst, FileCheckConst
27
- from msprobe.core.common.utils import CompareException, check_regex_prefix_format_valid, logger, safe_get_value
28
+ from msprobe.core.common.utils import CompareException, check_regex_prefix_format_valid, logger, \
29
+ safe_get_value, is_module_available
28
30
  from msprobe.core.common.file_utils import check_file_or_directory_path, load_json
29
31
 
30
32
  json_file_mapping = {
@@ -58,10 +60,10 @@ def extract_json(dirname, json_file_type):
58
60
 
59
61
 
60
62
  def set_stack_json_path(input_param):
61
- npu_data_dir = os.path.dirname(input_param.get("npu_json_path"))
63
+ npu_data_dir = os.path.dirname(input_param.get("npu_path"))
62
64
  stack_path = extract_json(npu_data_dir, json_file_type=Const.STACK_JSON_FILE)
63
- input_param["stack_json_path"] = stack_path if stack_path else None
64
- return bool(stack_path)
65
+ input_param["stack_path"] = stack_path if stack_path else None
66
+ return bool(stack_path), input_param
65
67
 
66
68
 
67
69
  def check_and_return_dir_contents(dump_dir, prefix):
@@ -101,7 +103,8 @@ def read_op(op_data, op_name):
101
103
  split_name = op_name.split(Const.SEP)
102
104
  if split_name[-1] == Const.DEBUG:
103
105
  op_parsed_list = op_item_parse(op_data, op_name, Const.DEBUG)
104
- elif split_name[-1] == Const.PARAMS_GRAD:
106
+ # 倒序校验parameters_grad,先倒数1,再倒数2,排除因为parameters_grad在模块名中而误判的风险。-1适配老版,-2适配新版。
107
+ elif split_name[-1] == Const.PARAMS_GRAD or (len(split_name) >= 2 and split_name[-2] == Const.PARAMS_GRAD):
105
108
  op_parsed_list = op_item_parse(op_data, op_name, Const.PARAMS_GRAD)
106
109
  else:
107
110
  op_parsed_list = []
@@ -571,15 +574,23 @@ def get_accuracy(result, n_dict, b_dict, dump_mode):
571
574
  n_requires_grad, CompareConst.NAN,
572
575
  n_struct[2], CompareConst.NAN,
573
576
  False,
574
- CompareConst.NAN
577
+ CompareConst.NAN,
578
+ None
575
579
  ]
576
580
  result.append(result_item)
577
581
  continue
578
- result_item = [
579
- n_name, CompareConst.NAN, n_struct[0], CompareConst.NAN, n_struct[1], CompareConst.NAN,
580
- n_requires_grad, CompareConst.NAN,
581
- " ", " ", " ", " ", " ", " "
582
- ]
582
+ if dump_mode == Const.ALL:
583
+ result_item = [
584
+ n_name, CompareConst.NAN, n_struct[0], CompareConst.NAN, n_struct[1], CompareConst.NAN,
585
+ n_requires_grad, CompareConst.NAN,
586
+ " ", " ", " ", " ", " ", " "
587
+ ]
588
+ else:
589
+ result_item = [
590
+ n_name, CompareConst.NAN, n_struct[0], CompareConst.NAN, n_struct[1], CompareConst.NAN,
591
+ n_requires_grad, CompareConst.NAN,
592
+ " ", " ", " ", " ", " ", " ", " ", " "
593
+ ]
583
594
  summary_data = n_dict.get(CompareConst.SUMMARY)[n_start + index]
584
595
  result_item.extend(summary_data)
585
596
  summary_data = [CompareConst.NAN for _ in range(len(n_dict.get(CompareConst.SUMMARY)[0]))]
@@ -592,7 +603,7 @@ def get_accuracy(result, n_dict, b_dict, dump_mode):
592
603
  raise CompareException(CompareException.INDEX_OUT_OF_BOUNDS_ERROR) from e
593
604
 
594
605
  err_msg = ""
595
- result_item.append(CompareConst.ACCURACY_CHECK_YES)
606
+ result_item.append(CompareConst.PASS)
596
607
  result_item.append(err_msg)
597
608
  result_item = stack_column_process(result_item, has_stack, index, key, npu_stack_info)
598
609
  if dump_mode == Const.ALL:
@@ -605,11 +616,12 @@ def get_accuracy(result, n_dict, b_dict, dump_mode):
605
616
  _, b_num_input, b_num_output, b_num_params, b_num_params_grad = count_struct(b_dict)
606
617
 
607
618
  get_accuracy_core(0, n_num_input, 0, b_num_input, CompareConst.INPUT_STRUCT)
608
- get_accuracy_core(n_num_input + n_num_output, n_num_params, b_num_input + b_num_output, b_num_params,
619
+ get_accuracy_core(n_num_input, n_num_params, b_num_input, b_num_params,
609
620
  CompareConst.PARAMS_STRUCT)
610
- get_accuracy_core(n_num_input, n_num_output, b_num_input, b_num_output, CompareConst.OUTPUT_STRUCT)
611
- get_accuracy_core(n_num_input + n_num_output + n_num_params, n_num_params_grad,
612
- b_num_input + b_num_output + b_num_params, b_num_params_grad,
621
+ get_accuracy_core(n_num_input + n_num_params, n_num_output, b_num_input + b_num_params, b_num_output,
622
+ CompareConst.OUTPUT_STRUCT)
623
+ get_accuracy_core(n_num_input + n_num_params + n_num_output, n_num_params_grad,
624
+ b_num_input + b_num_params + b_num_output, b_num_params_grad,
613
625
  CompareConst.PARAMS_GRAD_STRUCT)
614
626
 
615
627
 
@@ -650,19 +662,18 @@ def get_paired_dirs(npu_path, bench_path):
650
662
 
651
663
 
652
664
  def _compare_parser(parser):
653
- parser.add_argument("-i", "--input_path", dest="input_path", type=str,
654
- help="<Required> The compare input path, a dict json.", required=True)
665
+ parser.add_argument("-m", "--mode", dest="mode", type=str, default="auto",
666
+ help="<optional> Comparison mode: 'auto' (default) or 'torchair' for torchair accuracy compare",
667
+ required=False)
668
+ parser.add_argument("-tp", "--target_path", dest="target_path", type=str,
669
+ help="<Required> The compare target device path", required=True)
670
+ parser.add_argument("-gp", "--golden_path", dest="golden_path", type=str,
671
+ help="<Required> The compare golden device path", required=True)
655
672
  parser.add_argument("-o", "--output_path", dest="output_path", type=str,
656
673
  help="<Required> The compare task result out path. Default path: ./output",
657
674
  required=False, default="./output", nargs="?", const="./output")
658
- parser.add_argument("-s", "--stack_mode", dest="stack_mode", action="store_true",
659
- help="<optional> Whether to save stack info.", required=False)
660
- parser.add_argument("-c", "--compare_only", dest="compare_only", action="store_true",
661
- help="<optional> Whether to give advisor.", required=False)
662
- parser.add_argument("-f", "--fuzzy_match", dest="fuzzy_match", action="store_true",
675
+ parser.add_argument("-fm", "--fuzzy_match", dest="fuzzy_match", action="store_true",
663
676
  help="<optional> Whether to perform a fuzzy match on the api name.", required=False)
664
- parser.add_argument("-hl", "--highlight", dest="highlight", action="store_true",
665
- help="<optional> Whether to set result highlighting.", required=False)
666
677
  parser.add_argument("-cm", "--cell_mapping", dest="cell_mapping", type=str, nargs='?', const=True,
667
678
  help="<optional> The cell mapping file path.", required=False)
668
679
  parser.add_argument("-am", "--api_mapping", dest="api_mapping", type=str, nargs='?', const=True,
@@ -673,12 +684,41 @@ def _compare_parser(parser):
673
684
  help="<optional> The layer mapping file path.", required=False)
674
685
  parser.add_argument("-da", "--diff_analyze", dest="diff_analyze", action="store_true",
675
686
  help="<optional> Whether to perform a diff analyze on the api name.", required=False)
687
+ parser.add_argument("-tensor_log", "--is_print_compare_log", dest="is_print_compare_log", action="store_true",
688
+ help="<Optional> whether print compare log for compare auto mode task.", required=False)
689
+ parser.add_argument("-fr", "--fusion_rule_file", dest="fusion_rule_file", type=str, default="",
690
+ help="<Optional> The fusion rule file path.", required=False)
691
+ parser.add_argument("-qfr", "--quant_fusion_rule_file", dest="quant_fusion_rule_file", type=str, default="",
692
+ help="<Optional> The quant fusion rule file path.", required=False)
693
+ parser.add_argument("-cfr", "--close_fusion_rule_file", dest="close_fusion_rule_file", type=str, default="",
694
+ help="<Optional> The close fusion rule file path.", required=False)
695
+ # rank:ms静态图比对、推理离线模型一键式比对
696
+ parser.add_argument("--rank", dest="rank", type=str, required=False,
697
+ help="<optional> Ranks to compare when compare kernel of MindSpore for <compare auto>. "
698
+ "Ranks to compare for <torchair dumps>. "
699
+ "Input rank ID [0, 255] for <compare offline_model>.")
700
+ parser.add_argument("--step", dest="step", type=str, required=False,
701
+ help="<optional> Steps to compare when compare kernel of MindSpore.")
702
+ parser.add_argument('--input_data', dest="input_data", default='',
703
+ help='The input data path of the model. Separate multiple inputs with commas(,).'
704
+ ' E.g: input_0.bin,input_1.bin')
705
+ parser.add_argument('--input_shape', dest="input_shape", default='',
706
+ help="Shape of input shape. Separate multiple nodes with semicolons(;)."
707
+ " E.g: \"input_name1:1,224,224,3;input_name2:3,300\"")
708
+ parser.add_argument('--output_size', dest="output_size", default='',
709
+ help='The size of output. Separate multiple sizes with commas(,). E.g: 10200,34000')
710
+ parser.add_argument('--dym_shape_range', dest="dym_shape_range", default='',
711
+ help="Dynamic shape range using in dynamic model, using this means ignore input_shape."
712
+ " E.g: \"input_name1:1,3,200\~224,224-230;input_name2:1,300\"")
713
+ parser.add_argument('-ofs', '--onnx_fusion_switch', dest="onnx_fusion_switch", default=True,
714
+ help='Onnxruntime fusion switch, set False for dump complete onnx data when necessary. '
715
+ 'Usage: -ofs False')
676
716
 
677
717
 
678
718
  def get_sorted_ranks(npu_dump_dir, bench_dump_dir):
679
719
  """
680
720
  get the ranks and match by order
681
- """
721
+ """
682
722
  unsorted_npu_ranks = check_and_return_dir_contents(npu_dump_dir, 'rank')
683
723
  unsorted_bench_ranks = check_and_return_dir_contents(bench_dump_dir, 'rank')
684
724
  # 正则匹配已经校验rank后面必是数字,或者无数字的rank
@@ -738,6 +778,7 @@ def mp_logger_init(ranks_str):
738
778
  def wrap_logger(fn):
739
779
  def inner(msg, *args, **kwargs):
740
780
  return fn(ranks_str + msg, *args, **kwargs)
781
+
741
782
  return inner
742
783
 
743
784
  logger.info = wrap_logger(logger.info)
@@ -767,7 +808,7 @@ def compare_entry(compare_func, input_param, output_path, nr, kwargs):
767
808
  logger.error(f"Invalid or missing 'task' in dump.json. Skipping {nr} comparison.")
768
809
 
769
810
 
770
- def compare_distributed_inner(npu_dump_dir, bench_dump_dir, output_path, compare_func, **kwargs):
811
+ def compare_distributed_inner(npu_dump_dir, bench_dump_dir, output_path, **kwargs):
771
812
  def extract_compare_param(_file_type):
772
813
  npu_data_dir = os.path.join(npu_dump_dir, nr)
773
814
  bench_data_dir = os.path.join(bench_dump_dir, br)
@@ -777,9 +818,9 @@ def compare_distributed_inner(npu_dump_dir, bench_dump_dir, output_path, compare
777
818
  logger.debug(f'Did not find paired {_file_type} in {nr} and {br}, skip comparing.')
778
819
  return {}, True
779
820
  _input_param = {
780
- 'npu_json_path': npu_path,
781
- 'bench_json_path': bench_path,
782
- 'is_print_compare_log': kwargs.get('is_print_compare_log', True)
821
+ 'npu_path': npu_path,
822
+ 'bench_path': bench_path,
823
+ 'is_print_compare_log': kwargs.get('is_print_compare_log', False)
783
824
  }
784
825
  return _input_param, False
785
826
 
@@ -812,22 +853,72 @@ def compare_distributed_inner(npu_dump_dir, bench_dump_dir, output_path, compare
812
853
 
813
854
  dump_data = load_json(pre_check_dump_path)
814
855
 
856
+ compare_framework = dump_data.get("framework", None)
857
+ if compare_framework == Const.PT_FRAMEWORK:
858
+ from msprobe.pytorch.compare.pt_compare import pt_compare
859
+ compare_func = pt_compare
860
+ elif compare_framework == Const.MS_FRAMEWORK:
861
+ from msprobe.mindspore.compare.ms_compare import ms_compare
862
+ compare_func = ms_compare
863
+ else:
864
+ logger.error(f"Unrecognized framework, now is {compare_framework}, please check dump.json.")
865
+ raise CompareException(CompareException.INVALID_TASK_ERROR)
866
+
867
+ compare_json_file_type = Const.DUMP_JSON_FILE
868
+ if dump_data.get('level') == Const.LEVEL_DEBUG:
869
+ compare_json_file_type = Const.DEBUG_JSON_FILE
815
870
  # ------------------统计量、md5比对------------------
816
871
  if dump_data.get('task') == Const.STATISTICS:
817
872
  # dump数据为统计量或md5时,多进程加速比对
818
873
  input_param_nr_list = []
819
874
  for nr, br in zip(npu_ranks, bench_ranks):
820
- for file_type in [Const.DUMP_JSON_FILE, Const.DEBUG_JSON_FILE]:
821
- input_param, skip = extract_compare_param(file_type)
822
- if not skip:
823
- input_param_nr_list.append((input_param, nr))
875
+ input_param, skip = extract_compare_param(compare_json_file_type)
876
+ if not skip:
877
+ input_param_nr_list.append((input_param, nr))
824
878
  func_args = (compare_func, input_param_nr_list, output_path, kwargs)
825
879
  multi_statistics_compare(multi_ranks_compare, func_args)
826
880
  return
827
881
 
828
882
  # ------------------真实数据比对------------------
829
883
  for nr, br in zip(npu_ranks, bench_ranks):
830
- for file_type in [Const.DUMP_JSON_FILE, Const.DEBUG_JSON_FILE]:
831
- input_param, skip = extract_compare_param(file_type)
832
- if not skip:
833
- compare_entry(compare_func, input_param, output_path, nr, kwargs)
884
+ input_param, skip = extract_compare_param(compare_json_file_type)
885
+ if not skip:
886
+ compare_entry(compare_func, input_param, output_path, nr, kwargs)
887
+
888
+
889
+ def check_input_param_path(input_param):
890
+ npu_path = input_param.get("npu_path", None)
891
+ bench_path = input_param.get("bench_path", None)
892
+ check_file_or_directory_path(npu_path)
893
+ check_file_or_directory_path(bench_path)
894
+
895
+
896
+ def get_compare_framework(target_path, golden_path):
897
+ target_dump_json_content = load_json(target_path)
898
+ golden_dump_json_content = load_json(golden_path)
899
+ target_framework = target_dump_json_content.get("framework", None)
900
+ golden_framework = golden_dump_json_content.get("framework", None)
901
+ if target_framework == Const.PT_FRAMEWORK and golden_framework == Const.PT_FRAMEWORK:
902
+ frame_name = Const.PT_FRAMEWORK
903
+ elif (target_framework in [Const.MS_FRAMEWORK, Const.MT_FRAMEWORK] and
904
+ golden_framework in [Const.PT_FRAMEWORK, Const.MS_FRAMEWORK]):
905
+ frame_name = Const.MS_FRAMEWORK
906
+ else:
907
+ logger.error(f"Unrecognized framework, target now is {target_framework}, golden now is {golden_framework},"
908
+ f" please check dump.json.")
909
+ raise CompareException(CompareException.INVALID_TASK_ERROR)
910
+ return frame_name
911
+
912
+
913
+ def check_input_param_path_and_framework(args, target_framework):
914
+ compare_framework = get_compare_framework(args.target_path, args.golden_path)
915
+ if compare_framework != target_framework:
916
+ logger.error(f"Expected frame to be {target_framework}, actual is {compare_framework}, please check dump.json.")
917
+ raise CompareException(CompareException.INVALID_TASK_ERROR)
918
+
919
+ if target_framework == Const.PT_FRAMEWORK and not is_module_available("torch"):
920
+ logger.error("PyTorch does not exist, please install PyTorch library")
921
+ raise Exception("PyTorch does not exist, please install PyTorch library")
922
+ if target_framework == Const.MS_FRAMEWORK and not is_module_available("mindspore"):
923
+ logger.error("MindSpore does not exist, please install MindSpore library")
924
+ raise Exception("MindSpore does not exist, please install MindSpore library")
@@ -1,17 +1,18 @@
1
- # Copyright (c) 2024-2024, Huawei Technologies Co., Ltd.
2
- # All rights reserved.
1
+ # -------------------------------------------------------------------------
2
+ # This file is part of the MindStudio project.
3
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
3
4
  #
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
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:
7
8
  #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
+ # http://license.coscl.org.cn/MulanPSL2
9
10
  #
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.
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
+ # -------------------------------------------------------------------------
15
16
 
16
17
  import msprobe.core.config_check.checkers
17
18
  from msprobe.core.config_check.config_checker import ConfigChecker