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,339 @@
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
+ NpuVsNpuComparison class. This class mainly involves the compare function.
21
+ """
22
+ import numpy as np
23
+
24
+ from msprobe.msaccucmp.cmp_utils import utils
25
+ from msprobe.msaccucmp.cmp_utils import common
26
+ from msprobe.msaccucmp.cmp_utils import log
27
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
28
+ from msprobe.msaccucmp.dump_parse.dump import CompareData
29
+ from msprobe.msaccucmp.algorithm_manager.algorithm_manager import AlgorithmManager
30
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.fusion_op import FusionOp
31
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.fusion_op import Tensor
32
+ from msprobe.msaccucmp.vector_cmp.fusion_manager import compare_result
33
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
34
+ from msprobe.msaccucmp.overflow.overflow_detection import OverflowDetection
35
+ from msprobe.msaccucmp.dump_parse.ffts_parser import FFTSParser
36
+ from msprobe.msaccucmp.dump_parse import dump_utils
37
+ from msprobe.msaccucmp.conversion.tensor_conversion import ConvertSingleTensorFormat
38
+
39
+
40
+ class NpuVsNpuComparison:
41
+ """
42
+ The class for npu vs npu comparison
43
+ """
44
+
45
+ def __init__(self: any, compare_data: CompareData, fusion_op_list: list, algorithm_manager: AlgorithmManager,
46
+ overflow_detection: bool = False) -> None:
47
+ self.compare_data = compare_data
48
+ self.fusion_op_list = fusion_op_list
49
+ self.algorithm_manager = algorithm_manager
50
+ self.op_name = fusion_op_list[0].op_name
51
+ self.overflow_detection = overflow_detection
52
+ self.enable_padding_restore = True # 预留用于控制是否开启补齐恢复
53
+ self._tensor_converter = ConvertSingleTensorFormat()
54
+
55
+ def check_tensor_valid(self: any, my_output_tensor_list: any, ground_truth_tensor_list: any,
56
+ tensor_type: str) -> (int, str):
57
+ """
58
+ check tensor valid
59
+ """
60
+ # check the length is same
61
+ if len(my_output_tensor_list) != len(ground_truth_tensor_list):
62
+ message = log.print_not_match_error(
63
+ self.op_name, 'number of %s' % tensor_type, str(len(my_output_tensor_list)),
64
+ str(len(ground_truth_tensor_list)))
65
+ return CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR, message
66
+ if len(my_output_tensor_list) != 0:
67
+ # check each tensor format and shape valid
68
+ return self._check_op_data_valid(my_output_tensor_list, ground_truth_tensor_list, tensor_type)
69
+ message = '[%s] There is no %s. Skip the %s:%s.' % (self.op_name, tensor_type, self.op_name, tensor_type)
70
+ log.print_info_log(message)
71
+ return CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR, message
72
+
73
+ def _restore_tensor_data_if_needed(self, tensor: Tensor):
74
+ """
75
+ 根据开关决定是否对 tensor 做格式转换 + 按 original_shape 切掉 padding。
76
+ """
77
+ if not self._tensor_converter:
78
+ return tensor.data
79
+
80
+ try:
81
+ # ConvertSingleTensorFormat.__call__ 返回的是 np.ndarray
82
+ restored = self._tensor_converter(tensor)
83
+ except CompareError as ee:
84
+ # 出错时回退到原始数据,保证比对流程不中断
85
+ log.print_error_log(ee)
86
+ return tensor.data
87
+ except Exception as ee: # 兜底
88
+ log.print_error_log(ee)
89
+ return tensor.data
90
+
91
+ return restored
92
+
93
+ def compare(self: any) -> (int, bool, list):
94
+ """
95
+ Compare for npu vs npu by op_name
96
+ :return ret: return code
97
+ :return dump_match: True, at least one operator match;False, no operator match
98
+ :return result: the compare result by the fusion op list
99
+ """
100
+ single_op_cmp_result = compare_result.SingleOpCmpResult()
101
+ if len(self.fusion_op_list) == 1:
102
+ return self._make_one_dump_file_result()
103
+ # get my output and ground truth tensor
104
+ error_msg = []
105
+ try:
106
+ my_output_dump_data = self._get_dump_data(
107
+ self.fusion_op_list[0], self.compare_data.left_dump_info.path,
108
+ self.compare_data.left_dump_info.op_name_to_task_mode_map, ConstManager.LEFT_TYPE)
109
+ except CompareError as error:
110
+ error_msg.append(error.message)
111
+ fusion_op_result = compare_result.FusionOpComResult(self.algorithm_manager)
112
+ _result = fusion_op_result.get_result(self.fusion_op_list[0], None, error_msg)
113
+ result_info = utils.ResultInfo(
114
+ self.fusion_op_list[0].op_name, True, _result.result_list, error.code,
115
+ [], _result.input_result_list, _result.output_result_list, _result.is_ffts,
116
+ {}, True)
117
+ single_op_cmp_result.update_attr(result_info)
118
+ return error.code, True, [single_op_cmp_result]
119
+
120
+ ground_truth_dump_data = self._get_dump_data(
121
+ self.fusion_op_list[1], self.compare_data.right_dump_info.path,
122
+ self.compare_data.right_dump_info.op_name_to_task_mode_map, ConstManager.RIGHT_TYPE)
123
+
124
+ compare_vector_result = []
125
+ # check npu input data valid
126
+ input_ret, input_error_msg = self.check_tensor_valid(
127
+ my_output_dump_data.data.input_data, ground_truth_dump_data.data.input_data, ConstManager.INPUT)
128
+ if input_ret == CompareError.MSACCUCMP_NONE_ERROR:
129
+ # compare input
130
+ compare_vector_result += self._compare_by_tensor(my_output_dump_data, ground_truth_dump_data,
131
+ ConstManager.INPUT)
132
+
133
+ # check npu output data valid
134
+ output_ret, output_error_msg = self.check_tensor_valid(
135
+ my_output_dump_data.data.output_data, ground_truth_dump_data.data.output_data, ConstManager.OUTPUT)
136
+
137
+ if output_ret == CompareError.MSACCUCMP_NONE_ERROR:
138
+ # compare output
139
+ compare_vector_result += self._compare_by_tensor(my_output_dump_data, ground_truth_dump_data,
140
+ ConstManager.OUTPUT)
141
+
142
+ if not my_output_dump_data.data.ffts_file_check:
143
+ msg = "This is a FFTS+ mode dump data, The number of files does not match the number of thread"
144
+ error_msg.append(msg)
145
+ # if no input and output, result is NaN
146
+ if input_ret != CompareError.MSACCUCMP_NONE_ERROR and output_ret != CompareError.MSACCUCMP_NONE_ERROR:
147
+ error_msg.append(input_error_msg)
148
+ error_msg.append(output_error_msg)
149
+ compare_vector_result = None
150
+ else:
151
+ output_ret = CompareError.MSACCUCMP_NONE_ERROR
152
+ fusion_op_result = compare_result.FusionOpComResult(self.algorithm_manager)
153
+ _result = fusion_op_result.get_result(self.fusion_op_list[0], compare_vector_result, error_msg)
154
+
155
+ result_info = utils.ResultInfo(
156
+ my_output_dump_data.name, True, _result.result_list, output_ret,
157
+ [], _result.input_result_list, _result.output_result_list, _result.is_ffts,
158
+ {}, True)
159
+
160
+ single_op_cmp_result.update_attr(result_info)
161
+
162
+ return output_ret, True, [single_op_cmp_result]
163
+
164
+ def _make_one_dump_file_result(self: any) -> (int, bool, list):
165
+ error_msg = []
166
+ # if only left or right has dump file, the result is NaN
167
+ single_op_cmp_result = compare_result.SingleOpCmpResult()
168
+ if self.fusion_op_list[0].op_type == ConstManager.LEFT_TYPE:
169
+ message = '[%s] There is no the ground truth dump file for the op "%s".' % (self.op_name, self.op_name)
170
+ log.print_warn_log(message)
171
+ error_msg.append(message)
172
+ elif self.fusion_op_list[0].op_type == ConstManager.RIGHT_TYPE:
173
+ message = '[%s] There is no the my output dump file for the op "%s".' % (self.op_name, self.op_name)
174
+ log.print_warn_log(message)
175
+ error_msg.append(message)
176
+ fusion_op_result = compare_result.FusionOpComResult(self.algorithm_manager,
177
+ overflow_detection=self.overflow_detection)
178
+ _result = fusion_op_result.get_result(self.fusion_op_list[0], None, error_msg, no_dump_file=True)
179
+
180
+ result_info = utils.ResultInfo(
181
+ self.fusion_op_list[0].op_name, False, _result.result_list,
182
+ CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR,
183
+ self.fusion_op_list[0].input_list, _result.input_result_list,
184
+ _result.output_result_list, _result.is_ffts, {}, True)
185
+
186
+ single_op_cmp_result.update_attr(result_info)
187
+
188
+ return CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR, False, [single_op_cmp_result]
189
+
190
+ def _get_dump_data(self: any, fusion_op: FusionOp, dump_path: str,
191
+ op_name_to_task_mode_map, dump_type: str) -> Tensor:
192
+ """
193
+ get dump data by fusion op output_desc
194
+ """
195
+ dump_file_list = fusion_op.output_desc
196
+ if not dump_file_list:
197
+ raise CompareError(CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR)
198
+ dump_data_list = [dump_utils.parse_dump_file(dump_file_path, self.compare_data.dump_version)
199
+ for dump_file_path in dump_file_list]
200
+ dump_mode = op_name_to_task_mode_map.get(self.op_name)
201
+ if dump_mode == ConstManager.AUTOMATIC_MODE or dump_mode == ConstManager.MANUAL_MODE:
202
+ ffts_parser = FFTSParser(dump_file_list, dump_data_list)
203
+ dump_file_path, dump_data = ffts_parser.parse_ffts
204
+ log.print_info_log(
205
+ 'The "%s" in the path "%s" is FFTS+ dump data. After process the output data, the file path is "%s".'
206
+ % (fusion_op.op_name, dump_path, dump_file_path))
207
+ else:
208
+ dump_file_path = dump_file_list[-1]
209
+ dump_data = dump_data_list[-1]
210
+ log.print_info_log('[%s] [%s] %s' % (fusion_op.op_name, dump_type, dump_file_path))
211
+ if dump_data.op_name and dump_data.attr:
212
+ fusion_op.op_name = dump_data.op_name
213
+ tensor = Tensor(fusion_op.op_name, 0, '', [])
214
+ tensor.set_path(dump_file_path)
215
+ tensor.set_data(dump_data)
216
+ return tensor
217
+
218
+ def _check_op_data_valid(self: any, my_output_list: any, ground_truth_list: any, tensor_type: str) -> (int, str):
219
+ """
220
+ check format and shape of each tensor valid
221
+ """
222
+ message = ""
223
+ tensor_id_prefix = "%s:%s" % (self.op_name, tensor_type)
224
+ for index, (my_output_tensor, ground_truth_tensor) in enumerate(zip(my_output_list, ground_truth_list)):
225
+ tensor_id = '%s:%d' % (tensor_id_prefix, index)
226
+ # check format valid
227
+ if my_output_tensor.tensor_format != ground_truth_tensor.tensor_format:
228
+ message = log.print_not_match_error(
229
+ self.op_name, 'format',
230
+ common.get_format_string(my_output_tensor.tensor_format),
231
+ common.get_format_string(ground_truth_tensor.tensor_format), tensor_id)
232
+ return CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR, message
233
+
234
+ # check the length of shape is the same
235
+ if len(my_output_tensor.shape) != len(ground_truth_tensor.shape):
236
+ message = log.print_not_match_error(
237
+ self.op_name, 'shape',
238
+ utils.convert_shape_to_string(my_output_tensor.shape),
239
+ utils.convert_shape_to_string(ground_truth_tensor.shape), tensor_id)
240
+ return CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR, message
241
+ # check each dim in shape is the same
242
+ for my_output_dim, ground_truth_dim in zip(my_output_tensor.shape, ground_truth_tensor.shape):
243
+ if my_output_dim != ground_truth_dim:
244
+ message = log.print_not_match_error(
245
+ self.op_name, 'shape',
246
+ utils.convert_shape_to_string(my_output_tensor.shape),
247
+ utils.convert_shape_to_string(ground_truth_tensor.shape), tensor_id)
248
+ return CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR, message
249
+ return CompareError.MSACCUCMP_NONE_ERROR, message
250
+
251
+ def _compare_by_one_tensor(self: any, my_output_dump_data: Tensor, ground_truth_dump_data: Tensor,
252
+ my_output_tensor: any, ground_truth_tensor: any) -> (list, list):
253
+ error_msg = []
254
+ tensor_id = f"{self.op_name}_TENSOR"
255
+
256
+ # 1. deserialize output data to array
257
+ if my_output_tensor and ground_truth_tensor:
258
+ if self.enable_padding_restore:
259
+
260
+ restored_left = self._restore_tensor_data_if_needed(my_output_tensor)
261
+ restored_right = self._restore_tensor_data_if_needed(ground_truth_tensor)
262
+
263
+ # 强制 numpy flatten,避免后端 compare 出现 numpy bool 错误
264
+ my_output_data_array = np.asarray(restored_left).astype(np.float32).flatten()
265
+ ground_truth_data_array = np.asarray(restored_right).astype(np.float32).flatten()
266
+
267
+ # 若长度不一致,直接报 warning,方便定位问题
268
+ if my_output_data_array.shape != ground_truth_data_array.shape:
269
+ message = f"[{tensor_id}] Shape mismatch after restore: " \
270
+ f"{my_output_data_array.shape} vs {ground_truth_data_array.shape}"
271
+ log.print_warn_log(message)
272
+ raise CompareError(CompareError.MSACCUCMP_INVALID_SHAPE_ERROR, message)
273
+ else:
274
+ my_output_data_array = my_output_tensor.data.flatten()
275
+ ground_truth_data_array = ground_truth_tensor.data.flatten()
276
+ else:
277
+ return self.algorithm_manager.make_nan_result(), error_msg
278
+
279
+ try:
280
+ # 2. compare by support algorithm
281
+ algorithm_result, error_msg = self.algorithm_manager.compare(
282
+ my_output_data_array, ground_truth_data_array,
283
+ {'my_output_dump_file': my_output_dump_data.path,
284
+ 'ground_truth_dump_file': ground_truth_dump_data.path,
285
+ 'shape_type': utils.get_shape_type(my_output_tensor.shape)})
286
+ except CompareError as compare_error:
287
+ if isinstance(compare_error, CompareError):
288
+ error_msg.append(compare_error.message)
289
+ algorithm_result = self.algorithm_manager.make_nan_result()
290
+
291
+ return algorithm_result, error_msg
292
+
293
+ def _compare_by_tensor(self: any, my_output_dump_data: Tensor, ground_truth_dump_data: Tensor,
294
+ tensor_type: str) -> list:
295
+ tensor_result_list = []
296
+ if tensor_type == ConstManager.INPUT:
297
+ my_output_tensor_list = my_output_dump_data.data.input_data
298
+ ground_truth_tensor_list = ground_truth_dump_data.data.input_data
299
+ is_input = True
300
+ else:
301
+ my_output_tensor_list = my_output_dump_data.data.output_data
302
+ ground_truth_tensor_list = ground_truth_dump_data.data.output_data
303
+ is_input = False
304
+ # compare each tensor
305
+ for index, (my_output_tensor, ground_truth_tensor) in enumerate(
306
+ zip(my_output_tensor_list, ground_truth_tensor_list)):
307
+ tensor_id = '%s:%s:%d' % (my_output_dump_data.name, tensor_type, index)
308
+ log.print_info_log('[%s] compare %s %s for %s.'
309
+ % (self.fusion_op_list[0].op_name,
310
+ common.get_format_string(my_output_tensor.tensor_format),
311
+ utils.convert_shape_to_string(my_output_tensor.shape),
312
+ tensor_id))
313
+ algorithm_result, error_msg = self._compare_by_one_tensor(my_output_dump_data, ground_truth_dump_data,
314
+ my_output_tensor, ground_truth_tensor)
315
+ # Check whether the current input/output data overflows
316
+ overflow_result = ''
317
+ if self.overflow_detection:
318
+ overflow_result = OverflowDetection.process_model_overflow_detection(my_output_dump_data.name,
319
+ index, is_input, my_output_tensor)
320
+ my_output_tensor_dtype = utils.get_data_type(my_output_tensor.data_type)
321
+ ground_truth_tensor_dtype = utils.get_data_type(ground_truth_tensor.data_type)
322
+ my_output_tensor_address = utils.get_address_from_tensor(my_output_tensor)
323
+ ground_truth_tensor_address = utils.get_address_from_tensor(ground_truth_tensor)
324
+ op_type = dump_utils.get_op_type_from_file_name(my_output_dump_data.path)
325
+
326
+ # 3. merge result
327
+ tensor_info = {
328
+ "tensor_id": tensor_id,
329
+ "shape": my_output_tensor.shape,
330
+ "op_type": op_type,
331
+ "my_output_dtype": my_output_tensor_dtype,
332
+ "ground_truth_dtype": ground_truth_tensor_dtype,
333
+ "my_output_address": my_output_tensor_address,
334
+ "ground_truth_address": ground_truth_tensor_address
335
+ }
336
+ tensor_result_list.append(
337
+ compare_result.TensorResult(
338
+ tensor_info, [algorithm_result, overflow_result], error_msg, my_output_tensor.is_ffts))
339
+ return tensor_result_list
@@ -0,0 +1,326 @@
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 FusionOpComResult class. This file mainly involves the get_result function.
21
+ """
22
+ import collections
23
+
24
+ from msprobe.msaccucmp.vector_cmp.fusion_manager import fusion_rule_parser
25
+ from msprobe.msaccucmp.cmp_utils import log
26
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
27
+ from msprobe.msaccucmp.vector_cmp.range_manager.range_manager import RangeManager
28
+ from msprobe.msaccucmp.algorithm_manager.algorithm_manager import AlgorithmManager
29
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.fusion_op import FusionOp
30
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
31
+
32
+
33
+ class TensorResult:
34
+ """
35
+ The class for tensor compare result
36
+ """
37
+
38
+ def __init__(self: any, tensor_info: dict, result: list, error_msg: list, is_ffts: bool) -> None:
39
+ self.tensor_info = tensor_info
40
+ self.algorithm_result = result[0]
41
+ self.error_msg = error_msg
42
+ self.overflow_result = result[1]
43
+ self.is_ffts = is_ffts
44
+
45
+ def get_result(self: any) -> list:
46
+ """
47
+ Get tensor result list
48
+ :return [tensor_id, shape, algorithm_result, error_msg]
49
+ """
50
+ shape_str = '[%s]' % ",".join(map(str, self.tensor_info.get("shape", ConstManager.NAN)))
51
+ if self.overflow_result:
52
+ result = [shape_str] + [self.overflow_result] + self.algorithm_result + [",".join(self.error_msg)]
53
+ else:
54
+ result = [shape_str] + self.algorithm_result + [",".join(self.error_msg)]
55
+
56
+ if self.tensor_info.get("tensor_id"):
57
+ result = [self.tensor_info.get("tensor_id")] + result
58
+ return result
59
+
60
+ def get_algorithm_result(self: any) -> list:
61
+ """
62
+ Get algorithm result
63
+ """
64
+ return self.algorithm_result
65
+
66
+ def get_my_output_dtype(self):
67
+ return self.tensor_info.get("my_output_dtype", ConstManager.NAN)
68
+
69
+ def get_ground_truth_dtype(self):
70
+ return self.tensor_info.get("ground_truth_dtype", ConstManager.NAN)
71
+
72
+ def get_my_output_address(self):
73
+ return self.tensor_info.get("my_output_address", ConstManager.NAN)
74
+
75
+ def get_ground_truth_address(self):
76
+ return self.tensor_info.get("ground_truth_address", ConstManager.NAN)
77
+
78
+ def get_op_type(self):
79
+ return self.tensor_info.get("op_type", ConstManager.NAN)
80
+
81
+
82
+ class PytorchOpInfo:
83
+ """
84
+ The class for pytorch op info
85
+ """
86
+
87
+ def __init__(self: any, index: int, op_name: str, my_dump_path: str, ground_truth_dump_path: str) -> None:
88
+ self.index = index
89
+ self.op_name = op_name
90
+ self.my_dump_path = my_dump_path
91
+ self.ground_truth_dump_path = ground_truth_dump_path
92
+
93
+ def get_result(self: any) -> list:
94
+ """
95
+ Get op info result
96
+ :return [index, op_name, my_dump_path, ground_truth_dump_path]
97
+ """
98
+ return [str(self.index), self.op_name, self.my_dump_path, self.ground_truth_dump_path]
99
+
100
+ def get_op_name(self: any) -> str:
101
+ """
102
+ Get op name
103
+ """
104
+ return self.op_name
105
+
106
+
107
+ class FusionOpComResult:
108
+ """
109
+ The class for fusion op compare result
110
+ """
111
+
112
+ def __init__(self: any, algorithm_manager: AlgorithmManager, ground_truth_to_my_output_map: any = None,
113
+ overflow_detection: bool = False, dump_is_cpu_or_gpu_data: list = None) -> None:
114
+ self.algorithm_manager = algorithm_manager
115
+ self.ground_truth_to_my_output_map = ground_truth_to_my_output_map
116
+ self.overflow_detection = overflow_detection
117
+ self.is_ground_truth_gpu_or_cpu = dump_is_cpu_or_gpu_data[0] if dump_is_cpu_or_gpu_data else False
118
+ self.is_my_dump_gpu_or_cpu = dump_is_cpu_or_gpu_data[1] if dump_is_cpu_or_gpu_data else False
119
+
120
+ @staticmethod
121
+ def _make_ops_without_map(fusion_op: FusionOp, no_dump_file: bool) -> (str, str):
122
+ my_output_op = fusion_op.op_name
123
+ ground_truth_op = fusion_op.op_name
124
+ # if only left or right has dump file
125
+ if fusion_op.op_type in [ConstManager.LEFT_TYPE, ConstManager.RIGHT_TYPE]:
126
+ if no_dump_file:
127
+ if fusion_op.op_type == ConstManager.LEFT_TYPE:
128
+ ground_truth_op = '*'
129
+ elif fusion_op.op_type == ConstManager.RIGHT_TYPE:
130
+ my_output_op = '*'
131
+ else:
132
+ ground_truth_op = ','.join(fusion_op.attr.original_op_names)
133
+ if ground_truth_op == '':
134
+ ground_truth_op = '*'
135
+ return my_output_op, ground_truth_op
136
+
137
+ @staticmethod
138
+ def _process_input_and_output(result, input_result_list, output_result_list):
139
+ if ConstManager.INPUT_PATTERN in result[ConstManager.TENSOR_INDEX]:
140
+ input_result_list.append(result)
141
+ elif ConstManager.OUTPUT_PATTERN in result[ConstManager.TENSOR_INDEX]:
142
+ output_result_list.append(result)
143
+ return input_result_list, output_result_list
144
+
145
+ def get_result(self: any, fusion_op: FusionOp, tensor_result: any, error_msg: list,
146
+ no_dump_file: bool = False) -> any:
147
+ """
148
+ Get fusion op compare result list
149
+ :param fusion_op: the fusion op
150
+ :param tensor_result: the tensor result list
151
+ :param error_msg: error message
152
+ :param no_dump_file: the result no dump file
153
+ :return [op_id, my_output_op, ground_truth_op, tensor_id, shape, algorithm_result, error_msg]
154
+ """
155
+ result_list = []
156
+ input_result_list = []
157
+ output_result_list = []
158
+ is_ffts = False
159
+ my_output_op, ground_truth_op = self._make_my_output_op_and_ground_truth_op(fusion_op, no_dump_file)
160
+ if tensor_result:
161
+ for item in tensor_result:
162
+ current_tensor_info = [
163
+ str(fusion_op.op_id), item.get_op_type(),
164
+ my_output_op, str(item.get_my_output_dtype()),
165
+ str(item.get_my_output_address()), ground_truth_op,
166
+ str(item.get_ground_truth_dtype()), str(item.get_ground_truth_address())
167
+ ]
168
+ self._pre_handle_result(current_tensor_info)
169
+ result = current_tensor_info + item.get_result()
170
+ if item.is_ffts:
171
+ is_ffts = True
172
+ input_result_list, output_result_list = \
173
+ self._process_input_and_output(result, input_result_list, output_result_list)
174
+ RangeManager.adjust_data(result, fusion_op.attr.get_op_sequence())
175
+ log.print_info_log('[{}] Result: {}'.format(fusion_op.op_name, " ".join(result)))
176
+ result_list.append(result)
177
+ else:
178
+ current_tensor_info = [
179
+ str(fusion_op.op_id), fusion_op.get_real_op_type(),
180
+ my_output_op, ConstManager.NAN, ConstManager.NAN,
181
+ ground_truth_op, ConstManager.NAN, ConstManager.NAN,
182
+ ConstManager.NAN, ConstManager.NAN
183
+ ]
184
+ self._pre_handle_result(current_tensor_info)
185
+ if self.overflow_detection:
186
+ # using 'NaN' as an overflow detection for 'no tensor_result'
187
+ # and insert it after the column 'Shape'.
188
+ result = current_tensor_info + ['NaN'] + self.algorithm_manager.make_nan_result() \
189
+ + [",".join(error_msg)]
190
+ else:
191
+ result = current_tensor_info + self.algorithm_manager.make_nan_result() + [",".join(error_msg)]
192
+ RangeManager.adjust_data(result, fusion_op.attr.get_op_sequence())
193
+ log.print_info_log('[{}] Result: {}'.format(fusion_op.op_name, " ".join(result)))
194
+ result_list.append(result)
195
+
196
+ Result = collections.namedtuple("Result", ["result_list", "input_result_list", "output_result_list", "is_ffts"])
197
+ result = Result(result_list, input_result_list, output_result_list, is_ffts)
198
+ return result
199
+
200
+ def get_pytorch_result(self: any, op_info: PytorchOpInfo, tensor_result: any, error_msg: list) -> list:
201
+ """
202
+ Get fusion op compare result list
203
+ :param op_info: the pytorch op info
204
+ :param tensor_result: the tensor result list
205
+ :param error_msg: error message
206
+ :return [op_id, my_output_op, ground_truth_op, tensor_id, shape, algorithm_result, error_msg]
207
+ """
208
+ result_list = []
209
+ if tensor_result:
210
+ for item in tensor_result:
211
+ result = op_info.get_result() + [item.get_my_output_dtype()] + item.get_result()
212
+ log.print_info_log('[%s:%d] Result: %s' % (op_info.op_name, op_info.index, " ".join(result)))
213
+ result_list.append(result)
214
+ else:
215
+ result = op_info.get_result() + [ConstManager.NAN] + [ConstManager.NAN] + \
216
+ self.algorithm_manager.make_nan_result() + [",".join(error_msg)]
217
+ log.print_info_log('[%s:%d] Result: %s' % (op_info.op_name, op_info.index, " ".join(result)))
218
+ result_list.append(result)
219
+ return result_list
220
+
221
+ def _make_my_output_op_and_ground_truth_op(self: any, fusion_op: FusionOp, no_dump_file: bool) -> (str, str):
222
+ if self.ground_truth_to_my_output_map:
223
+ my_output_op, ground_truth_op = fusion_rule_parser. \
224
+ make_left_and_right_string(self.ground_truth_to_my_output_map)
225
+ else:
226
+ my_output_op, ground_truth_op = self._make_ops_without_map(fusion_op, no_dump_file)
227
+ return my_output_op, ground_truth_op
228
+
229
+ def _pre_handle_result(self: any, current_tensor_info: list) -> None:
230
+ """
231
+ if dump data is not NPU data, the result will be popped.
232
+ the index of my dump data address is 3, the index of ground truth data address is 6.
233
+ args: result list
234
+ """
235
+ if self.is_ground_truth_gpu_or_cpu:
236
+ # op id is inserted as index in header, so address index should plus one.
237
+ current_tensor_info.pop(ConstManager.GROUND_TRUTH_ADDRESS_INDEX + 1)
238
+ if self.is_my_dump_gpu_or_cpu:
239
+ current_tensor_info.pop(ConstManager.MY_OUTPUT_ADDRESS_INDEX + 1)
240
+
241
+
242
+ def get_result_title(algorithm_manager: AlgorithmManager, op_header: list, overflow_detection: bool = False) -> list:
243
+ """
244
+ Get result title
245
+ :param algorithm_manager: the algorithm manager
246
+ :param op_header: the op header
247
+ :param overflow_detection: whether to display overflow info
248
+ :return [Index, op_header, shape, algorithm_result, error_msg]
249
+ """
250
+
251
+ header = ['Index'] + op_header + ['Shape'] + algorithm_manager.get_result_title() + ["CompareFailReason"]
252
+ # add 'OverFlow' after 'Shape'.
253
+ if overflow_detection:
254
+ header.insert(header.index('Shape') + 1, 'OverFlow')
255
+ RangeManager.adjust_header(header)
256
+ return header
257
+
258
+
259
+ class SingleOpCmpResult:
260
+ """
261
+ The class for single op result
262
+ """
263
+ def __init__(self: any) -> None:
264
+ self.op_name = ""
265
+ self.dump_match = False
266
+ self.result_list = None
267
+ self.ret = 0
268
+ self.input_list = None
269
+ self.input_result_list = None
270
+ self.output_result_list = None
271
+ self.is_ffts = False
272
+ self.op_name_origin_output_index_map = None
273
+ self.npu_vs_npu = False
274
+
275
+ @staticmethod
276
+ def get_pre_op_output(op_name: str, index: int, result_mapping: dict) -> list:
277
+ pre_op_result = result_mapping.get(op_name)
278
+ if pre_op_result:
279
+ output_result = pre_op_result.output_result_list[index]
280
+ else:
281
+ output_result = None
282
+ message = "The result of '%s' is not in result mapping" % op_name
283
+ log.print_warn_log(message)
284
+ return output_result
285
+
286
+ def update_attr(self: any, result_info: collections.namedtuple) -> None:
287
+ self.op_name = result_info.op_name
288
+ self.dump_match = result_info.dump_match
289
+ self.result_list = result_info.result_list
290
+ self.ret = result_info.ret
291
+ self.input_list = result_info.input_list
292
+ self.input_result_list = result_info.input_result_list
293
+ self.output_result_list = result_info.output_result_list
294
+ self.is_ffts = result_info.is_ffts
295
+ self.op_name_origin_output_index_map = result_info.op_name_origin_output_index_map
296
+ self.npu_vs_npu = result_info.npu_vs_npu
297
+
298
+ def check_result_list_valid(self: any) -> None:
299
+ if len(self.result_list) < len(self.input_result_list):
300
+ message = "The length of input result list is greater than result list, '%s'" % self.op_name
301
+ log.print_error_log(message)
302
+ raise CompareError(CompareError.MSACCUCMP_INVALID_INPUT_MAPPING)
303
+
304
+ def find_pre_op(self: any, result_mapping: dict) -> None:
305
+ """
306
+ Replace the input of the current operator with the previous output result
307
+ """
308
+ self.check_result_list_valid()
309
+ for index, input_result in enumerate(self.input_result_list):
310
+ if len(input_result) <= ConstManager.TENSOR_INDEX:
311
+ log.print_warn_log(f"Broken result, id {index}, skip")
312
+ continue
313
+
314
+ tensor_id = input_result[ConstManager.TENSOR_INDEX]
315
+ pre_op = self.op_name_origin_output_index_map.get(tensor_id)
316
+ if not pre_op or len(pre_op) < 2:
317
+ message = "The tensor index '%s' is invalid, no input mapping information" % tensor_id
318
+ log.print_error_log(message)
319
+ raise CompareError(CompareError.MSACCUCMP_INVALID_INPUT_MAPPING)
320
+ pre_op_name = pre_op[0]
321
+ pre_op_index = pre_op[1]
322
+ output_result = self.get_pre_op_output(pre_op_name, pre_op_index, result_mapping)
323
+ if not output_result:
324
+ continue
325
+ origin_result = self.result_list[index][:ConstManager.TENSOR_INDEX + 1]
326
+ self.result_list[index] = origin_result + output_result[ConstManager.TENSOR_INDEX + 1:]