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,197 @@
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 file mainly involves xxxx function.
21
+ """
22
+ import os
23
+ import re
24
+ import time
25
+
26
+ from msprobe.msaccucmp.cmp_utils import log
27
+ from msprobe.msaccucmp.cmp_utils.file_utils import FileUtils
28
+ from msprobe.msaccucmp.cmp_utils import path_check as path_utils
29
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
30
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
31
+ from msprobe.msaccucmp.compare_vector import VectorComparison
32
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.fusion_rule_parser import FusionRuleParser
33
+
34
+
35
+ class BatchCompare:
36
+ """
37
+ The class for batch compare
38
+ """
39
+ DUMP_FILE_PATH_FORMAT = "dump_path/time/device_id/model_name/model_id/dump_step/dump_file"
40
+
41
+ def __init__(self: any) -> None:
42
+ self.model_name_to_json_map = {}
43
+ self.json_path_to_dump_path_map = {}
44
+
45
+ @staticmethod
46
+ def _check_path_valid(path: str) -> None:
47
+ ret = path_utils.check_path_valid(path, True, False, path_utils.PathType.Directory)
48
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
49
+ raise CompareError(ret)
50
+
51
+ def check_fusion_rule_json_dir(self: any, fusion_rule_json_dir: str) -> bool:
52
+ """
53
+ Check fusion rule is dir or not
54
+ :param fusion_rule_json_dir: the path for fusion rule json
55
+ :return:bool
56
+ """
57
+ fusion_rule_path = os.path.realpath(fusion_rule_json_dir)
58
+ if os.path.isfile(fusion_rule_path):
59
+ return False
60
+ self._check_path_valid(fusion_rule_json_dir)
61
+ return True
62
+
63
+ def check_argument_valid(self: any, arguments: any) -> None:
64
+ """
65
+ Check argument valid
66
+ """
67
+ if arguments.op_name:
68
+ log.print_error_log(
69
+ "the {} single operator comparison is not supported for batch network comparison.".format(
70
+ arguments.op_name))
71
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
72
+
73
+ npu_dump_path = os.path.realpath(arguments.my_dump_path)
74
+ self._check_path_valid(npu_dump_path)
75
+ # check whether the path ends with a timestamp.
76
+ path = os.path.split(npu_dump_path)
77
+ # path[1]:last level directory
78
+ if not path[1].isdigit():
79
+ log.print_error_log("The {} path must end with a timestamp.".format(npu_dump_path))
80
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
81
+
82
+ def compare(self: any, arguments: any) -> int:
83
+ """
84
+ Compare the entire network in batches
85
+ :param arguments: the command parameters
86
+ :return: the compare finish status code
87
+ """
88
+ self.check_argument_valid(arguments)
89
+ self._make_model_name_to_json_map(os.path.realpath(arguments.fusion_rule_file))
90
+ self._make_json_path_to_dump_path_map(os.path.realpath(arguments.my_dump_path))
91
+ return self._execute_batch_compare(arguments)
92
+
93
+ def _make_model_name_to_json_map(self: any, json_dir_path: str) -> None:
94
+ for json_file_name in os.listdir(json_dir_path):
95
+ json_file_path = os.path.join(json_dir_path, json_file_name)
96
+ if json_file_path.endswith(".json"):
97
+ self._parse_json_file(json_file_path)
98
+
99
+ if not self.model_name_to_json_map:
100
+ log.print_error_log('There is no fusion rule json file in "%r".' % json_dir_path)
101
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
102
+
103
+ def _parse_json_file(self: any, json_file_path: str) -> None:
104
+ fusion_rule_parse = FusionRuleParser(json_file_path)
105
+ json_object = FileUtils.load_json_file(json_file_path)
106
+ fusion_rule_parse.check_array_object_valid(json_object, ConstManager.GRAPH_OBJECT)
107
+ for graph in json_object[ConstManager.GRAPH_OBJECT]:
108
+ fusion_rule_parse.check_string_object_valid(graph, ConstManager.NAME_OBJECT)
109
+ model_name = graph[ConstManager.NAME_OBJECT]
110
+ self.model_name_to_json_map[model_name] = json_file_path
111
+
112
+ def _make_map_for_inconsistent_timestamp(self: any, graph_name: str, dump_file_path_map: dict,
113
+ npu_dump_dir: str) -> None:
114
+ # 1.get the number list from graph name.
115
+ # graph_name:'ge_default_20210420113943_73',graph_name_number_list:['20210420113943', '73'].
116
+ graph_name_number_list = re.findall(r"\d+", graph_name)
117
+ for _, model_name in enumerate(dump_file_path_map):
118
+ # 1.get the number list from model name.for example:
119
+ # model_name:'ge_default_20210420113944_73',model_name_number_list:['20210420113944', '73'].
120
+ model_name_number_list = re.findall(r"\d+", model_name)
121
+ # check graph_name and model_name inconsistent timestamps
122
+ if len(graph_name_number_list) != 2 or len(graph_name_number_list) != len(model_name_number_list):
123
+ log.print_npu_path_valid_message(npu_dump_dir, self.DUMP_FILE_PATH_FORMAT)
124
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
125
+ if graph_name_number_list[1] == model_name_number_list[1]:
126
+ dump_file_path = dump_file_path_map.get(model_name)
127
+ log.print_warn_log(
128
+ "The {0} and in {1} dump data are not generated at the same time. "
129
+ "The result may be incorrect.".format(graph_name, ",".join(dump_file_path)))
130
+ self.json_path_to_dump_path_map[self.model_name_to_json_map.get(graph_name)] = dump_file_path
131
+
132
+ def _make_json_path_to_dump_path_map(self: any, npu_dump_dir: str) -> None:
133
+ dump_file_path_map = self._get_npu_dump_file_map(npu_dump_dir)
134
+ graph_name_list = self.model_name_to_json_map.keys()
135
+ for graph_name in graph_name_list:
136
+ dump_file_path = dump_file_path_map.get(graph_name)
137
+ if dump_file_path:
138
+ self.json_path_to_dump_path_map[self.model_name_to_json_map.get(graph_name)] = dump_file_path
139
+ else:
140
+ self._make_map_for_inconsistent_timestamp(graph_name, dump_file_path_map, npu_dump_dir)
141
+
142
+ if not self.json_path_to_dump_path_map:
143
+ log.print_error_log("The {} not match fusion rule file".format(npu_dump_dir))
144
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
145
+
146
+ def _execute_batch_compare(self: any, arguments: any) -> int:
147
+ if os.path.islink(os.path.abspath(arguments.output_path)):
148
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % arguments.output_path)
149
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
150
+ output_path = os.path.realpath(arguments.output_path)
151
+ my_dump_path = os.path.realpath(arguments.my_dump_path)
152
+ ret = CompareError.MSACCUCMP_NONE_ERROR
153
+ for key, value in self.json_path_to_dump_path_map.items():
154
+ for dump_path in value:
155
+ path_data = dump_path.replace(my_dump_path, "").split("/")
156
+ # remove model_id from path_data,path_data:['0', 'ge_default_20210420113943_71', '10', '1']
157
+ model_id_index = len(path_data) - 2
158
+ path_data.pop(model_id_index)
159
+ if "" in path_data:
160
+ path_data.remove("")
161
+ result_csv = 'result_%s.csv' % time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
162
+ # generate result file,for example:'0_ge_default_20210420113943_71_1_result_20210715022552.csv'
163
+ file_name = "".join(["_".join(path_data), "_", result_csv])
164
+ arguments.my_dump_path = dump_path
165
+ arguments.fusion_rule_file = key
166
+ compare = VectorComparison(arguments)
167
+ compare.set_output_path(os.path.join(output_path, file_name))
168
+ ret = compare.compare()
169
+ return ret
170
+
171
+ def _get_npu_dump_file_map_by_model_id(self: any, model_name_dir: str, dump_file_path_map: dict) -> None:
172
+ for model_id in os.listdir(model_name_dir):
173
+ model_id_dir = os.path.join(model_name_dir, model_id)
174
+ self._check_path_valid(model_id_dir)
175
+ model_id_list = os.listdir(model_id_dir)
176
+ model_name = os.path.basename(model_name_dir)
177
+ if len(model_id_list) != 0:
178
+ step = max(model_id_list) if len(model_id_list) > 1 else model_id_list[0]
179
+ dump_step_path = os.path.join(model_id_dir, step)
180
+ if dump_file_path_map.get(model_name):
181
+ dump_file_path_map.get(model_name).append(dump_step_path)
182
+ else:
183
+ dump_file_path_map[model_name] = [dump_step_path]
184
+
185
+ def _get_npu_dump_file_map(self: any, npu_dump_dir: str) -> dict:
186
+ dump_file_path_map = {}
187
+ for device_id in os.listdir(npu_dump_dir):
188
+ device_id_dir = os.path.join(npu_dump_dir, device_id)
189
+ self._check_path_valid(device_id_dir)
190
+ for model_name in os.listdir(device_id_dir):
191
+ model_name_dir = os.path.join(device_id_dir, model_name)
192
+ self._check_path_valid(model_name_dir)
193
+ self._get_npu_dump_file_map_by_model_id(model_name_dir, dump_file_path_map)
194
+ if not dump_file_path_map:
195
+ log.print_npu_path_valid_message(npu_dump_dir, self.DUMP_FILE_PATH_FORMAT)
196
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
197
+ return dump_file_path_map
@@ -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
+
@@ -0,0 +1,245 @@
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
+ DetailComparison class. This class mainly involves the compare function.
21
+ """
22
+
23
+ import os
24
+
25
+ from msprobe.msaccucmp.vector_cmp.fusion_manager import fusion_rule_parser
26
+ from msprobe.msaccucmp.cmp_utils import utils, utils_type, path_check
27
+ from msprobe.msaccucmp.cmp_utils import log
28
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
29
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
30
+ from msprobe.msaccucmp.dump_parse import dump, mapping
31
+ from msprobe.msaccucmp.vector_cmp.compare_detail.detail_writer import DetailWriter
32
+ from msprobe.msaccucmp.vector_cmp.compare_detail.detail import DetailInfo
33
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.compare_fusion_op import FusionOpComparison
34
+ from msprobe.msaccucmp.conversion.tensor_conversion import TensorConversion
35
+
36
+
37
+ class DetailComparison:
38
+ """
39
+ The class for fusion op compare
40
+ """
41
+
42
+ def __init__(self: any, detail_info: DetailInfo, fusion_op_comparison: FusionOpComparison,
43
+ output_path: str) -> None:
44
+ self.detail_info = detail_info
45
+ self.fusion_op_comparison = fusion_op_comparison
46
+ self.detail_writer = DetailWriter(output_path, detail_info)
47
+ self.fusion_op = None
48
+
49
+ def check_index_valid(self: any, my_output_data: any) -> None:
50
+ """
51
+ Check index valid
52
+ :param my_output_data: my output data
53
+ """
54
+ if self.detail_info.tensor_id.is_input():
55
+ count = len(my_output_data.input_data)
56
+ else:
57
+ count = len(my_output_data.output_data)
58
+ if self.detail_info.tensor_id.index >= count:
59
+ log.print_out_of_range_error(self.fusion_op.op_name, self.detail_info.tensor_id.tensor_type,
60
+ self.detail_info.tensor_id.index, '[0, %d)' % count)
61
+ raise CompareError(CompareError.MSACCUCMP_INDEX_OUT_OF_BOUNDS_ERROR)
62
+
63
+ def compare(self: any) -> int:
64
+ """
65
+ Compare detail by op name
66
+ :return error_code
67
+ """
68
+ tensor_id = self.detail_info.tensor_id.get_tensor_id()
69
+ log.print_info_log('[%s] Start to compare detail for %s.'
70
+ % (self.detail_info.tensor_id.op_name, tensor_id))
71
+ # get fusion op list by op name
72
+ tensor_list, dump_file_name = self._get_my_output_tensor_list()
73
+
74
+ # delete old result
75
+ try:
76
+ self.detail_writer.delete_old_detail_result_files()
77
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError,
78
+ MemoryError, KeyError, IOError) as error:
79
+ log.print_error_log('Failed to delete the old detail result file. %s' % error)
80
+ raise CompareError(CompareError.MSACCUCMP_DELETE_FILE_ERROR) from error
81
+
82
+ # get right dump data by original op name and index
83
+ try:
84
+ ground_truth_tensor = \
85
+ self.fusion_op_comparison.get_right_dump_data(
86
+ self.fusion_op, self.detail_info.tensor_id.index, self.detail_info.tensor_id.is_input())
87
+ except CompareError as compare_error:
88
+ if compare_error.code == CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR:
89
+ log.print_no_right_dump_file_error(self.fusion_op.op_name, tensor_id, is_error=True)
90
+ raise compare_error
91
+
92
+ # get format by right output info
93
+ self.detail_info.set_detail_format(utils.convert_shape_to_string(
94
+ tensor_list[self.detail_info.tensor_id.index].shape),
95
+ tensor_list[self.detail_info.tensor_id.index].tensor_format,
96
+ ground_truth_tensor.tensor_format
97
+ )
98
+ # deserialize output data to array
99
+ tensor_conversion = TensorConversion(self.fusion_op, self.fusion_op_comparison.format_manager,
100
+ is_detail=True)
101
+ my_output_array, ground_truth_array, my_output_shape = \
102
+ tensor_conversion.get_my_output_and_ground_truth_data(
103
+ self.fusion_op_comparison.compare_data, tensor_list[self.detail_info.tensor_id.index],
104
+ ground_truth_tensor)
105
+ self.detail_writer.write(my_output_shape, my_output_array, ground_truth_array, dump_file_name)
106
+ return CompareError.MSACCUCMP_NONE_ERROR
107
+
108
+ def _print_l1_fusion_warning(self: any) -> None:
109
+ timestamp_list = self.fusion_op_comparison.sort_l1_fusion_dump_file()
110
+ max_timestamp_op_name = timestamp_list[-1][ConstManager.FUSION_OP_INDEX].op_name
111
+ if self.fusion_op.op_name != max_timestamp_op_name:
112
+ log.print_warn_log(
113
+ 'The dump data of %s is incomplete, the comparison may be far away. '
114
+ 'The dump data of %s may be complete, It is best to use %s for comparison.'
115
+ % (self.fusion_op.op_name, max_timestamp_op_name, max_timestamp_op_name))
116
+
117
+ def _get_my_output_tensor_by_op(self: any, relation: int) -> any:
118
+ my_output_data_path, my_output_data = \
119
+ self.fusion_op_comparison.compare_data.get_left_dump_data(self.fusion_op.op_name)
120
+ dump_file = os.path.basename(my_output_data_path)
121
+ self.check_index_valid(my_output_data)
122
+ if self.detail_info.tensor_id.is_input():
123
+ tensor_list = my_output_data.input_data
124
+ else:
125
+ if relation == utils_type.FusionRelation.L1Fusion:
126
+ self._print_l1_fusion_warning()
127
+ tensor_list = my_output_data.output_data
128
+ return tensor_list, dump_file
129
+
130
+ def _get_my_output_tensor_list(self: any) -> list:
131
+ self.fusion_op, fusion_op_list = self.detail_info.get_detail_op(
132
+ self.fusion_op_comparison.compare_rule.fusion_info)
133
+ if self.fusion_op.is_inner_node():
134
+ log.print_skip_inner_op_msg(self.fusion_op.op_name, is_error=True)
135
+ raise CompareError(CompareError.MSACCUCMP_UNSUPPORTED_COMPARE_ERROR)
136
+ if self.fusion_op.attr.quant_filter:
137
+ log.print_error_log("[{}] The -op param should not specify an operator in quant/dequant pair."
138
+ .format(self.fusion_op.op_name))
139
+ raise CompareError(CompareError.MSACCUCMP_UNSUPPORTED_COMPARE_ERROR)
140
+ relation = fusion_rule_parser.get_relation_for_fusion(fusion_op_list)
141
+ try:
142
+ tensor_list, dumpfile = self._get_my_output_tensor_by_op(relation)
143
+ except CompareError as compare_error:
144
+ if compare_error.code == CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR:
145
+ log.print_no_left_dump_file_error(self.fusion_op.op_name, self.fusion_op.op_type, True)
146
+ raise compare_error
147
+ finally:
148
+ pass
149
+ return tensor_list, dumpfile
150
+
151
+
152
+ class DumpDetailComparison:
153
+ """
154
+ The class for Npu dump op compare
155
+ """
156
+
157
+ def __init__(self: any, detail_info: DetailInfo, compare_data: dump.CompareData,
158
+ output_path: str) -> None:
159
+ self.detail_info = detail_info
160
+ self.compare_data = compare_data
161
+ self.detail_writer = DetailWriter(output_path, detail_info)
162
+ self.fusion_op = None
163
+
164
+ @staticmethod
165
+ def _check_index_valid(tensor_data, op_name, tensor_index, tensor_type):
166
+ if tensor_index >= len(tensor_data):
167
+ log.print_out_of_range_error(op_name, tensor_type, tensor_index, '[0, %d)' % len(tensor_data))
168
+ raise CompareError(CompareError.MSACCUCMP_INDEX_OUT_OF_BOUNDS_ERROR)
169
+
170
+ def compare(self: any) -> int:
171
+ """
172
+ Compare detail by op name
173
+ :return error_code
174
+ """
175
+ tensor_id = self.detail_info.tensor_id.get_tensor_id()
176
+ op_name = self.detail_info.tensor_id.op_name
177
+ tensor_type = self.detail_info.tensor_id.tensor_type
178
+ tensor_index = self.detail_info.tensor_id.index
179
+ log.print_info_log('[%s] Start to compare detail for %s.'
180
+ % (op_name, tensor_id))
181
+
182
+ left_path, left_tensor_data, right_tensor_data = self.get_tensor_data(op_name, tensor_type)
183
+
184
+ self._check_index_valid(left_tensor_data, op_name, tensor_index, tensor_type)
185
+ self._check_index_valid(right_tensor_data, op_name, tensor_index, tensor_type)
186
+
187
+ my_output_shape = tuple(left_tensor_data[tensor_index].shape)
188
+ ground_truth_shape = tuple(right_tensor_data[tensor_index].shape)
189
+ if my_output_shape != ground_truth_shape:
190
+ log.print_error_log("My Output data shape %s not equal to Ground Truth data shape %s."
191
+ "Can not compare." % (my_output_shape, ground_truth_shape))
192
+ raise CompareError(CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR)
193
+
194
+ my_output_array = left_tensor_data[tensor_index].data
195
+ ground_truth_array = right_tensor_data[tensor_index].data
196
+
197
+ self.detail_info.set_detail_ops(op_name, op_name)
198
+ self.detail_info.check_and_set_format(utils.convert_shape_to_string(
199
+ left_tensor_data[tensor_index].shape),
200
+ left_tensor_data[tensor_index].tensor_format,
201
+ right_tensor_data[tensor_index].tensor_format
202
+ )
203
+
204
+ # delete old result
205
+ try:
206
+ self.detail_writer.delete_old_detail_result_files()
207
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError,
208
+ MemoryError, KeyError, IOError) as error:
209
+ log.print_error_log('Failed to delete the old detail result file. %s' % error)
210
+ raise CompareError(CompareError.MSACCUCMP_DELETE_FILE_ERROR) from error
211
+
212
+ dump_file = os.path.basename(left_path)
213
+ self.detail_writer.write(my_output_shape, my_output_array, ground_truth_array, dump_file)
214
+ return CompareError.MSACCUCMP_NONE_ERROR
215
+
216
+ def get_tensor_data(self, op_name, tensor_type):
217
+ """
218
+ Get tensor form dump data
219
+ :return left_path
220
+ :return left_tensor_data
221
+ :return right_tensor_data
222
+ """
223
+ try:
224
+ left_path, left_data = self.compare_data.get_left_dump_data(op_name)
225
+ except CompareError as compare_error:
226
+ log.print_error_log('Failed to find %s dump data from -m dump data path.' % op_name)
227
+ raise compare_error
228
+ finally:
229
+ pass
230
+ try:
231
+ right_path, right_data = self.compare_data.get_right_dump_data(op_name)
232
+ except CompareError as compare_error:
233
+ log.print_error_log('Failed to find %s dump data from -g dump data path.' % op_name)
234
+ raise compare_error
235
+ finally:
236
+ pass
237
+ log.print_info_log("My Output data path: " + left_path)
238
+ log.print_info_log("Ground Truth data path: " + right_path)
239
+ if tensor_type == ConstManager.INPUT:
240
+ left_tensor_data = left_data.input_data
241
+ right_tensor_data = right_data.input_data
242
+ else:
243
+ left_tensor_data = left_data.output_data
244
+ right_tensor_data = right_data.output_data
245
+ return left_path, left_tensor_data, right_tensor_data
@@ -0,0 +1,182 @@
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 file mainly involves the common function.
21
+ """
22
+
23
+ from msprobe.msaccucmp.cmp_utils import common
24
+ from msprobe.msaccucmp.cmp_utils import log
25
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager, DD
26
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
27
+ from msprobe.msaccucmp.cmp_utils.reg_manager import RegManager
28
+ from msprobe.msaccucmp.cmp_utils.path_check import check_name_valid
29
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.fusion_op import FusionOp
30
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.fusion_rule_parser import FusionRuleParser
31
+ from msprobe.msaccucmp.vector_cmp.fusion_manager import fusion_rule_parser
32
+
33
+
34
+ class TensorId:
35
+ """
36
+ The class for tensor id
37
+ """
38
+
39
+ def __init__(self: any, op_name: str, tensor_type: str, index: str) -> None:
40
+ self.op_name = op_name
41
+ self.tensor_type = tensor_type
42
+ if not RegManager.match_pattern(RegManager.NUMBER_PATTERN, index):
43
+ log.print_only_support_error('detail index', index, 'natural number')
44
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
45
+ self.index = int(index)
46
+
47
+ def check_arguments_valid(self: any) -> None:
48
+ """
49
+ check arguments valid, if invalid, throw exception
50
+ """
51
+ ret = check_name_valid(self.op_name)
52
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
53
+ raise CompareError(ret)
54
+ if self.tensor_type not in ConstManager.SUPPORT_DETAIL_TYPE:
55
+ log.print_only_support_error('detail type', self.tensor_type,
56
+ ConstManager.SUPPORT_DETAIL_TYPE)
57
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
58
+
59
+ def get_tensor_id(self: any) -> str:
60
+ """
61
+ Get tensor id
62
+ """
63
+ return "%s:%s:%d" % (self.op_name, self.tensor_type, self.index)
64
+
65
+ def is_input(self: any) -> bool:
66
+ """
67
+ is input
68
+ :return: true if input
69
+ """
70
+ return self.tensor_type == ConstManager.INPUT
71
+
72
+ def get_file_prefix(self: any) -> str:
73
+ """
74
+ Get detail file name prefix
75
+ :return str
76
+ """
77
+ return "%s_%s_%d" % (self.op_name.replace('/', '_'), self.tensor_type, self.index)
78
+
79
+ def get_tensor_type_index(self: any) -> str:
80
+ """
81
+ Get detail file name prefix, like _input_0
82
+ :return str
83
+ """
84
+ return "_%s_%d" % (self.tensor_type, self.index)
85
+
86
+
87
+ class DetailInfo:
88
+ """
89
+ The class for detail info
90
+ """
91
+
92
+ def __init__(self: any, tensor_id: TensorId, top_n: int, ignore_result: bool, max_line: int) -> None:
93
+ self.tensor_id = tensor_id
94
+ self.my_output_ops = ''
95
+ self.ground_truth_ops = ''
96
+ self.detail_format = ''
97
+ self.top_n = top_n
98
+ self.ignore_result = ignore_result
99
+ self.max_line = max_line
100
+
101
+ def check_arguments_valid(self: any) -> None:
102
+ """
103
+ check arguments valid, if invalid, throw exception
104
+ """
105
+ self.tensor_id.check_arguments_valid()
106
+ const_manager = ConstManager()
107
+ if self.top_n < const_manager.min_top_n or self.top_n > const_manager.max_top_n:
108
+ log.print_out_of_range_error('', 'top n', self.top_n,
109
+ '[%d, %d]' % (const_manager.min_top_n, const_manager.max_top_n))
110
+ raise CompareError(CompareError.MSACCUCMP_INDEX_OUT_OF_BOUNDS_ERROR)
111
+
112
+ def get_detail_op(self: any, fusion_rule: FusionRuleParser) -> (FusionOp, list):
113
+ """
114
+ Get detail op by fusion rule
115
+ :param: fusion_rule: the fusion rule
116
+ :return: the fusion op, the fusion op list
117
+ """
118
+ fusion_op_list, fusion_op = fusion_rule.get_fusion_op_list(self.tensor_id.op_name)
119
+ # get the map for {original_op_names, op_list}
120
+ right_to_left_map = fusion_rule_parser.make_right_to_left_multi_map(
121
+ fusion_op_list)
122
+ my_output_ops_str, ground_truth_ops_str = fusion_rule_parser.make_left_and_right_string(right_to_left_map)
123
+ # if right ops is empty, mark '*' indicates that the left op is a
124
+ # new operator, and there is no operator on the right that matches it
125
+ if ground_truth_ops_str == "":
126
+ ground_truth_ops_str = '*'
127
+ self.my_output_ops = my_output_ops_str.replace(',', ' ')
128
+ self.ground_truth_ops = ground_truth_ops_str.replace(',', ' ')
129
+ return fusion_op, fusion_op_list
130
+
131
+ def set_detail_format(self: any, shape_str: str, tensor_format: int, ground_truth_format: str) -> None:
132
+ """
133
+ Set detail format by shape
134
+ :param shape_str: the shape string
135
+ :param tensor_format: tensor format
136
+ :param ground_truth_format: ground truth format
137
+ """
138
+ if common.contain_depth_dimension(tensor_format):
139
+ self.detail_format = 'N C D H W'
140
+ else:
141
+ if tensor_format == DD.FORMAT_FRACTAL_Z:
142
+ self.detail_format = ' '.join(ground_truth_format)
143
+ else:
144
+ self.detail_format = "N C H W" if shape_str != "()" else "ID"
145
+
146
+ def check_and_set_format(self: any, shape_str: str, tensor_format: int, ground_truth_format: int) -> None:
147
+ """
148
+ Check and Set detail format by shape
149
+ :param shape_str: the shape string
150
+ :param tensor_format: tensor format
151
+ :param ground_truth_format: ground truth format
152
+ """
153
+ if tensor_format != ground_truth_format:
154
+ log.print_error_log("NPUDump tensor format not match Ground truth tensor format!"
155
+ "Cannot be directly compared.")
156
+ raise CompareError(CompareError.MSACCUCMP_INVALID_FORMAT_ERROR)
157
+ if common.contain_depth_dimension(tensor_format):
158
+ self.detail_format = 'N C D H W'
159
+ else:
160
+ self.detail_format = "N C H W" if shape_str != "()" else "ID"
161
+
162
+ def set_detail_ops(self: any, my_out_ops: str, ground_truth_ops: str) -> None:
163
+ """
164
+ Check and Set detail format by shape
165
+ :param my_out_ops: the opname of my out tensor
166
+ :param ground_truth_ops: the opname of ground truth tensor
167
+ """
168
+ self.my_output_ops = my_out_ops.replace(',', ' ')
169
+ self.ground_truth_ops = ground_truth_ops.replace(',', ' ')
170
+
171
+ def make_detail_header(self: any) -> str:
172
+ """
173
+ Make detail header
174
+ """
175
+ return "Index,%s,NPUDump,GroundTruth,AbsoluteError,RelativeError\n" % self.detail_format
176
+
177
+ def get_detail_info(self: any) -> str:
178
+ """
179
+ Get detail_info
180
+ """
181
+ return "NPUDump:%s\nGroundTruth:%s\nFormat:%s\n" % (self.my_output_ops, self.ground_truth_ops,
182
+ self.detail_format)