mindstudio-probe 8.3.3__py3-none-any.whl → 26.0.0a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (689) hide show
  1. {mindstudio_probe-8.3.3.dist-info → mindstudio_probe-26.0.0a1.dist-info}/METADATA +26 -14
  2. mindstudio_probe-26.0.0a1.dist-info/RECORD +498 -0
  3. {mindstudio_probe-8.3.3.dist-info → mindstudio_probe-26.0.0a1.dist-info}/WHEEL +1 -1
  4. mindstudio_probe-26.0.0a1.dist-info/entry_points.txt +5 -0
  5. mindstudio_probe-26.0.0a1.dist-info/licenses/LICENSE +124 -0
  6. mindstudio_probe-26.0.0a1.dist-info/top_level.txt +2 -0
  7. msprobe/__init__.py +12 -13
  8. msprobe/config.json +9 -31
  9. msprobe/core/__init__.py +12 -11
  10. msprobe/core/acc_check/acc_check_cli.py +145 -0
  11. msprobe/core/common/const.py +97 -38
  12. msprobe/core/common/db_manager.py +133 -12
  13. msprobe/core/common/decorator.py +12 -11
  14. msprobe/core/common/exceptions.py +12 -11
  15. msprobe/core/common/file_utils.py +101 -25
  16. msprobe/core/common/framework_adapter.py +36 -25
  17. msprobe/core/common/global_lock.py +12 -11
  18. msprobe/core/common/inplace_op_checker.py +12 -11
  19. msprobe/core/common/log.py +22 -11
  20. msprobe/core/common/megatron_utils.py +566 -11
  21. msprobe/core/common/parallel_state.py +12 -11
  22. msprobe/core/common/runtime.py +12 -11
  23. msprobe/core/common/utils.py +41 -41
  24. msprobe/core/compare/acc_compare.py +361 -104
  25. msprobe/core/compare/atb_data_compare.py +422 -0
  26. msprobe/core/compare/auto_compare.py +134 -0
  27. msprobe/core/compare/check.py +14 -17
  28. msprobe/core/compare/compare_cli.py +72 -149
  29. msprobe/core/compare/config.py +12 -13
  30. msprobe/core/compare/diff_analyze/first_diff_analyze.py +28 -15
  31. msprobe/core/compare/diff_analyze/ignore_op_list.yaml +3 -0
  32. msprobe/core/compare/find_first/analyzer.py +18 -18
  33. msprobe/core/compare/find_first/graph.py +12 -11
  34. msprobe/core/compare/find_first/utils.py +13 -12
  35. msprobe/core/compare/indicator_analysis/__init__.py +15 -0
  36. msprobe/core/compare/indicator_analysis/algorithm.py +363 -0
  37. msprobe/core/compare/indicator_analysis/api_data.py +141 -0
  38. msprobe/core/compare/indicator_analysis/calculator.py +181 -0
  39. msprobe/core/compare/indicator_analysis/utils.py +116 -0
  40. msprobe/core/compare/layer_mapping/__init__.py +12 -11
  41. msprobe/core/compare/layer_mapping/data_scope_parser.py +20 -11
  42. msprobe/core/compare/layer_mapping/layer_mapping.py +14 -13
  43. msprobe/core/compare/layer_mapping/postprocess_pass.py +13 -11
  44. msprobe/core/compare/merge_result/merge_result.py +12 -11
  45. msprobe/core/compare/merge_result/merge_result_cli.py +12 -11
  46. msprobe/core/compare/merge_result/utils.py +12 -11
  47. msprobe/core/compare/multiprocessing_compute.py +13 -14
  48. msprobe/core/compare/npy_compare.py +13 -11
  49. msprobe/core/compare/offline_data_compare.py +160 -0
  50. msprobe/core/compare/stats_diff_calc.py +39 -0
  51. msprobe/core/compare/torchair_acc_cmp.py +764 -0
  52. msprobe/core/compare/torchair_cmp_utils.py +338 -0
  53. msprobe/core/compare/utils.py +140 -49
  54. msprobe/core/config_check/__init__.py +12 -11
  55. msprobe/core/config_check/checkers/__init__.py +12 -11
  56. msprobe/core/config_check/checkers/base_checker.py +15 -14
  57. msprobe/core/config_check/checkers/dataset_checker.py +13 -12
  58. msprobe/core/config_check/checkers/env_args_checker.py +13 -12
  59. msprobe/core/config_check/checkers/hyperparameter_checker.py +16 -15
  60. msprobe/core/config_check/checkers/pip_checker.py +15 -15
  61. msprobe/core/config_check/checkers/random_checker.py +13 -12
  62. msprobe/core/config_check/checkers/weights_checker.py +14 -12
  63. msprobe/core/config_check/ckpt_compare/ckpt_comparator.py +13 -17
  64. msprobe/core/config_check/ckpt_compare/megatron_loader.py +13 -12
  65. msprobe/core/config_check/ckpt_compare/metrics.py +12 -11
  66. msprobe/core/config_check/config_check_cli.py +18 -17
  67. msprobe/core/config_check/config_checker.py +16 -14
  68. msprobe/core/config_check/resource/dependency.yaml +15 -12
  69. msprobe/core/config_check/resource/env.yaml +12 -11
  70. msprobe/core/config_check/utils/hyperparameter_parser.py +12 -11
  71. msprobe/core/config_check/utils/utils.py +12 -11
  72. msprobe/core/{data_dump → dump/api_dump}/api_registry.py +12 -11
  73. msprobe/core/{common_config.py → dump/common_config.py} +13 -24
  74. msprobe/core/dump/data_dump/data_collector.py +257 -0
  75. msprobe/core/{data_dump → dump/data_dump}/data_processor/base.py +45 -36
  76. msprobe/core/{data_dump → dump/data_dump}/data_processor/factory.py +33 -25
  77. msprobe/core/{data_dump → dump/data_dump}/data_processor/mindspore_processor.py +37 -113
  78. msprobe/core/{data_dump → dump/data_dump}/data_processor/pytorch_processor.py +364 -131
  79. msprobe/core/{data_dump → dump/data_dump}/json_writer.py +24 -31
  80. msprobe/core/{data_dump → dump/data_dump}/scope.py +12 -13
  81. msprobe/core/{debugger → dump/debugger}/precision_debugger.py +15 -23
  82. msprobe/core/dump/dump2db/db_utils.py +215 -0
  83. msprobe/core/dump/dump2db/dump2db.py +409 -0
  84. msprobe/core/{hook_manager.py → dump/hook_manager.py} +38 -87
  85. msprobe/core/dump/kernel_dump/kernel_config.py +34 -0
  86. msprobe/core/{service.py → dump/service.py} +43 -27
  87. msprobe/core/install_deps/install_deps.py +51 -0
  88. msprobe/core/monitor/anomaly_processor.py +13 -11
  89. msprobe/core/monitor/csv2db.py +73 -93
  90. msprobe/core/monitor/db_utils.py +140 -205
  91. msprobe/core/monitor/utils.py +18 -17
  92. msprobe/core/monitor_v2/__init__.py +20 -0
  93. msprobe/core/monitor_v2/base.py +83 -0
  94. msprobe/core/monitor_v2/cc.py +287 -0
  95. msprobe/core/monitor_v2/factory.py +81 -0
  96. msprobe/core/monitor_v2/module.py +201 -0
  97. msprobe/core/monitor_v2/optimizer.py +245 -0
  98. msprobe/core/monitor_v2/param.py +154 -0
  99. msprobe/core/monitor_v2/trainer.py +326 -0
  100. msprobe/core/monitor_v2/utils.py +122 -0
  101. msprobe/core/monitor_v2/weight_grad.py +419 -0
  102. msprobe/core/monitor_v2/writer.py +162 -0
  103. msprobe/core/overflow_check/abnormal_scene.py +12 -11
  104. msprobe/core/overflow_check/api_info.py +12 -11
  105. msprobe/core/overflow_check/checker.py +12 -11
  106. msprobe/core/overflow_check/filter.py +13 -11
  107. msprobe/core/overflow_check/level.py +12 -11
  108. msprobe/core/overflow_check/utils.py +12 -11
  109. msprobe/core/single_save/single_comparator.py +12 -11
  110. msprobe/core/single_save/single_saver.py +12 -11
  111. msprobe/infer/__init__.py +16 -0
  112. msprobe/infer/offline/__init__.py +16 -0
  113. msprobe/infer/offline/compare/__init__.py +16 -0
  114. msprobe/infer/offline/compare/msquickcmp/__init__.py +16 -0
  115. msprobe/infer/offline/compare/msquickcmp/adapter_cli/__init__.py +16 -0
  116. msprobe/infer/offline/compare/msquickcmp/adapter_cli/args_adapter.py +46 -0
  117. msprobe/infer/offline/compare/msquickcmp/atc/__init__.py +16 -0
  118. msprobe/infer/offline/compare/msquickcmp/atc/atc_utils.py +98 -0
  119. msprobe/infer/offline/compare/msquickcmp/cmp_process.py +328 -0
  120. msprobe/infer/offline/compare/msquickcmp/common/__init__.py +16 -0
  121. msprobe/infer/offline/compare/msquickcmp/common/args_check.py +112 -0
  122. msprobe/infer/offline/compare/msquickcmp/common/convert.py +74 -0
  123. msprobe/infer/offline/compare/msquickcmp/common/dump_data.py +121 -0
  124. msprobe/infer/offline/compare/msquickcmp/common/dynamic_argument_bean.py +39 -0
  125. msprobe/infer/offline/compare/msquickcmp/common/utils.py +669 -0
  126. msprobe/infer/offline/compare/msquickcmp/config.ini +6 -0
  127. msprobe/infer/offline/compare/msquickcmp/dump/__init__.py +16 -0
  128. msprobe/infer/offline/compare/msquickcmp/dump/args_adapter.py +50 -0
  129. msprobe/infer/offline/compare/msquickcmp/dump/dump_process.py +91 -0
  130. msprobe/infer/offline/compare/msquickcmp/install_aclruntime_aisbench.sh +180 -0
  131. msprobe/infer/offline/compare/msquickcmp/main.py +199 -0
  132. msprobe/infer/offline/compare/msquickcmp/net_compare/__init__.py +16 -0
  133. msprobe/infer/offline/compare/msquickcmp/net_compare/net_compare.py +277 -0
  134. msprobe/infer/offline/compare/msquickcmp/npu/__init__.py +16 -0
  135. msprobe/infer/offline/compare/msquickcmp/npu/npu_dump_data.py +558 -0
  136. msprobe/infer/offline/compare/msquickcmp/npu/om_parser.py +416 -0
  137. msprobe/infer/offline/compare/msquickcmp/onnx_model/__init__.py +16 -0
  138. msprobe/infer/offline/compare/msquickcmp/onnx_model/onnx_dump_data.py +374 -0
  139. msprobe/infer/utils/__init__.py +15 -0
  140. msprobe/infer/utils/acc_cmp.py +94 -0
  141. msprobe/infer/utils/check/__init__.py +37 -0
  142. msprobe/infer/utils/check/args_checker.py +35 -0
  143. msprobe/infer/utils/check/checker.py +227 -0
  144. msprobe/infer/utils/check/dict_checker.py +78 -0
  145. msprobe/infer/utils/check/func_wrapper.py +96 -0
  146. msprobe/infer/utils/check/list_checker.py +56 -0
  147. msprobe/infer/utils/check/number_checker.py +64 -0
  148. msprobe/infer/utils/check/obj_checker.py +41 -0
  149. msprobe/infer/utils/check/path_checker.py +249 -0
  150. msprobe/infer/utils/check/rule.py +126 -0
  151. msprobe/infer/utils/check/string_checker.py +66 -0
  152. msprobe/infer/utils/cmp_algorithm.py +261 -0
  153. msprobe/infer/utils/constants.py +112 -0
  154. msprobe/infer/utils/file_open_check.py +337 -0
  155. msprobe/infer/utils/util.py +177 -0
  156. msprobe/mindspore/__init__.py +14 -13
  157. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +14 -13
  158. msprobe/mindspore/api_accuracy_checker/api_info.py +12 -11
  159. msprobe/mindspore/api_accuracy_checker/api_runner.py +12 -11
  160. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +12 -11
  161. msprobe/mindspore/api_accuracy_checker/bench_functions/flash_attention_score.py +12 -11
  162. msprobe/mindspore/api_accuracy_checker/bench_functions/fusion_operator.py +12 -11
  163. msprobe/mindspore/api_accuracy_checker/checker_support_api.yaml +12 -11
  164. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +15 -14
  165. msprobe/mindspore/api_accuracy_checker/compute_element.py +12 -11
  166. msprobe/mindspore/api_accuracy_checker/data_manager.py +13 -11
  167. msprobe/mindspore/api_accuracy_checker/main.py +12 -11
  168. msprobe/mindspore/api_accuracy_checker/multi_api_accuracy_checker.py +14 -12
  169. msprobe/mindspore/api_accuracy_checker/multi_data_manager.py +13 -11
  170. msprobe/mindspore/api_accuracy_checker/torch_mindtorch_importer.py +12 -11
  171. msprobe/mindspore/api_accuracy_checker/type_mapping.py +12 -11
  172. msprobe/mindspore/api_accuracy_checker/utils.py +12 -11
  173. msprobe/mindspore/common/const.py +15 -74
  174. msprobe/mindspore/common/log.py +12 -11
  175. msprobe/mindspore/common/utils.py +30 -15
  176. msprobe/mindspore/compare/common_dir_compare.py +21 -23
  177. msprobe/mindspore/compare/distributed_compare.py +18 -16
  178. msprobe/mindspore/compare/ms_compare.py +14 -14
  179. msprobe/mindspore/compare/ms_graph_compare.py +26 -20
  180. msprobe/mindspore/compare/utils.py +14 -12
  181. msprobe/mindspore/{cell_processor.py → dump/cell_processor.py} +15 -14
  182. msprobe/mindspore/{debugger → dump/debugger}/debugger_config.py +12 -30
  183. msprobe/mindspore/{debugger → dump/debugger}/precision_debugger.py +43 -45
  184. msprobe/mindspore/dump/{cell_dump_process.py → dump_processor/cell_dump_process.py} +31 -17
  185. msprobe/mindspore/dump/{cell_dump_with_insert_gradient.py → dump_processor/cell_dump_with_insert_gradient.py} +18 -14
  186. msprobe/mindspore/dump/{dump_tool_factory.py → dump_processor/dump_tool_factory.py} +16 -15
  187. msprobe/mindspore/dump/{graph_mode_cell_dump.py → dump_processor/graph_mode_cell_dump.py} +16 -15
  188. msprobe/mindspore/dump/{graph_tensor_dump.py → dump_processor/graph_tensor_dump.py} +134 -133
  189. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/api_register.py +15 -14
  190. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/hook_cell.py +12 -11
  191. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/ms_hook_manager.py +47 -20
  192. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/primitive_hooks.py +14 -13
  193. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/support_wrap_ops.yaml +13 -11
  194. msprobe/mindspore/dump/{jit_dump.py → dump_processor/jit_dump.py} +14 -13
  195. msprobe/mindspore/dump/{kernel_graph_dump.py → dump_processor/kernel_graph_dump.py} +13 -12
  196. msprobe/mindspore/dump/{kernel_kbyk_dump.py → dump_processor/kernel_kbyk_dump.py} +13 -12
  197. msprobe/mindspore/{exception_dump → dump/exception_dump}/exception_dump_tool_factory.py +14 -13
  198. msprobe/mindspore/{exception_dump → dump/exception_dump}/kernel_graph_exception_dump.py +13 -12
  199. msprobe/mindspore/{mindspore_service.py → dump/mindspore_service.py} +18 -17
  200. msprobe/mindspore/dump/mindtorch/__init__.py +19 -0
  201. msprobe/mindspore/dump/ms_config.py +105 -0
  202. msprobe/mindspore/{overflow_check → dump/overflow_check}/kernel_graph_overflow_check.py +13 -12
  203. msprobe/mindspore/{overflow_check → dump/overflow_check}/overflow_check_tool_factory.py +14 -13
  204. msprobe/mindspore/dump/task_handler_factory.py +43 -0
  205. msprobe/mindspore/monitor/common_func.py +12 -11
  206. msprobe/mindspore/monitor/data_writers.py +12 -11
  207. msprobe/mindspore/monitor/distributed/wrap_distributed.py +93 -39
  208. msprobe/mindspore/monitor/features.py +12 -11
  209. msprobe/mindspore/monitor/module_hook.py +19 -22
  210. msprobe/mindspore/monitor/optimizer_collect.py +29 -25
  211. msprobe/mindspore/monitor/utils.py +13 -11
  212. msprobe/msaccucmp/advisor/__init__.py +16 -0
  213. msprobe/msaccucmp/advisor/advisor_const.py +65 -0
  214. msprobe/msaccucmp/advisor/advisor_result.py +73 -0
  215. msprobe/msaccucmp/advisor/compare_advisor.py +99 -0
  216. msprobe/msaccucmp/advisor/input_advisor.py +66 -0
  217. msprobe/msaccucmp/advisor/node_advisor.py +68 -0
  218. msprobe/msaccucmp/advisor/overflow_advisor.py +58 -0
  219. msprobe/msaccucmp/algorithm_manager/__init__.py +16 -0
  220. msprobe/msaccucmp/algorithm_manager/algorithm_manager.py +464 -0
  221. msprobe/msaccucmp/algorithm_manager/algorithm_parameter.py +42 -0
  222. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_AccumulatedRelativeError.py +46 -0
  223. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_CosineSimilarity.py +58 -0
  224. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_KullbackLeiblerDivergence.py +84 -0
  225. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MaxAbsoluteError.py +41 -0
  226. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MaxRelativeError.py +46 -0
  227. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MeanAbsoluteError.py +41 -0
  228. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MeanRelativeError.py +46 -0
  229. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_RelativeEuclideanDistance.py +46 -0
  230. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_RootMeanSquareError.py +40 -0
  231. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_StandardDeviation.py +47 -0
  232. msprobe/msaccucmp/cmp_utils/__init__.py +16 -0
  233. msprobe/msaccucmp/cmp_utils/common.py +113 -0
  234. msprobe/msaccucmp/cmp_utils/constant/__init__.py +16 -0
  235. msprobe/msaccucmp/cmp_utils/constant/compare_error.py +81 -0
  236. msprobe/msaccucmp/cmp_utils/constant/const_manager.py +530 -0
  237. msprobe/msaccucmp/cmp_utils/file_utils.py +497 -0
  238. msprobe/msaccucmp/cmp_utils/log.py +257 -0
  239. msprobe/msaccucmp/cmp_utils/multi_process/__init__.py +16 -0
  240. msprobe/msaccucmp/cmp_utils/multi_process/multi_convert_process.py +140 -0
  241. msprobe/msaccucmp/cmp_utils/multi_process/progress.py +78 -0
  242. msprobe/msaccucmp/cmp_utils/path_check.py +274 -0
  243. msprobe/msaccucmp/cmp_utils/reg_manager.py +98 -0
  244. msprobe/msaccucmp/cmp_utils/tlv_parse.py +279 -0
  245. msprobe/msaccucmp/cmp_utils/utils.py +356 -0
  246. msprobe/msaccucmp/cmp_utils/utils_type.py +63 -0
  247. msprobe/msaccucmp/compare_vector.py +48 -0
  248. msprobe/msaccucmp/conversion/__init__.py +16 -0
  249. msprobe/msaccucmp/conversion/data_conversion.py +277 -0
  250. msprobe/msaccucmp/conversion/dtype_conversion.py +99 -0
  251. msprobe/msaccucmp/conversion/shape_format_conversion.py +477 -0
  252. msprobe/msaccucmp/conversion/tensor_conversion.py +369 -0
  253. msprobe/msaccucmp/dump_data_conversion.py +46 -0
  254. msprobe/msaccucmp/dump_parse/__init__.py +16 -0
  255. msprobe/msaccucmp/dump_parse/big_dump_data.py +317 -0
  256. msprobe/msaccucmp/dump_parse/dump.py +423 -0
  257. msprobe/msaccucmp/dump_parse/dump_data_object.py +322 -0
  258. msprobe/msaccucmp/dump_parse/dump_data_parser.py +436 -0
  259. msprobe/msaccucmp/dump_parse/dump_utils.py +246 -0
  260. msprobe/msaccucmp/dump_parse/ffts_parser.py +137 -0
  261. msprobe/msaccucmp/dump_parse/mapping.py +62 -0
  262. msprobe/msaccucmp/dump_parse/nano_dump_data.py +392 -0
  263. msprobe/msaccucmp/dump_parse/proto_dump_data.py +308 -0
  264. msprobe/msaccucmp/dump_parser.py +90 -0
  265. msprobe/msaccucmp/format_manager/__init__.py +16 -0
  266. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_NCHW.py +53 -0
  267. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_ND.py +52 -0
  268. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_NHWC.py +53 -0
  269. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_Z_to_HWCN.py +47 -0
  270. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_Z_to_NCHW.py +47 -0
  271. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_FRACTAL_Z.py +89 -0
  272. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_NCHW.py +37 -0
  273. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_NHWC.py +37 -0
  274. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_HWCN.py +43 -0
  275. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_NCHW.py +48 -0
  276. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_NHWC.py +43 -0
  277. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NCHW_to_FRACTAL_Z.py +87 -0
  278. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NCHW_to_NHWC.py +37 -0
  279. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NDC1HWC0_to_NCDHW.py +48 -0
  280. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NDC1HWC0_to_ND.py +44 -0
  281. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_FRACTAL_Z.py +87 -0
  282. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_HWCN.py +37 -0
  283. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_NCHW.py +37 -0
  284. msprobe/msaccucmp/format_manager/format_manager.py +307 -0
  285. msprobe/msaccucmp/inplace_layer_process.py +186 -0
  286. msprobe/msaccucmp/msaccucmp.py +532 -0
  287. msprobe/msaccucmp/mscmp_advisor.py +128 -0
  288. msprobe/msaccucmp/overflow/__init__.py +16 -0
  289. msprobe/msaccucmp/overflow/overflow_analyse.py +305 -0
  290. msprobe/msaccucmp/overflow/overflow_detection.py +143 -0
  291. msprobe/msaccucmp/pytorch_cmp/__init__.py +16 -0
  292. msprobe/msaccucmp/pytorch_cmp/compare_pytorch.py +389 -0
  293. msprobe/msaccucmp/pytorch_cmp/hdf5_parser.py +377 -0
  294. msprobe/msaccucmp/pytorch_cmp/pytorch_dump_data.py +461 -0
  295. msprobe/msaccucmp/shape_conversion.py +41 -0
  296. msprobe/msaccucmp/vector_cmp/__init__.py +16 -0
  297. msprobe/msaccucmp/vector_cmp/batch_compare.py +197 -0
  298. msprobe/msaccucmp/vector_cmp/compare_detail/__init__.py +16 -0
  299. msprobe/msaccucmp/vector_cmp/compare_detail/compare_detail.py +245 -0
  300. msprobe/msaccucmp/vector_cmp/compare_detail/detail.py +182 -0
  301. msprobe/msaccucmp/vector_cmp/compare_detail/detail_writer.py +580 -0
  302. msprobe/msaccucmp/vector_cmp/fusion_manager/__init__.py +16 -0
  303. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_fusion_op.py +588 -0
  304. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_npu_vs_npu.py +339 -0
  305. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_result.py +326 -0
  306. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_rule.py +156 -0
  307. msprobe/msaccucmp/vector_cmp/fusion_manager/fusion_op.py +204 -0
  308. msprobe/msaccucmp/vector_cmp/fusion_manager/fusion_rule_parser.py +635 -0
  309. msprobe/msaccucmp/vector_cmp/fusion_manager/quant_filter.py +187 -0
  310. msprobe/msaccucmp/vector_cmp/range_manager/__init__.py +16 -0
  311. msprobe/msaccucmp/vector_cmp/range_manager/range_manager.py +100 -0
  312. msprobe/msaccucmp/vector_cmp/range_manager/range_mode.py +94 -0
  313. msprobe/msaccucmp/vector_cmp/range_manager/select_mode.py +86 -0
  314. msprobe/msaccucmp/vector_cmp/vector_comparison.py +535 -0
  315. msprobe/msprobe.py +101 -130
  316. msprobe/overflow_check/__init__.py +15 -0
  317. msprobe/{nan_analyze → overflow_check}/analyzer.py +38 -27
  318. msprobe/{nan_analyze → overflow_check}/graph.py +28 -27
  319. msprobe/{nan_analyze → overflow_check}/utils.py +15 -14
  320. msprobe/pytorch/__init__.py +20 -14
  321. msprobe/pytorch/aclgraph_dump/__init__.py +45 -0
  322. msprobe/pytorch/aclgraph_dump/_meta.py +26 -0
  323. msprobe/pytorch/api_accuracy_checker/{run_ut/run_ut.py → acc_check/acc_check.py} +50 -45
  324. msprobe/pytorch/api_accuracy_checker/{run_ut/run_ut_utils.py → acc_check/acc_check_utils.py} +201 -30
  325. msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/data_generate.py +56 -16
  326. msprobe/pytorch/api_accuracy_checker/{run_ut/multi_run_ut.py → acc_check/multi_acc_check.py} +32 -47
  327. msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/run_overflow_check.py +19 -18
  328. msprobe/pytorch/api_accuracy_checker/common/config.py +22 -20
  329. msprobe/pytorch/api_accuracy_checker/common/utils.py +72 -13
  330. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +41 -11
  331. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +23 -14
  332. msprobe/pytorch/api_accuracy_checker/compare/compare.py +45 -32
  333. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +12 -11
  334. msprobe/pytorch/api_accuracy_checker/compare/compare_input.py +14 -12
  335. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +14 -12
  336. msprobe/pytorch/api_accuracy_checker/precision_standard/absolute_threshold.py +12 -11
  337. msprobe/pytorch/api_accuracy_checker/precision_standard/accumulative_error_compare.py +12 -11
  338. msprobe/pytorch/api_accuracy_checker/precision_standard/base_standard.py +21 -19
  339. msprobe/pytorch/api_accuracy_checker/precision_standard/benchmark_compare.py +14 -13
  340. msprobe/pytorch/api_accuracy_checker/precision_standard/binary_consistency.py +12 -11
  341. msprobe/pytorch/api_accuracy_checker/precision_standard/standard_config.py +60 -11
  342. msprobe/pytorch/api_accuracy_checker/precision_standard/standard_register.py +27 -16
  343. msprobe/pytorch/api_accuracy_checker/precision_standard/thousandth_standard.py +13 -11
  344. msprobe/pytorch/api_accuracy_checker/precision_standard/ulp_compare.py +39 -18
  345. msprobe/pytorch/bench_functions/__init__.py +12 -11
  346. msprobe/pytorch/bench_functions/apply_adam.py +12 -11
  347. msprobe/pytorch/bench_functions/apply_adam_w.py +12 -11
  348. msprobe/pytorch/bench_functions/confusion_transpose.py +12 -11
  349. msprobe/pytorch/bench_functions/fast_gelu.py +12 -11
  350. msprobe/pytorch/bench_functions/group_norm_silu.py +12 -11
  351. msprobe/pytorch/bench_functions/layer_norm_eval.py +12 -11
  352. msprobe/pytorch/bench_functions/linear.py +12 -11
  353. msprobe/pytorch/bench_functions/matmul_backward.py +12 -11
  354. msprobe/pytorch/bench_functions/mish.py +12 -11
  355. msprobe/pytorch/bench_functions/moe_gating_top_k_softmax.py +12 -11
  356. msprobe/pytorch/bench_functions/npu_fusion_attention.py +12 -11
  357. msprobe/pytorch/bench_functions/rms_norm.py +12 -11
  358. msprobe/pytorch/bench_functions/rotary_mul.py +12 -11
  359. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +12 -11
  360. msprobe/pytorch/bench_functions/sort_v2.py +12 -11
  361. msprobe/pytorch/bench_functions/swiglu.py +12 -11
  362. msprobe/pytorch/common/__init__.py +12 -11
  363. msprobe/pytorch/common/log.py +12 -11
  364. msprobe/pytorch/common/parse_json.py +12 -11
  365. msprobe/pytorch/common/utils.py +52 -19
  366. msprobe/pytorch/compare/distributed_compare.py +13 -13
  367. msprobe/pytorch/compare/match.py +12 -11
  368. msprobe/pytorch/compare/pt_compare.py +14 -20
  369. msprobe/pytorch/compare/pt_diff_analyze.py +12 -11
  370. msprobe/pytorch/compare/utils.py +12 -11
  371. msprobe/pytorch/{hook_module → dump/api_dump}/api_register.py +18 -16
  372. msprobe/pytorch/{hook_module → dump/api_dump}/hook_module.py +14 -13
  373. msprobe/pytorch/{hook_module → dump/api_dump}/pt_hook_manager.py +68 -23
  374. msprobe/pytorch/{hook_module → dump/api_dump}/register_optimizer_hook.py +13 -11
  375. msprobe/pytorch/{hook_module → dump/api_dump}/script_wrapper.py +17 -14
  376. msprobe/pytorch/{hook_module → dump/api_dump}/utils.py +12 -11
  377. msprobe/pytorch/{debugger → dump/debugger}/debugger_config.py +23 -38
  378. msprobe/pytorch/dump/debugger/precision_debugger.py +130 -0
  379. msprobe/pytorch/{function_factory.py → dump/function_factory.py} +12 -11
  380. msprobe/pytorch/dump/module_dump/hook_wrapper.py +17 -13
  381. msprobe/pytorch/dump/module_dump/module_dump.py +16 -15
  382. msprobe/pytorch/dump/module_dump/{module_processer.py → module_processor.py} +54 -42
  383. msprobe/pytorch/dump/pt_config.py +128 -0
  384. msprobe/pytorch/{pytorch_service.py → dump/pytorch_service.py} +22 -21
  385. msprobe/pytorch/monitor/csv2tb.py +13 -11
  386. msprobe/pytorch/monitor/data_writers.py +13 -11
  387. msprobe/pytorch/monitor/distributed/wrap_distributed.py +13 -11
  388. msprobe/pytorch/monitor/features.py +12 -11
  389. msprobe/pytorch/monitor/module_hook.py +67 -59
  390. msprobe/pytorch/monitor/module_metric.py +13 -11
  391. msprobe/pytorch/monitor/optimizer_collect.py +37 -35
  392. msprobe/pytorch/monitor/utils.py +13 -11
  393. msprobe/pytorch/monitor/visualizer.py +12 -11
  394. msprobe/pytorch/torchair_dump/__init__.py +17 -0
  395. msprobe/pytorch/torchair_dump/torchair_dump.py +114 -0
  396. msprobe/scripts/atb/config_example.json +10 -0
  397. msprobe/scripts/atb/load_atb_probe.sh +101 -0
  398. msprobe/scripts/atb/unload_atb_probe.sh +27 -0
  399. msprobe/scripts/build_msaccucmp.sh +186 -0
  400. msprobe/scripts/conf/help.info +6 -0
  401. msprobe/scripts/conf/version.info +3 -0
  402. msprobe/scripts/run_script/common.sh +538 -0
  403. msprobe/scripts/run_script/main_msaccucmp.sh +232 -0
  404. msprobe/visualization/__init__.py +12 -11
  405. msprobe/visualization/builder/__init__.py +12 -11
  406. msprobe/visualization/builder/graph_builder.py +45 -30
  407. msprobe/visualization/builder/graph_merger.py +53 -32
  408. msprobe/visualization/builder/msprobe_adapter.py +34 -44
  409. msprobe/visualization/compare/__init__.py +12 -11
  410. msprobe/visualization/compare/graph_comparator.py +63 -51
  411. msprobe/visualization/compare/mode_adapter.py +28 -113
  412. msprobe/visualization/db_utils.py +133 -22
  413. msprobe/visualization/graph/__init__.py +12 -11
  414. msprobe/visualization/graph/base_node.py +15 -27
  415. msprobe/visualization/graph/distributed_analyzer.py +97 -40
  416. msprobe/visualization/graph/graph.py +14 -16
  417. msprobe/visualization/graph/node_colors.py +34 -31
  418. msprobe/visualization/graph/node_op.py +12 -11
  419. msprobe/visualization/graph_service.py +580 -205
  420. msprobe/visualization/utils.py +278 -31
  421. tb_graph_ascend/secure_build.py +175 -0
  422. tb_graph_ascend/server/__init__.py +15 -0
  423. tb_graph_ascend/server/app/__init__.py +15 -0
  424. tb_graph_ascend/server/app/model/__init__.py +15 -0
  425. tb_graph_ascend/server/app/model/hierarchy.py +348 -0
  426. tb_graph_ascend/server/app/model/layout_hierarchy_model.py +69 -0
  427. tb_graph_ascend/server/app/model/match_nodes_model.py +573 -0
  428. tb_graph_ascend/server/app/repositories/__init__.py +15 -0
  429. tb_graph_ascend/server/app/repositories/graph_repo_base.py +32 -0
  430. tb_graph_ascend/server/app/repositories/graph_repo_db.py +879 -0
  431. tb_graph_ascend/server/app/repositories/graph_repo_vis.py +83 -0
  432. tb_graph_ascend/server/app/service/__init__.py +18 -0
  433. tb_graph_ascend/server/app/service/graph_service_base.py +158 -0
  434. tb_graph_ascend/server/app/service/graph_service_db.py +438 -0
  435. tb_graph_ascend/server/app/service/graph_service_factory.py +54 -0
  436. tb_graph_ascend/server/app/service/graph_service_vis.py +480 -0
  437. tb_graph_ascend/server/app/utils/__init__.py +15 -0
  438. tb_graph_ascend/server/app/utils/constant.py +80 -0
  439. tb_graph_ascend/server/app/utils/file_check_wrapper.py +46 -0
  440. tb_graph_ascend/server/app/utils/global_state.py +95 -0
  441. tb_graph_ascend/server/app/utils/graph_utils.py +661 -0
  442. tb_graph_ascend/server/app/utils/i18n.py +153 -0
  443. tb_graph_ascend/server/app/utils/request_method.py +46 -0
  444. tb_graph_ascend/server/app/views/__init__.py +15 -0
  445. tb_graph_ascend/server/app/views/graph_views.py +304 -0
  446. tb_graph_ascend/server/plugin.py +108 -0
  447. tb_graph_ascend/server/static/index.html +9250 -0
  448. tb_graph_ascend/server/static/index.js +21 -0
  449. tb_graph_ascend/setup.py +57 -0
  450. mindstudio_probe-8.3.3.dist-info/LICENSE +0 -201
  451. mindstudio_probe-8.3.3.dist-info/RECORD +0 -491
  452. mindstudio_probe-8.3.3.dist-info/entry_points.txt +0 -2
  453. mindstudio_probe-8.3.3.dist-info/top_level.txt +0 -1
  454. msprobe/CMakeLists.txt +0 -5
  455. msprobe/README.md +0 -203
  456. msprobe/core/advisor/advisor.py +0 -129
  457. msprobe/core/advisor/advisor_const.py +0 -58
  458. msprobe/core/advisor/advisor_result.py +0 -58
  459. msprobe/core/compare/find_first/data_processor.py +0 -35
  460. msprobe/core/compare/highlight.py +0 -390
  461. msprobe/core/data_dump/data_collector.py +0 -356
  462. msprobe/core/grad_probe/constant.py +0 -90
  463. msprobe/core/grad_probe/grad_compare.py +0 -187
  464. msprobe/core/grad_probe/utils.py +0 -105
  465. msprobe/core/kernel_dump/kernel_config.py +0 -33
  466. msprobe/docs/01.installation.md +0 -250
  467. msprobe/docs/02.config_introduction.md +0 -221
  468. msprobe/docs/03.config_examples.md +0 -281
  469. msprobe/docs/04.kernel_dump_PyTorch.md +0 -73
  470. msprobe/docs/05.data_dump_PyTorch.md +0 -518
  471. msprobe/docs/06.data_dump_MindSpore.md +0 -618
  472. msprobe/docs/07.accuracy_checker_PyTorch.md +0 -310
  473. msprobe/docs/09.accuracy_checker_MindSpore.md +0 -120
  474. msprobe/docs/10.accuracy_compare_PyTorch.md +0 -637
  475. msprobe/docs/11.accuracy_compare_MindSpore.md +0 -769
  476. msprobe/docs/12.overflow_check_PyTorch.md +0 -82
  477. msprobe/docs/13.overflow_check_MindSpore.md +0 -33
  478. msprobe/docs/14.data_parse_PyTorch.md +0 -282
  479. msprobe/docs/15.free_benchmarking_PyTorch.md +0 -169
  480. msprobe/docs/16.free_benchmarking_MindSpore.md +0 -159
  481. msprobe/docs/17.grad_probe.md +0 -205
  482. msprobe/docs/18.online_dispatch.md +0 -89
  483. msprobe/docs/19.monitor.md +0 -753
  484. msprobe/docs/20.monitor_performance_baseline.md +0 -52
  485. msprobe/docs/21.visualization_PyTorch.md +0 -519
  486. msprobe/docs/22.visualization_MindSpore.md +0 -515
  487. msprobe/docs/23.generate_operator_PyTorch.md +0 -107
  488. msprobe/docs/24.code_mapping_Mindspore.md +0 -29
  489. msprobe/docs/25.tool_function_introduction.md +0 -29
  490. msprobe/docs/26.data_dump_PyTorch_baseline.md +0 -48
  491. msprobe/docs/27.dump_json_instruction.md +0 -795
  492. msprobe/docs/28.debugger_save_instruction.md +0 -288
  493. msprobe/docs/28.kernel_dump_MindSpore.md +0 -69
  494. msprobe/docs/29.data_dump_MSAdapter.md +0 -235
  495. msprobe/docs/30.overflow_check_MSAdapter.md +0 -31
  496. msprobe/docs/31.config_check.md +0 -107
  497. msprobe/docs/32.ckpt_compare.md +0 -69
  498. msprobe/docs/33.generate_operator_MindSpore.md +0 -181
  499. msprobe/docs/34.RL_collect.md +0 -101
  500. msprobe/docs/35.nan_analyze.md +0 -73
  501. msprobe/docs/36.calculation_result_change.md +0 -75
  502. msprobe/docs/FAQ.md +0 -232
  503. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +0 -146
  504. msprobe/docs/accuracy_checker_MindSpore/accuracy_checker_MindSpore_baseline.md +0 -14
  505. msprobe/docs/data_dump_MindSpore/data_dump_MindSpore_baseline.md +0 -33
  506. msprobe/docs/data_dump_MindSpore/dynamic_graph_quick_start_example.md +0 -217
  507. msprobe/docs/img/BLOOM-7B_1.png +0 -0
  508. msprobe/docs/img/BLOOM-7B_2.png +0 -0
  509. msprobe/docs/img/BLOOM-7B_3.png +0 -0
  510. msprobe/docs/img/BLOOM-7B_4.png +0 -0
  511. msprobe/docs/img/GPT-3_1.png +0 -0
  512. msprobe/docs/img/GPT-3_2.png +0 -0
  513. msprobe/docs/img/GPT-3_3.png +0 -0
  514. msprobe/docs/img/GPT-3_4.png +0 -0
  515. msprobe/docs/img/GPT-3_5.png +0 -0
  516. msprobe/docs/img/GPT-3_6.png +0 -0
  517. msprobe/docs/img/GPT-3_7.png +0 -0
  518. msprobe/docs/img/GPT-3_8.png +0 -0
  519. msprobe/docs/img/YOLOV5S_1.png +0 -0
  520. msprobe/docs/img/YOLOV5S_2.png +0 -0
  521. msprobe/docs/img/accuracy_checking_details.png +0 -0
  522. msprobe/docs/img/accuracy_checking_result.png +0 -0
  523. msprobe/docs/img/api_precision_compare_details.png +0 -0
  524. msprobe/docs/img/api_precision_compare_result.png +0 -0
  525. msprobe/docs/img/auto_analyze_log.png +0 -0
  526. msprobe/docs/img/compare_result.png +0 -0
  527. msprobe/docs/img/compare_result_pkl.png +0 -0
  528. msprobe/docs/img/compare_result_pkl_md5.png.png +0 -0
  529. msprobe/docs/img/cpu_info.png +0 -0
  530. msprobe/docs/img/free_benchmark.png +0 -0
  531. msprobe/docs/img/free_benchmark_framework.png +0 -0
  532. msprobe/docs/img/grad_probe_image-1.png +0 -0
  533. msprobe/docs/img/grad_probe_image-2.png +0 -0
  534. msprobe/docs/img/grad_probe_image-3.png +0 -0
  535. msprobe/docs/img/grad_probe_image-4.png +0 -0
  536. msprobe/docs/img/grad_probe_image.png +0 -0
  537. msprobe/docs/img/merge_result.png +0 -0
  538. msprobe/docs/img/module_compare.png +0 -0
  539. msprobe/docs/img/monitor/cpu_info.png +0 -0
  540. msprobe/docs/img/monitor/step_count_per_record.png +0 -0
  541. msprobe/docs/img/ms_dump.png +0 -0
  542. msprobe/docs/img/ms_layer.png +0 -0
  543. msprobe/docs/img/pt_dump.png +0 -0
  544. msprobe/docs/img/save_compare_result_sample.png +0 -0
  545. msprobe/docs/img/visualization/fuzzy_match_ms.png +0 -0
  546. msprobe/docs/img/visualization/fuzzy_match_pt.png +0 -0
  547. msprobe/docs/img/visualization/proxy.png +0 -0
  548. msprobe/docs/img/visualization/tensorboard_1.png +0 -0
  549. msprobe/docs/img/visualization/tensorboard_2.png +0 -0
  550. msprobe/docs/img/visualization/vis_browser_1.png +0 -0
  551. msprobe/docs/img/visualization/vis_browser_2.png +0 -0
  552. msprobe/docs/img/visualization/vis_match_info.png +0 -0
  553. msprobe/docs/img/visualization/vis_precision_info.png +0 -0
  554. msprobe/docs/img/visualization/vis_search_info.png +0 -0
  555. msprobe/docs/img/visualization/vis_show_info.png +0 -0
  556. msprobe/docs/img/visualization/vis_showcase.png +0 -0
  557. msprobe/docs/img/visualization/vis_unmatch_info.png +0 -0
  558. msprobe/docs/visualization/GPTModel.png +0 -0
  559. msprobe/docs/visualization/ParallelMLP.png +0 -0
  560. msprobe/docs/visualization/layer_mapping_example.md +0 -132
  561. msprobe/docs/visualization/mapping.png +0 -0
  562. msprobe/docs/visualization/mapping1.png +0 -0
  563. msprobe/docs/visualization/mindspeed_llamafactoary_img/1.png +0 -0
  564. msprobe/docs/visualization/mindspeed_llamafactoary_img/2.png +0 -0
  565. msprobe/docs/visualization/mindspeed_llamafactoary_img/3.png +0 -0
  566. msprobe/docs/visualization/mindspeed_llamafactoary_img/4.png +0 -0
  567. msprobe/docs/visualization/mindspeed_llamafactoary_img/5.png +0 -0
  568. msprobe/docs/visualization/mindspeed_llamafactoary_img/6.png +0 -0
  569. msprobe/docs/visualization/mindspeed_llamafactoary_img/7.png +0 -0
  570. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory-qwen25vl.txt +0 -59
  571. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory1.png +0 -0
  572. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory2.png +0 -0
  573. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed-mm-qwen25vl.txt +0 -80
  574. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed1.png +0 -0
  575. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed2.png +0 -0
  576. msprobe/docs/visualization/mindspeed_llamafactory_mapping.md +0 -330
  577. msprobe/docs/visualization/module_name.png +0 -0
  578. msprobe/docs/visualization/module_name1.png +0 -0
  579. msprobe/docs/visualization/no_mapping.png +0 -0
  580. msprobe/docs/visualization/no_mapping1.png +0 -0
  581. msprobe/docs/visualization/no_mapping_analyze.png +0 -0
  582. msprobe/docs/visualization/top_layer.png +0 -0
  583. msprobe/mindspore/api_accuracy_checker/generate_op_script/op_generator.py +0 -460
  584. msprobe/mindspore/api_accuracy_checker/generate_op_script/operator_replication.template +0 -2081
  585. msprobe/mindspore/code_mapping/bind.py +0 -283
  586. msprobe/mindspore/code_mapping/cmd_parser.py +0 -40
  587. msprobe/mindspore/code_mapping/graph.py +0 -49
  588. msprobe/mindspore/code_mapping/graph_parser.py +0 -211
  589. msprobe/mindspore/code_mapping/main.py +0 -24
  590. msprobe/mindspore/code_mapping/processor.py +0 -34
  591. msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp +0 -111
  592. msprobe/mindspore/dym_loader/hook_dynamic_loader.h +0 -52
  593. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +0 -257
  594. msprobe/mindspore/free_benchmark/common/config.py +0 -27
  595. msprobe/mindspore/free_benchmark/common/handler_params.py +0 -31
  596. msprobe/mindspore/free_benchmark/common/utils.py +0 -100
  597. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +0 -638
  598. msprobe/mindspore/free_benchmark/handler/base_handler.py +0 -105
  599. msprobe/mindspore/free_benchmark/handler/check_handler.py +0 -55
  600. msprobe/mindspore/free_benchmark/handler/fix_handler.py +0 -51
  601. msprobe/mindspore/free_benchmark/handler/handler_factory.py +0 -36
  602. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +0 -82
  603. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +0 -45
  604. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +0 -78
  605. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +0 -77
  606. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +0 -56
  607. msprobe/mindspore/free_benchmark/perturbation/no_change.py +0 -27
  608. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +0 -46
  609. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +0 -51
  610. msprobe/mindspore/grad_probe/global_context.py +0 -127
  611. msprobe/mindspore/grad_probe/grad_analyzer.py +0 -260
  612. msprobe/mindspore/grad_probe/grad_monitor.py +0 -42
  613. msprobe/mindspore/grad_probe/grad_stat_csv.py +0 -161
  614. msprobe/mindspore/grad_probe/hook.py +0 -115
  615. msprobe/mindspore/grad_probe/utils.py +0 -43
  616. msprobe/mindspore/mindtorch/__init__.py +0 -18
  617. msprobe/mindspore/ms_config.py +0 -153
  618. msprobe/mindspore/task_handler_factory.py +0 -44
  619. msprobe/nan_analyze/__init__.py +0 -14
  620. msprobe/pytorch/api_accuracy_checker/generate_op_script/config_op.json +0 -9
  621. msprobe/pytorch/api_accuracy_checker/generate_op_script/op_generator.py +0 -480
  622. msprobe/pytorch/api_accuracy_checker/generate_op_script/operator_replication.template +0 -567
  623. msprobe/pytorch/debugger/precision_debugger.py +0 -181
  624. msprobe/pytorch/free_benchmark/__init__.py +0 -23
  625. msprobe/pytorch/free_benchmark/common/constant.py +0 -85
  626. msprobe/pytorch/free_benchmark/common/counter.py +0 -87
  627. msprobe/pytorch/free_benchmark/common/enums.py +0 -80
  628. msprobe/pytorch/free_benchmark/common/params.py +0 -152
  629. msprobe/pytorch/free_benchmark/common/utils.py +0 -143
  630. msprobe/pytorch/free_benchmark/compare/grad_saver.py +0 -215
  631. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +0 -121
  632. msprobe/pytorch/free_benchmark/main.py +0 -123
  633. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +0 -28
  634. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +0 -56
  635. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +0 -107
  636. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +0 -121
  637. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +0 -89
  638. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +0 -87
  639. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +0 -43
  640. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +0 -60
  641. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +0 -34
  642. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +0 -252
  643. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +0 -54
  644. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +0 -40
  645. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +0 -45
  646. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +0 -181
  647. msprobe/pytorch/grad_probe/__init__.py +0 -0
  648. msprobe/pytorch/grad_probe/grad_monitor.py +0 -108
  649. msprobe/pytorch/grad_probe/grad_stat_csv.py +0 -160
  650. msprobe/pytorch/hook_module/__init__.py +0 -16
  651. msprobe/pytorch/hook_module/wrap_aten.py +0 -111
  652. msprobe/pytorch/online_dispatch/__init__.py +0 -19
  653. msprobe/pytorch/online_dispatch/compare.py +0 -224
  654. msprobe/pytorch/online_dispatch/dispatch.py +0 -332
  655. msprobe/pytorch/online_dispatch/dump_compare.py +0 -179
  656. msprobe/pytorch/online_dispatch/single_compare.py +0 -412
  657. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +0 -58
  658. msprobe/pytorch/online_dispatch/utils.py +0 -158
  659. msprobe/pytorch/parse_tool/__init__.py +0 -0
  660. msprobe/pytorch/parse_tool/cli.py +0 -31
  661. msprobe/pytorch/parse_tool/lib/__init__.py +0 -0
  662. msprobe/pytorch/parse_tool/lib/compare.py +0 -253
  663. msprobe/pytorch/parse_tool/lib/config.py +0 -50
  664. msprobe/pytorch/parse_tool/lib/file_desc.py +0 -45
  665. msprobe/pytorch/parse_tool/lib/interactive_cli.py +0 -97
  666. msprobe/pytorch/parse_tool/lib/parse_exception.py +0 -54
  667. msprobe/pytorch/parse_tool/lib/parse_tool.py +0 -161
  668. msprobe/pytorch/parse_tool/lib/utils.py +0 -299
  669. msprobe/pytorch/parse_tool/lib/visualization.py +0 -85
  670. msprobe/pytorch/pt_config.py +0 -299
  671. /msprobe/core/{grad_probe → dump}/__init__.py +0 -0
  672. /msprobe/{mindspore/code_mapping → core/dump/api_dump}/__init__.py +0 -0
  673. /msprobe/{mindspore/debugger → core/dump/data_dump}/__init__.py +0 -0
  674. /msprobe/{mindspore/exception_dump → core/dump/data_dump/data_processor}/__init__.py +0 -0
  675. /msprobe/{mindspore/free_benchmark → core/dump/debugger}/__init__.py +0 -0
  676. /msprobe/{mindspore/free_benchmark/common → core/dump/kernel_dump}/__init__.py +0 -0
  677. /msprobe/mindspore/{free_benchmark/handler → dump/debugger}/__init__.py +0 -0
  678. /msprobe/mindspore/{grad_probe → dump/dump_processor}/__init__.py +0 -0
  679. /msprobe/mindspore/{overflow_check → dump/exception_dump}/__init__.py +0 -0
  680. /msprobe/mindspore/{mindtorch → dump/mindtorch}/mindtorch_adaptor.py +0 -0
  681. /msprobe/{pytorch/api_accuracy_checker/run_ut → mindspore/dump/overflow_check}/__init__.py +0 -0
  682. /msprobe/{pytorch/debugger → mindspore/monitor}/__init__.py +0 -0
  683. /msprobe/{pytorch/free_benchmark/common → msaccucmp}/__init__.py +0 -0
  684. /msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/.keep +0 -0
  685. /msprobe/pytorch/{free_benchmark/perturbed_layers → api_accuracy_checker/acc_check}/__init__.py +0 -0
  686. /msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/torch_ut_setting.json +0 -0
  687. /msprobe/pytorch/{free_benchmark/perturbed_layers/npu → dump/api_dump}/__init__.py +0 -0
  688. /msprobe/pytorch/{hook_module → dump/api_dump}/support_wrap_ops.yaml +0 -0
  689. /msprobe/pytorch/{free_benchmark/result_handlers → dump/debugger}/__init__.py +0 -0
@@ -0,0 +1,669 @@
1
+ # -*- coding: utf-8 -*-
2
+ # -------------------------------------------------------------------------
3
+ # This file is part of the MindStudio project.
4
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
5
+ #
6
+ # MindStudio is licensed under Mulan PSL v2.
7
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
8
+ # You may obtain a copy of Mulan PSL v2 at:
9
+ #
10
+ # http://license.coscl.org.cn/MulanPSL2
11
+ #
12
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
13
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
14
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
15
+ # See the Mulan PSL v2 for more details.
16
+ # -------------------------------------------------------------------------
17
+
18
+ """
19
+ Function:
20
+ This class mainly involves common function.
21
+ """
22
+ import enum
23
+ import itertools
24
+ import os
25
+ import re
26
+ import shutil
27
+ import subprocess
28
+
29
+ import numpy as np
30
+
31
+ from msprobe.infer.offline.compare.msquickcmp.common.dynamic_argument_bean import DynamicArgumentEnum
32
+ from msprobe.core.common.log import logger
33
+
34
+ ACCURACY_COMPARISON_INVALID_PARAM_ERROR = 1
35
+ ACCURACY_COMPARISON_INVALID_DATA_ERROR = 2
36
+ ACCURACY_COMPARISON_INVALID_PATH_ERROR = 3
37
+ ACCURACY_COMPARISON_INVALID_COMMAND_ERROR = 4
38
+ ACCURACY_COMPARISON_PYTHON_VERSION_ERROR = 5
39
+ ACCURACY_COMPARISON_MODEL_TYPE_ERROR = 6
40
+ ACCURACY_COMPARISON_PARSER_JSON_FILE_ERROR = 7
41
+ ACCURACY_COMPARISON_WRITE_JSON_FILE_ERROR = 8
42
+ ACCURACY_COMPARISON_OPEN_FILE_ERROR = 9
43
+ ACCURACY_COMPARISON_BIN_FILE_ERROR = 10
44
+ ACCURACY_COMPARISON_INVALID_KEY_ERROR = 11
45
+ ACCURACY_COMPARISON_PYTHON_COMMAND_ERROR = 12
46
+ ACCURACY_COMPARISON_TENSOR_TYPE_ERROR = 13
47
+ ACCURACY_COMPARISON_NO_DUMP_FILE_ERROR = 14
48
+ ACCURACY_COMPARISON_NOT_SUPPORT_ERROR = 15
49
+ ACCURACY_COMPARISON_NET_OUTPUT_ERROR = 16
50
+ ACCURACY_COMPARISON_INVALID_DEVICE_ERROR = 17
51
+ ACCURACY_COMPARISON_WRONG_AIPP_CONTENT = 18
52
+ ACCRACY_COMPARISON_EXTRACT_ERROR = 19
53
+ ACCRACY_COMPARISON_FETCH_DATA_ERROR = 20
54
+ ACCURACY_COMPARISON_ATC_RUN_ERROR = 21
55
+ ACCURACY_COMPARISON_INVALID_RIGHT_ERROR = 22
56
+ ACCURACY_COMPARISON_INDEX_OUT_OF_BOUNDS_ERROR = 23
57
+ ACCURACY_COMPARISON_EMPTY_CSV_ERROR = 24
58
+ MODEL_TYPE = ['.onnx', '.om']
59
+ DIM_PATTERN = r"^(-?[0-9]{1,100})(,-?[0-9]{1,100}){0,100}"
60
+ DYNAMIC_DIM_PATTERN = r"^([0-9-~]+)(,-?[0-9-~]+){0,3}"
61
+ MAX_DEVICE_ID = 255
62
+ SEMICOLON = ";"
63
+ COLON = ":"
64
+ EQUAL = "="
65
+ COMMA = ","
66
+ DOT = "."
67
+ ASCEND_BATCH_FIELD = "ascend_mbatch_batch_"
68
+ BATCH_SCENARIO_OP_NAME = "{0}_ascend_mbatch_batch_{1}"
69
+ INVALID_CHARS = ['|', ';', '&', '&&', '||', '>', '>>', '<', '`', '\\', '!', '\n']
70
+ MAX_READ_FILE_SIZE_4G = 4294967296 # 4G, 4 * 1024 * 1024 * 1024
71
+ DYM_SHAPE_END_MAX = 1000000
72
+ MAX_TENSOR_SHAPE_CONUT = 200
73
+ OPTYPE_WHITWLIST = ['Data', 'TransData', 'PartitionCall']
74
+
75
+
76
+ class AccuracyCompareException(Exception):
77
+ """
78
+ Class for Accuracy Compare Exception
79
+ """
80
+
81
+ def __init__(self, error_info):
82
+ super(AccuracyCompareException, self).__init__()
83
+ self.error_info = error_info
84
+
85
+
86
+ class InputShapeError(enum.Enum):
87
+ """
88
+ Class for Input Shape Error
89
+ """
90
+
91
+ FORMAT_NOT_MATCH = 0
92
+ VALUE_TYPE_NOT_MATCH = 1
93
+ NAME_NOT_MATCH = 2
94
+ TOO_LONG_PARAMS = 3
95
+
96
+
97
+ def check_exec_cmd(command: str):
98
+ if command.startswith("bash") or command.startswith("python"):
99
+ cmds = command.split()
100
+ if len(cmds) < 2:
101
+ logger.error("Num of command elements is invalid.")
102
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_COMMAND_ERROR)
103
+ elif len(cmds) == 2:
104
+ script_file = cmds[1]
105
+ check_exec_script_file(script_file)
106
+ else:
107
+ script_file = cmds[1]
108
+ check_exec_script_file(script_file)
109
+ args = cmds[2:]
110
+ check_input_args(args)
111
+ return True
112
+
113
+ else:
114
+ logger.error("Command is not started with bash or python.")
115
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_COMMAND_ERROR)
116
+
117
+
118
+ def check_exec_script_file(script_path: str):
119
+ if not os.path.exists(script_path):
120
+ logger.error(f"File {script_path} is not exist.")
121
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PATH_ERROR)
122
+
123
+ if not os.access(script_path, os.X_OK):
124
+ logger.error(f"Script {script_path} don't has X authority.")
125
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_RIGHT_ERROR)
126
+
127
+
128
+ def check_file_or_directory_path(path, isdir=False):
129
+ """
130
+ Function Description:
131
+ check whether the path is valid
132
+ Parameter:
133
+ path: the path to check
134
+ isdir: the path is dir or file
135
+ Exception Description:
136
+ when invalid data throw exception
137
+ """
138
+
139
+ if isdir:
140
+ if not os.path.isdir(path):
141
+ logger.error(f"The path {path} is not a directory. Please check the path")
142
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PATH_ERROR)
143
+ if not os.access(path, os.W_OK):
144
+ logger.error(f"The path {path} does not have permission to write. Please check the path permission")
145
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PATH_ERROR)
146
+ else:
147
+ if not os.path.isfile(path):
148
+ logger.error(f"The path {path} is not a file.Please check the path")
149
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PATH_ERROR)
150
+ if not os.access(path, os.R_OK):
151
+ logger.error(f"The path {path} does not have permission to read.Please check the path permission")
152
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PATH_ERROR)
153
+
154
+
155
+ def check_input_bin_file_path(input_path):
156
+ """
157
+ Function Description:
158
+ check the output bin file
159
+ Parameter:
160
+ input_path: input path directory
161
+ """
162
+ input_bin_files = input_path.split(',')
163
+ bin_file_path_array = []
164
+ for input_item in input_bin_files:
165
+ input_item_path = os.path.realpath(input_item)
166
+ if input_item_path.endswith('.bin'):
167
+ check_file_or_directory_path(input_item_path)
168
+ bin_file_path_array.append(input_item_path)
169
+ else:
170
+ check_file_or_directory_path(input_item_path, True)
171
+ get_input_path(input_item_path, bin_file_path_array)
172
+ return bin_file_path_array
173
+
174
+
175
+ def check_file_size_valid(file_path, size_max):
176
+ if os.stat(file_path).st_size > size_max:
177
+ logger.error(f'file_path={file_path} is too large, > {size_max}, not valid.')
178
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_DATA_ERROR)
179
+
180
+
181
+ def check_input_args(args: list):
182
+ for arg in args:
183
+ if arg in INVALID_CHARS:
184
+ logger.error("Args has invalid character.")
185
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
186
+
187
+
188
+ def check_convert_is_valid_used(dump, bin2npy, custom_op):
189
+ """
190
+ check dump is True while using convert
191
+ """
192
+ if not dump and (bin2npy or custom_op != ""):
193
+ logger.error(
194
+ "Convert option or custom_op is forbidden when dump is False!\
195
+ Please keep dump True while using convert."
196
+ )
197
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_COMMAND_ERROR)
198
+
199
+
200
+ def check_locat_is_valid(dump, locat):
201
+ """
202
+ Function:
203
+ check locat args is completed
204
+ Return:
205
+ True or False
206
+ """
207
+ if locat and not dump:
208
+ logger.error("Dump must be True when locat is used")
209
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_COMMAND_ERROR)
210
+
211
+
212
+ def check_device_param_valid(device):
213
+ """
214
+ check device param valid.
215
+ """
216
+ if not device.isdigit() or int(device) > MAX_DEVICE_ID:
217
+ logger.error(
218
+ "Please enter a valid number for device, the device id should be" " in [0, 255], now is %s." % device
219
+ )
220
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_DEVICE_ERROR)
221
+
222
+
223
+ def check_dynamic_shape(shape):
224
+ """
225
+ Function Description:
226
+ check dynamic shpae
227
+ Parameter:
228
+ shape:shape
229
+ Return Value:
230
+ False or True
231
+ """
232
+ dynamic_shape = False
233
+ for item in shape:
234
+ if item is None or isinstance(item, str):
235
+ dynamic_shape = True
236
+ break
237
+ return dynamic_shape
238
+
239
+
240
+ def _check_colon_exist(input_shape):
241
+ if ":" not in input_shape:
242
+ logger.error(get_shape_not_match_message(InputShapeError.FORMAT_NOT_MATCH, input_shape))
243
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
244
+
245
+
246
+ def _check_content_split_length(content_split):
247
+ if not content_split[1]:
248
+ logger.error(get_shape_not_match_message(InputShapeError.VALUE_TYPE_NOT_MATCH, content_split[1]))
249
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
250
+
251
+
252
+ def _check_shape_number(input_shape_value, pattern=DIM_PATTERN):
253
+ dim_pattern = re.compile(pattern)
254
+ match = dim_pattern.match(input_shape_value)
255
+ if not match or match.group() is not input_shape_value:
256
+ logger.error(get_shape_not_match_message(InputShapeError.VALUE_TYPE_NOT_MATCH, input_shape_value))
257
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
258
+
259
+
260
+ def check_input_name_in_model(tensor_name_list, input_name):
261
+ """
262
+ Function Description:
263
+ check input name in model
264
+ Parameter:
265
+ tensor_name_list: the tensor name list
266
+ input_name: the input name
267
+ Exception Description:
268
+ When input name not in tensor name list throw exception
269
+ """
270
+ if input_name not in tensor_name_list:
271
+ logger.error(get_shape_not_match_message(InputShapeError.NAME_NOT_MATCH, input_name))
272
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
273
+
274
+
275
+ def check_max_size_param_valid(max_cmp_size):
276
+ """
277
+ check max_size param valid.
278
+ """
279
+ if max_cmp_size < 0:
280
+ logger.error(
281
+ "Please enter a valid number for max_cmp_size, the max_cmp_size should be"
282
+ " in [0, ∞), now is %s." % max_cmp_size
283
+ )
284
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_DEVICE_ERROR)
285
+
286
+
287
+ def get_model_name_and_extension(offline_model_path):
288
+ """
289
+ Function Description:
290
+ obtain the name and extension of the model file
291
+ Parameter:
292
+ offline_model_path: offline model path
293
+ Return Value:
294
+ model_name,extension
295
+ Exception Description:
296
+ when invalid data throw exception
297
+ """
298
+ file_name = os.path.basename(offline_model_path)
299
+ model_name, extension = os.path.splitext(file_name)
300
+ if extension not in MODEL_TYPE:
301
+ logger.error(f"Model file {offline_model_path} suffix not valid, supported ones are {MODEL_TYPE}")
302
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PATH_ERROR)
303
+ return model_name, extension
304
+
305
+
306
+ def get_input_path(input_item_path, bin_file_path_array):
307
+ for root, _, files in os.walk(input_item_path):
308
+ for bin_file in files:
309
+ if bin_file.endswith('.bin'):
310
+ file_path = os.path.join(root, bin_file)
311
+ bin_file_path_array.append(file_path)
312
+
313
+
314
+ def get_dump_data_path(dump_dir, is_net_output=False, model_name=None):
315
+ """
316
+ Function Description:
317
+ traverse directories and obtain the absolute path of dump data
318
+ Parameter:
319
+ dump_dir: dump data directory
320
+ Return Value:
321
+ dump data path,file is exist or file is not exist
322
+ """
323
+ dump_data_path = None
324
+ file_is_exist = False
325
+ dump_data_dir = None
326
+ for i in os.listdir(dump_dir):
327
+ if not (os.path.isdir(os.path.join(dump_dir, i))):
328
+ continue
329
+ # net_output dump file directory, name is like 12_423_246_4352
330
+ if is_net_output:
331
+ if not i.isdigit():
332
+ dump_data_dir = os.path.join(dump_dir, i)
333
+ break
334
+ # Contains the dump file directory, whose name is a pure digital timestamp
335
+ elif i.isdigit():
336
+ dump_data_dir = os.path.join(dump_dir, i)
337
+ break
338
+
339
+ if not dump_data_dir:
340
+ logger.error(f"The directory \"{dump_dir}\" does not contain dump data")
341
+ raise AccuracyCompareException(ACCURACY_COMPARISON_NO_DUMP_FILE_ERROR)
342
+
343
+ dump_data_path_list = []
344
+ for dir_path, _, files in os.walk(dump_data_dir):
345
+ if files and not any(file.startswith("aclnn") for file in files):
346
+ dump_data_path_list.append(dir_path)
347
+ file_is_exist = True
348
+
349
+ if len(dump_data_path_list) > 1:
350
+ # find the model name directory
351
+ dump_data_path = dump_data_path_list[0]
352
+ for ii in dump_data_path_list:
353
+ if model_name in ii:
354
+ dump_data_path = ii
355
+ break
356
+
357
+ # move all dump files to single directory
358
+ for ii in dump_data_path_list:
359
+ if ii == dump_data_path:
360
+ continue
361
+ for file in os.listdir(ii):
362
+ shutil.move(os.path.join(ii, file), dump_data_path)
363
+
364
+ elif len(dump_data_path_list) == 1:
365
+ dump_data_path = dump_data_path_list[0]
366
+ else:
367
+ dump_data_path = None
368
+
369
+ return dump_data_path, file_is_exist
370
+
371
+
372
+ def get_shape_to_directory_name(input_shape):
373
+ shape_info = re.sub(r"[:;]", "-", input_shape)
374
+ shape_info = re.sub(r",", "_", shape_info)
375
+ return shape_info
376
+
377
+
378
+ def get_shape_not_match_message(shape_error_type, value):
379
+ """
380
+ Function Description:
381
+ get shape not match message
382
+ Parameter:
383
+ input:the value
384
+ shape_error_type: the shape error type
385
+ Return Value:
386
+ not match message
387
+ """
388
+ message = ""
389
+ if shape_error_type == InputShapeError.FORMAT_NOT_MATCH:
390
+ message = (
391
+ "Input shape \"{}\" format mismatch,the format like: "
392
+ "input_name1:1,224,224,3;input_name2:3,300".format(value)
393
+ )
394
+ if shape_error_type == InputShapeError.VALUE_TYPE_NOT_MATCH:
395
+ message = "Input shape \"{}\" value not number".format(value)
396
+ if shape_error_type == InputShapeError.NAME_NOT_MATCH:
397
+ message = "Input tensor name \"{}\" not in model".format(value)
398
+ if shape_error_type == InputShapeError.TOO_LONG_PARAMS:
399
+ message = "Input \"{}\" value too long".format(value)
400
+ return message
401
+
402
+
403
+ def get_batch_index(dump_data_path):
404
+ for _, _, files in os.walk(dump_data_path):
405
+ for file_name in files:
406
+ if ASCEND_BATCH_FIELD in file_name:
407
+ return get_batch_index_from_name(file_name)
408
+ return ""
409
+
410
+
411
+ def get_mbatch_op_name(om_parser, op_name, npu_dump_data_path):
412
+ _, scenario = om_parser.get_dynamic_scenario_info()
413
+ if scenario in [DynamicArgumentEnum.DYM_BATCH, DynamicArgumentEnum.DYM_DIMS]:
414
+ batch_index = get_batch_index(npu_dump_data_path)
415
+ current_op_name = BATCH_SCENARIO_OP_NAME.format(op_name, batch_index)
416
+ else:
417
+ return op_name
418
+ return current_op_name
419
+
420
+
421
+ def get_batch_index_from_name(name):
422
+ batch_index = ""
423
+ last_batch_field_index = name.rfind(ASCEND_BATCH_FIELD)
424
+ pos = last_batch_field_index + len(ASCEND_BATCH_FIELD)
425
+ while pos < len(name) and name[pos].isdigit():
426
+ batch_index += name[pos]
427
+ pos += 1
428
+ return batch_index
429
+
430
+
431
+ def get_data_len_by_shape(shape):
432
+ data_len = 1
433
+ for item in shape:
434
+ if item == -1:
435
+ logger.warning("please check your input shape, one dim in shape is -1.")
436
+ return -1
437
+ data_len = data_len * item
438
+ return data_len
439
+
440
+
441
+ def parse_input_shape(input_shape):
442
+ """
443
+ Function Description:
444
+ parse input shape
445
+ Parameter:
446
+ input_shape:the input shape,this format like:tensor_name1:dim1,dim2;tensor_name2:dim1,dim2
447
+ Return Value:
448
+ the map type of input_shapes
449
+ """
450
+ input_shapes = {}
451
+ if input_shape == '':
452
+ return input_shapes
453
+ _check_colon_exist(input_shape)
454
+ tensor_list = input_shape.split(';')
455
+ for tensor in tensor_list:
456
+ _check_colon_exist(input_shape)
457
+ tensor_shape_list = tensor.rsplit(':', maxsplit=1)
458
+ if len(tensor_shape_list) == 2:
459
+ shape = tensor_shape_list[1]
460
+ input_shapes[tensor_shape_list[0]] = shape.split(',')
461
+ _check_shape_number(shape)
462
+ else:
463
+ logger.error(get_shape_not_match_message(InputShapeError.FORMAT_NOT_MATCH, input_shape))
464
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
465
+ return input_shapes
466
+
467
+
468
+ def parse_input_shape_to_list(input_shape):
469
+ """
470
+ Function Description:
471
+ parse input shape and get a list only contains inputs shape
472
+ Parameter:
473
+ input_shape:the input shape,this format like:tensor_name1:dim1,dim2;tensor_name2:dim1,dim2.
474
+ Return Value:
475
+ a list only contains inputs shape, this format like [[dim1,dim2],[dim1,dim2]]
476
+ """
477
+ input_shape_list = []
478
+ if not input_shape:
479
+ return input_shape_list
480
+ _check_colon_exist(input_shape)
481
+ tensor_list = input_shape.split(';')
482
+ if len(tensor_list) > MAX_TENSOR_SHAPE_CONUT:
483
+ raise ValueError("The input of --input_shape parameter is unreasonable, " \
484
+ "because the number of tensor shape is much than 200.")
485
+ for tensor in tensor_list:
486
+ tensor_shape_list = tensor.rsplit(':', maxsplit=1)
487
+ if len(tensor_shape_list) == 2:
488
+ shape_list_int = []
489
+ for dim in tensor_shape_list[1].split(','):
490
+ if dim.isdigit():
491
+ shape_list_int.append(int(dim))
492
+ else:
493
+ raise ValueError("The input of --input_shape parameter is unreasonable, " \
494
+ "because the tensor shape is not digit.")
495
+ for dim_int in shape_list_int:
496
+ if dim_int < 0:
497
+ raise ValueError("The input of --input_shape parameter is unreasonable, " \
498
+ "possibly because the upper bound is smaller than 0.")
499
+ prompt = "The --input_shape %r is larger than expected. " \
500
+ "Attempting to input such a shape could potentially impact system performance.\n" \
501
+ "Please confirm your awareness of the risks associated with this action ([y]/n): " % tensor
502
+ if dim_int > DYM_SHAPE_END_MAX and not dym_shape_range_interaction(prompt):
503
+ raise ValueError("The dim of --input_shape %r is too large." % (str(dim_int)))
504
+
505
+ input_shape_list.append(shape_list_int)
506
+ else:
507
+ logger.error(get_shape_not_match_message(InputShapeError.FORMAT_NOT_MATCH, input_shape))
508
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
509
+ return input_shape_list
510
+
511
+
512
+ def dym_shape_range_interaction(prompt):
513
+ confirm_pattern = re.compile(r'y(?:es)?', re.IGNORECASE)
514
+
515
+ try:
516
+ user_action = input(prompt)
517
+ except Exception:
518
+ return False
519
+
520
+ return bool(confirm_pattern.match(user_action))
521
+
522
+
523
+ def parse_dym_shape_range(dym_shape_range):
524
+ """
525
+ Function Description:
526
+ parse dynamic input shape
527
+ Parameter:
528
+ dym_shape_range:the input shape,this format like:tensor_name1:dim1,dim2-dim3;tensor_name2:dim1,dim2~dim3.
529
+ - means the both dim2 and dim3 value, ~ means the range of [dim2:dim3]
530
+ Return Value:
531
+ a list only contains inputs shape, this format like [[dim1,dim2],[dim1,dim2]]
532
+ """
533
+ _check_colon_exist(dym_shape_range)
534
+ input_shapes = {}
535
+ tensor_list = dym_shape_range.split(";")
536
+ info_list = []
537
+
538
+ for tensor in tensor_list:
539
+ _check_colon_exist(dym_shape_range)
540
+ shapes = []
541
+ name, shapestr = tensor.split(":")
542
+ if len(shapestr) < 50:
543
+ _check_shape_number(shapestr, DYNAMIC_DIM_PATTERN)
544
+ else:
545
+ logger.error(get_shape_not_match_message(InputShapeError.TOO_LONG_PARAMS, input_shapes))
546
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
547
+ for content in shapestr.split(","):
548
+ if "~" in content:
549
+ content_split = content.split("~")
550
+ _check_content_split_length(content_split)
551
+ start_str = content_split[0]
552
+ end_str = content_split[1]
553
+ step_str = content_split[2] if len(content_split) == 3 else "1"
554
+ if not start_str.isdigit() or not end_str.isdigit() or not step_str.isdigit():
555
+ raise ValueError(f"--dym-shape parameter should be digit.")
556
+ start = int(start_str)
557
+ end = int(end_str)
558
+ step = int(step_str)
559
+ if start > end or start < 0:
560
+ raise ValueError("The input of --dym-shape parameter is unreasonable, " \
561
+ "possibly because the upper bound of the shape is greater than the lower bound" \
562
+ "or the upper bound is smaller than 0.")
563
+ if step <= 0:
564
+ raise ValueError(f"Step in --dym-shape parameter should be greater than 0, now is {step}.")
565
+ prompt = "The --dym-shape-range %r is larger than expected. " \
566
+ "Attempting to input such a shape could potentially impact system performance.\n" \
567
+ "Please confirm your awareness of the risks associated with this action ([y]/n): " % content
568
+ if (end - start) / step > DYM_SHAPE_END_MAX and not dym_shape_range_interaction(prompt):
569
+ raise ValueError("--dym-shape-range is too large, start: %r, end: %r, step: %r" % (str(start), \
570
+ str(end),
571
+ str(step)))
572
+ ranges = [str(i) for i in range(start, end + 1, step)]
573
+ elif "-" in content:
574
+ ranges = content.split("-")
575
+ else:
576
+ start = int(content)
577
+ ranges = [str(start)]
578
+ shapes.append(ranges)
579
+ shape_list = [",".join(s) for s in list(itertools.product(*shapes))]
580
+ info = ["{}:{}".format(name, s) for s in shape_list]
581
+ info_list.append(info)
582
+ res = [";".join(s) for s in list(itertools.product(*info_list))]
583
+ logger.info("shape_list:" + str(res))
584
+ return res
585
+
586
+
587
+ def parse_arg_value(values):
588
+ """
589
+ parse dynamic arg value of atc cmdline
590
+ """
591
+ value_list = []
592
+ for item in values.split(SEMICOLON):
593
+ value_list.append(parse_value_by_comma(item))
594
+ return value_list
595
+
596
+
597
+ def parse_value_by_comma(value):
598
+ """
599
+ parse value by comma, like '1,2,4,8'
600
+ """
601
+ value_list = []
602
+ value_str_list = value.split(COMMA)
603
+ for value_str in value_str_list:
604
+ value_str = value_str.strip()
605
+ if value_str.isdigit() or value_str == '-1':
606
+ value_list.append(int(value_str))
607
+ else:
608
+ logger.error("please check your input shape.")
609
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_PARAM_ERROR)
610
+ return value_list
611
+
612
+
613
+ def execute_command(cmd, info_need=True):
614
+ """
615
+ Function Description:
616
+ run the following command
617
+ Parameter:
618
+ cmd: command
619
+ Return Value:
620
+ command output result
621
+ Exception Description:
622
+ when invalid command throw exception
623
+ """
624
+ if info_need:
625
+ logger.info('Execute command:%s' % " ".join(cmd))
626
+ process = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
627
+ ais_bench_logs = ""
628
+ try:
629
+ while process.poll() is None:
630
+ line = process.stdout.readline()
631
+ if line: # 检查line是否为空,避免解码和追加是的潜在错误
632
+ ais_bench_logs += line.decode()
633
+ finally:
634
+ process.stdout.close()
635
+ if process.returncode != 0:
636
+ logger.error('Failed to execute command:%s' % " ".join(cmd))
637
+ logger.error(f'\nerror log:\n {ais_bench_logs}')
638
+ raise AccuracyCompareException(ACCURACY_COMPARISON_INVALID_DATA_ERROR)
639
+
640
+
641
+ def handle_ground_truth_files(om_parser, npu_dump_data_path, golden_dump_data_path):
642
+ _, scenario = om_parser.get_dynamic_scenario_info()
643
+ if scenario in [DynamicArgumentEnum.DYM_BATCH, DynamicArgumentEnum.DYM_DIMS]:
644
+ batch_index = get_batch_index(npu_dump_data_path)
645
+ for root, _, files in os.walk(golden_dump_data_path):
646
+ for file_name in files:
647
+ first_dot_index = file_name.find(DOT)
648
+ if first_dot_index == -1:
649
+ logger.warning("file name in golden dump data path found it does not contain '.', skip copy.")
650
+ continue
651
+ current_op_name = BATCH_SCENARIO_OP_NAME.format(file_name[:first_dot_index], batch_index)
652
+ dst_file_name = current_op_name + file_name[first_dot_index:]
653
+ shutil.copy(os.path.join(root, file_name), os.path.join(root, dst_file_name))
654
+
655
+
656
+ def load_npy_from_buffer(raw_data, dtype, shape):
657
+ no_dump_data = None
658
+ try:
659
+ return np.frombuffer(raw_data, dtype=dtype).reshape(shape)
660
+ except Exception as e:
661
+ return no_dump_data
662
+
663
+
664
+ def find_om_files(dir_path):
665
+ om_files = []
666
+ for filename in os.listdir(dir_path):
667
+ if filename.endswith('.om'):
668
+ om_files.append(os.path.join(dir_path, filename))
669
+ return om_files
@@ -0,0 +1,6 @@
1
+ [URL]
2
+ whl_base_url=https://aisbench.obs.myhuaweicloud.com/packet/ais_bench_infer/0.0.2/ait/
3
+ aclruntime_sha_base_url=https://aisbench.obs.myhuaweicloud.com/packet/ais_bench_infer/0.0.2/ait/hash_info/
4
+ tools_base_url=https://gitee.com/ascend/tools.git
5
+ ais_bench_whl_download_url=https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_bench
6
+ ais_bench_sha_base_url=https://aisbench.obs.myhuaweicloud.com/packet/ais_bench_infer/0.0.2/ait/hash_info/
@@ -0,0 +1,16 @@
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
+ # -------------------------------------------------------------------------