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.
- {mindstudio_probe-8.3.2.dist-info → mindstudio_probe-26.0.0a1.dist-info}/METADATA +26 -14
- mindstudio_probe-26.0.0a1.dist-info/RECORD +498 -0
- {mindstudio_probe-8.3.2.dist-info → mindstudio_probe-26.0.0a1.dist-info}/WHEEL +1 -1
- mindstudio_probe-26.0.0a1.dist-info/entry_points.txt +5 -0
- mindstudio_probe-26.0.0a1.dist-info/licenses/LICENSE +124 -0
- mindstudio_probe-26.0.0a1.dist-info/top_level.txt +2 -0
- msprobe/__init__.py +12 -13
- msprobe/config.json +9 -31
- msprobe/core/__init__.py +12 -11
- msprobe/core/acc_check/acc_check_cli.py +145 -0
- msprobe/core/common/const.py +97 -38
- msprobe/core/common/db_manager.py +133 -12
- msprobe/core/common/decorator.py +12 -11
- msprobe/core/common/exceptions.py +12 -11
- msprobe/core/common/file_utils.py +101 -25
- msprobe/core/common/framework_adapter.py +36 -25
- msprobe/core/common/global_lock.py +12 -11
- msprobe/core/common/inplace_op_checker.py +12 -11
- msprobe/core/common/log.py +22 -11
- msprobe/core/common/megatron_utils.py +566 -11
- msprobe/core/common/parallel_state.py +12 -11
- msprobe/core/common/runtime.py +12 -11
- msprobe/core/common/utils.py +41 -41
- msprobe/core/compare/acc_compare.py +361 -104
- msprobe/core/compare/atb_data_compare.py +422 -0
- msprobe/core/compare/auto_compare.py +134 -0
- msprobe/core/compare/check.py +14 -17
- msprobe/core/compare/compare_cli.py +72 -149
- msprobe/core/compare/config.py +12 -13
- msprobe/core/compare/diff_analyze/first_diff_analyze.py +28 -15
- msprobe/core/compare/diff_analyze/ignore_op_list.yaml +3 -0
- msprobe/core/compare/find_first/analyzer.py +18 -18
- msprobe/core/compare/find_first/graph.py +12 -11
- msprobe/core/compare/find_first/utils.py +13 -12
- msprobe/core/compare/indicator_analysis/__init__.py +15 -0
- msprobe/core/compare/indicator_analysis/algorithm.py +363 -0
- msprobe/core/compare/indicator_analysis/api_data.py +141 -0
- msprobe/core/compare/indicator_analysis/calculator.py +181 -0
- msprobe/core/compare/indicator_analysis/utils.py +116 -0
- msprobe/core/compare/layer_mapping/__init__.py +12 -11
- msprobe/core/compare/layer_mapping/data_scope_parser.py +20 -11
- msprobe/core/compare/layer_mapping/layer_mapping.py +14 -13
- msprobe/core/compare/layer_mapping/postprocess_pass.py +13 -11
- msprobe/core/compare/merge_result/merge_result.py +12 -11
- msprobe/core/compare/merge_result/merge_result_cli.py +12 -11
- msprobe/core/compare/merge_result/utils.py +12 -11
- msprobe/core/compare/multiprocessing_compute.py +13 -14
- msprobe/core/compare/npy_compare.py +13 -11
- msprobe/core/compare/offline_data_compare.py +160 -0
- msprobe/core/compare/stats_diff_calc.py +39 -0
- msprobe/core/compare/torchair_acc_cmp.py +764 -0
- msprobe/core/compare/torchair_cmp_utils.py +338 -0
- msprobe/core/compare/utils.py +140 -49
- msprobe/core/config_check/__init__.py +12 -11
- msprobe/core/config_check/checkers/__init__.py +12 -11
- msprobe/core/config_check/checkers/base_checker.py +15 -14
- msprobe/core/config_check/checkers/dataset_checker.py +13 -12
- msprobe/core/config_check/checkers/env_args_checker.py +13 -12
- msprobe/core/config_check/checkers/hyperparameter_checker.py +16 -15
- msprobe/core/config_check/checkers/pip_checker.py +15 -15
- msprobe/core/config_check/checkers/random_checker.py +13 -12
- msprobe/core/config_check/checkers/weights_checker.py +14 -12
- msprobe/core/config_check/ckpt_compare/ckpt_comparator.py +13 -17
- msprobe/core/config_check/ckpt_compare/megatron_loader.py +13 -12
- msprobe/core/config_check/ckpt_compare/metrics.py +12 -11
- msprobe/core/config_check/config_check_cli.py +18 -17
- msprobe/core/config_check/config_checker.py +16 -14
- msprobe/core/config_check/resource/dependency.yaml +15 -12
- msprobe/core/config_check/resource/env.yaml +12 -11
- msprobe/core/config_check/utils/hyperparameter_parser.py +12 -11
- msprobe/core/config_check/utils/utils.py +12 -11
- msprobe/core/{data_dump → dump/api_dump}/api_registry.py +12 -11
- msprobe/core/{common_config.py → dump/common_config.py} +13 -24
- msprobe/core/dump/data_dump/data_collector.py +257 -0
- msprobe/core/{data_dump → dump/data_dump}/data_processor/base.py +45 -36
- msprobe/core/{data_dump → dump/data_dump}/data_processor/factory.py +33 -25
- msprobe/core/{data_dump → dump/data_dump}/data_processor/mindspore_processor.py +37 -113
- msprobe/core/{data_dump → dump/data_dump}/data_processor/pytorch_processor.py +364 -131
- msprobe/core/{data_dump → dump/data_dump}/json_writer.py +24 -31
- msprobe/core/{data_dump → dump/data_dump}/scope.py +12 -13
- msprobe/core/{debugger → dump/debugger}/precision_debugger.py +15 -23
- msprobe/core/dump/dump2db/db_utils.py +215 -0
- msprobe/core/dump/dump2db/dump2db.py +409 -0
- msprobe/core/{hook_manager.py → dump/hook_manager.py} +38 -87
- msprobe/core/dump/kernel_dump/kernel_config.py +34 -0
- msprobe/core/{service.py → dump/service.py} +43 -27
- msprobe/core/install_deps/install_deps.py +51 -0
- msprobe/core/monitor/anomaly_processor.py +13 -11
- msprobe/core/monitor/csv2db.py +73 -93
- msprobe/core/monitor/db_utils.py +140 -205
- msprobe/core/monitor/utils.py +18 -17
- msprobe/core/monitor_v2/__init__.py +20 -0
- msprobe/core/monitor_v2/base.py +83 -0
- msprobe/core/monitor_v2/cc.py +287 -0
- msprobe/core/monitor_v2/factory.py +81 -0
- msprobe/core/monitor_v2/module.py +201 -0
- msprobe/core/monitor_v2/optimizer.py +245 -0
- msprobe/core/monitor_v2/param.py +154 -0
- msprobe/core/monitor_v2/trainer.py +326 -0
- msprobe/core/monitor_v2/utils.py +122 -0
- msprobe/core/monitor_v2/weight_grad.py +419 -0
- msprobe/core/monitor_v2/writer.py +162 -0
- msprobe/core/overflow_check/abnormal_scene.py +12 -11
- msprobe/core/overflow_check/api_info.py +12 -11
- msprobe/core/overflow_check/checker.py +12 -11
- msprobe/core/overflow_check/filter.py +13 -11
- msprobe/core/overflow_check/level.py +12 -11
- msprobe/core/overflow_check/utils.py +12 -11
- msprobe/core/single_save/single_comparator.py +12 -11
- msprobe/core/single_save/single_saver.py +12 -11
- msprobe/infer/__init__.py +16 -0
- msprobe/infer/offline/__init__.py +16 -0
- msprobe/infer/offline/compare/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/adapter_cli/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/adapter_cli/args_adapter.py +46 -0
- msprobe/infer/offline/compare/msquickcmp/atc/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/atc/atc_utils.py +98 -0
- msprobe/infer/offline/compare/msquickcmp/cmp_process.py +328 -0
- msprobe/infer/offline/compare/msquickcmp/common/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/common/args_check.py +112 -0
- msprobe/infer/offline/compare/msquickcmp/common/convert.py +74 -0
- msprobe/infer/offline/compare/msquickcmp/common/dump_data.py +121 -0
- msprobe/infer/offline/compare/msquickcmp/common/dynamic_argument_bean.py +39 -0
- msprobe/infer/offline/compare/msquickcmp/common/utils.py +669 -0
- msprobe/infer/offline/compare/msquickcmp/config.ini +6 -0
- msprobe/infer/offline/compare/msquickcmp/dump/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/dump/args_adapter.py +50 -0
- msprobe/infer/offline/compare/msquickcmp/dump/dump_process.py +91 -0
- msprobe/infer/offline/compare/msquickcmp/install_aclruntime_aisbench.sh +180 -0
- msprobe/infer/offline/compare/msquickcmp/main.py +199 -0
- msprobe/infer/offline/compare/msquickcmp/net_compare/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/net_compare/net_compare.py +277 -0
- msprobe/infer/offline/compare/msquickcmp/npu/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/npu/npu_dump_data.py +558 -0
- msprobe/infer/offline/compare/msquickcmp/npu/om_parser.py +416 -0
- msprobe/infer/offline/compare/msquickcmp/onnx_model/__init__.py +16 -0
- msprobe/infer/offline/compare/msquickcmp/onnx_model/onnx_dump_data.py +374 -0
- msprobe/infer/utils/__init__.py +15 -0
- msprobe/infer/utils/acc_cmp.py +94 -0
- msprobe/infer/utils/check/__init__.py +37 -0
- msprobe/infer/utils/check/args_checker.py +35 -0
- msprobe/infer/utils/check/checker.py +227 -0
- msprobe/infer/utils/check/dict_checker.py +78 -0
- msprobe/infer/utils/check/func_wrapper.py +96 -0
- msprobe/infer/utils/check/list_checker.py +56 -0
- msprobe/infer/utils/check/number_checker.py +64 -0
- msprobe/infer/utils/check/obj_checker.py +41 -0
- msprobe/infer/utils/check/path_checker.py +249 -0
- msprobe/infer/utils/check/rule.py +126 -0
- msprobe/infer/utils/check/string_checker.py +66 -0
- msprobe/infer/utils/cmp_algorithm.py +261 -0
- msprobe/infer/utils/constants.py +112 -0
- msprobe/infer/utils/file_open_check.py +337 -0
- msprobe/infer/utils/util.py +177 -0
- msprobe/mindspore/__init__.py +14 -13
- msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +14 -13
- msprobe/mindspore/api_accuracy_checker/api_info.py +12 -11
- msprobe/mindspore/api_accuracy_checker/api_runner.py +12 -11
- msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +12 -11
- msprobe/mindspore/api_accuracy_checker/bench_functions/flash_attention_score.py +12 -11
- msprobe/mindspore/api_accuracy_checker/bench_functions/fusion_operator.py +12 -11
- msprobe/mindspore/api_accuracy_checker/checker_support_api.yaml +12 -11
- msprobe/mindspore/api_accuracy_checker/cmd_parser.py +15 -14
- msprobe/mindspore/api_accuracy_checker/compute_element.py +12 -11
- msprobe/mindspore/api_accuracy_checker/data_manager.py +13 -11
- msprobe/mindspore/api_accuracy_checker/main.py +12 -11
- msprobe/mindspore/api_accuracy_checker/multi_api_accuracy_checker.py +14 -12
- msprobe/mindspore/api_accuracy_checker/multi_data_manager.py +13 -11
- msprobe/mindspore/api_accuracy_checker/torch_mindtorch_importer.py +12 -11
- msprobe/mindspore/api_accuracy_checker/type_mapping.py +12 -11
- msprobe/mindspore/api_accuracy_checker/utils.py +12 -11
- msprobe/mindspore/common/const.py +15 -74
- msprobe/mindspore/common/log.py +12 -11
- msprobe/mindspore/common/utils.py +30 -15
- msprobe/mindspore/compare/common_dir_compare.py +21 -23
- msprobe/mindspore/compare/distributed_compare.py +18 -16
- msprobe/mindspore/compare/ms_compare.py +14 -14
- msprobe/mindspore/compare/ms_graph_compare.py +26 -20
- msprobe/mindspore/compare/utils.py +14 -12
- msprobe/mindspore/{cell_processor.py → dump/cell_processor.py} +15 -14
- msprobe/mindspore/{debugger → dump/debugger}/debugger_config.py +12 -30
- msprobe/mindspore/{debugger → dump/debugger}/precision_debugger.py +43 -45
- msprobe/mindspore/dump/{cell_dump_process.py → dump_processor/cell_dump_process.py} +31 -17
- msprobe/mindspore/dump/{cell_dump_with_insert_gradient.py → dump_processor/cell_dump_with_insert_gradient.py} +18 -14
- msprobe/mindspore/dump/{dump_tool_factory.py → dump_processor/dump_tool_factory.py} +16 -15
- msprobe/mindspore/dump/{graph_mode_cell_dump.py → dump_processor/graph_mode_cell_dump.py} +16 -15
- msprobe/mindspore/dump/{graph_tensor_dump.py → dump_processor/graph_tensor_dump.py} +134 -133
- msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/api_register.py +15 -14
- msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/hook_cell.py +12 -11
- msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/ms_hook_manager.py +47 -20
- msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/primitive_hooks.py +14 -13
- msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/support_wrap_ops.yaml +13 -11
- msprobe/mindspore/dump/{jit_dump.py → dump_processor/jit_dump.py} +14 -13
- msprobe/mindspore/dump/{kernel_graph_dump.py → dump_processor/kernel_graph_dump.py} +13 -12
- msprobe/mindspore/dump/{kernel_kbyk_dump.py → dump_processor/kernel_kbyk_dump.py} +13 -12
- msprobe/mindspore/{exception_dump → dump/exception_dump}/exception_dump_tool_factory.py +14 -13
- msprobe/mindspore/{exception_dump → dump/exception_dump}/kernel_graph_exception_dump.py +13 -12
- msprobe/mindspore/{mindspore_service.py → dump/mindspore_service.py} +18 -17
- msprobe/mindspore/dump/mindtorch/__init__.py +19 -0
- msprobe/mindspore/dump/ms_config.py +105 -0
- msprobe/mindspore/{overflow_check → dump/overflow_check}/kernel_graph_overflow_check.py +13 -12
- msprobe/mindspore/{overflow_check → dump/overflow_check}/overflow_check_tool_factory.py +14 -13
- msprobe/mindspore/dump/task_handler_factory.py +43 -0
- msprobe/mindspore/monitor/common_func.py +12 -11
- msprobe/mindspore/monitor/data_writers.py +12 -11
- msprobe/mindspore/monitor/distributed/wrap_distributed.py +93 -39
- msprobe/mindspore/monitor/features.py +12 -11
- msprobe/mindspore/monitor/module_hook.py +19 -22
- msprobe/mindspore/monitor/optimizer_collect.py +29 -25
- msprobe/mindspore/monitor/utils.py +13 -11
- msprobe/msaccucmp/advisor/__init__.py +16 -0
- msprobe/msaccucmp/advisor/advisor_const.py +65 -0
- msprobe/msaccucmp/advisor/advisor_result.py +73 -0
- msprobe/msaccucmp/advisor/compare_advisor.py +99 -0
- msprobe/msaccucmp/advisor/input_advisor.py +66 -0
- msprobe/msaccucmp/advisor/node_advisor.py +68 -0
- msprobe/msaccucmp/advisor/overflow_advisor.py +58 -0
- msprobe/msaccucmp/algorithm_manager/__init__.py +16 -0
- msprobe/msaccucmp/algorithm_manager/algorithm_manager.py +464 -0
- msprobe/msaccucmp/algorithm_manager/algorithm_parameter.py +42 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_AccumulatedRelativeError.py +46 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_CosineSimilarity.py +58 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_KullbackLeiblerDivergence.py +84 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MaxAbsoluteError.py +41 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MaxRelativeError.py +46 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MeanAbsoluteError.py +41 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MeanRelativeError.py +46 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_RelativeEuclideanDistance.py +46 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_RootMeanSquareError.py +40 -0
- msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_StandardDeviation.py +47 -0
- msprobe/msaccucmp/cmp_utils/__init__.py +16 -0
- msprobe/msaccucmp/cmp_utils/common.py +113 -0
- msprobe/msaccucmp/cmp_utils/constant/__init__.py +16 -0
- msprobe/msaccucmp/cmp_utils/constant/compare_error.py +81 -0
- msprobe/msaccucmp/cmp_utils/constant/const_manager.py +530 -0
- msprobe/msaccucmp/cmp_utils/file_utils.py +497 -0
- msprobe/msaccucmp/cmp_utils/log.py +257 -0
- msprobe/msaccucmp/cmp_utils/multi_process/__init__.py +16 -0
- msprobe/msaccucmp/cmp_utils/multi_process/multi_convert_process.py +140 -0
- msprobe/msaccucmp/cmp_utils/multi_process/progress.py +78 -0
- msprobe/msaccucmp/cmp_utils/path_check.py +274 -0
- msprobe/msaccucmp/cmp_utils/reg_manager.py +98 -0
- msprobe/msaccucmp/cmp_utils/tlv_parse.py +279 -0
- msprobe/msaccucmp/cmp_utils/utils.py +356 -0
- msprobe/msaccucmp/cmp_utils/utils_type.py +63 -0
- msprobe/msaccucmp/compare_vector.py +48 -0
- msprobe/msaccucmp/conversion/__init__.py +16 -0
- msprobe/msaccucmp/conversion/data_conversion.py +277 -0
- msprobe/msaccucmp/conversion/dtype_conversion.py +99 -0
- msprobe/msaccucmp/conversion/shape_format_conversion.py +477 -0
- msprobe/msaccucmp/conversion/tensor_conversion.py +369 -0
- msprobe/msaccucmp/dump_data_conversion.py +46 -0
- msprobe/msaccucmp/dump_parse/__init__.py +16 -0
- msprobe/msaccucmp/dump_parse/big_dump_data.py +317 -0
- msprobe/msaccucmp/dump_parse/dump.py +423 -0
- msprobe/msaccucmp/dump_parse/dump_data_object.py +322 -0
- msprobe/msaccucmp/dump_parse/dump_data_parser.py +436 -0
- msprobe/msaccucmp/dump_parse/dump_utils.py +246 -0
- msprobe/msaccucmp/dump_parse/ffts_parser.py +137 -0
- msprobe/msaccucmp/dump_parse/mapping.py +62 -0
- msprobe/msaccucmp/dump_parse/nano_dump_data.py +392 -0
- msprobe/msaccucmp/dump_parse/proto_dump_data.py +308 -0
- msprobe/msaccucmp/dump_parser.py +90 -0
- msprobe/msaccucmp/format_manager/__init__.py +16 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_NCHW.py +53 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_ND.py +52 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_NHWC.py +53 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_Z_to_HWCN.py +47 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_Z_to_NCHW.py +47 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_FRACTAL_Z.py +89 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_NCHW.py +37 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_NHWC.py +37 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_HWCN.py +43 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_NCHW.py +48 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_NHWC.py +43 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NCHW_to_FRACTAL_Z.py +87 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NCHW_to_NHWC.py +37 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NDC1HWC0_to_NCDHW.py +48 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NDC1HWC0_to_ND.py +44 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_FRACTAL_Z.py +87 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_HWCN.py +37 -0
- msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_NCHW.py +37 -0
- msprobe/msaccucmp/format_manager/format_manager.py +307 -0
- msprobe/msaccucmp/inplace_layer_process.py +186 -0
- msprobe/msaccucmp/msaccucmp.py +532 -0
- msprobe/msaccucmp/mscmp_advisor.py +128 -0
- msprobe/msaccucmp/overflow/__init__.py +16 -0
- msprobe/msaccucmp/overflow/overflow_analyse.py +305 -0
- msprobe/msaccucmp/overflow/overflow_detection.py +143 -0
- msprobe/msaccucmp/pytorch_cmp/__init__.py +16 -0
- msprobe/msaccucmp/pytorch_cmp/compare_pytorch.py +389 -0
- msprobe/msaccucmp/pytorch_cmp/hdf5_parser.py +377 -0
- msprobe/msaccucmp/pytorch_cmp/pytorch_dump_data.py +461 -0
- msprobe/msaccucmp/shape_conversion.py +41 -0
- msprobe/msaccucmp/vector_cmp/__init__.py +16 -0
- msprobe/msaccucmp/vector_cmp/batch_compare.py +197 -0
- msprobe/msaccucmp/vector_cmp/compare_detail/__init__.py +16 -0
- msprobe/msaccucmp/vector_cmp/compare_detail/compare_detail.py +245 -0
- msprobe/msaccucmp/vector_cmp/compare_detail/detail.py +182 -0
- msprobe/msaccucmp/vector_cmp/compare_detail/detail_writer.py +580 -0
- msprobe/msaccucmp/vector_cmp/fusion_manager/__init__.py +16 -0
- msprobe/msaccucmp/vector_cmp/fusion_manager/compare_fusion_op.py +588 -0
- msprobe/msaccucmp/vector_cmp/fusion_manager/compare_npu_vs_npu.py +339 -0
- msprobe/msaccucmp/vector_cmp/fusion_manager/compare_result.py +326 -0
- msprobe/msaccucmp/vector_cmp/fusion_manager/compare_rule.py +156 -0
- msprobe/msaccucmp/vector_cmp/fusion_manager/fusion_op.py +204 -0
- msprobe/msaccucmp/vector_cmp/fusion_manager/fusion_rule_parser.py +635 -0
- msprobe/msaccucmp/vector_cmp/fusion_manager/quant_filter.py +187 -0
- msprobe/msaccucmp/vector_cmp/range_manager/__init__.py +16 -0
- msprobe/msaccucmp/vector_cmp/range_manager/range_manager.py +100 -0
- msprobe/msaccucmp/vector_cmp/range_manager/range_mode.py +94 -0
- msprobe/msaccucmp/vector_cmp/range_manager/select_mode.py +86 -0
- msprobe/msaccucmp/vector_cmp/vector_comparison.py +535 -0
- msprobe/msprobe.py +101 -130
- msprobe/overflow_check/__init__.py +15 -0
- msprobe/{nan_analyze → overflow_check}/analyzer.py +38 -27
- msprobe/{nan_analyze → overflow_check}/graph.py +30 -27
- msprobe/{nan_analyze → overflow_check}/utils.py +15 -14
- msprobe/pytorch/__init__.py +20 -14
- msprobe/pytorch/aclgraph_dump/__init__.py +45 -0
- msprobe/pytorch/aclgraph_dump/_meta.py +26 -0
- msprobe/pytorch/api_accuracy_checker/{run_ut/run_ut.py → acc_check/acc_check.py} +50 -45
- msprobe/pytorch/api_accuracy_checker/{run_ut/run_ut_utils.py → acc_check/acc_check_utils.py} +201 -30
- msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/data_generate.py +56 -16
- msprobe/pytorch/api_accuracy_checker/{run_ut/multi_run_ut.py → acc_check/multi_acc_check.py} +32 -47
- msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/run_overflow_check.py +19 -18
- msprobe/pytorch/api_accuracy_checker/common/config.py +22 -20
- msprobe/pytorch/api_accuracy_checker/common/utils.py +72 -13
- msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +41 -11
- msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +23 -14
- msprobe/pytorch/api_accuracy_checker/compare/compare.py +45 -32
- msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +12 -11
- msprobe/pytorch/api_accuracy_checker/compare/compare_input.py +14 -12
- msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +14 -12
- msprobe/pytorch/api_accuracy_checker/precision_standard/absolute_threshold.py +12 -11
- msprobe/pytorch/api_accuracy_checker/precision_standard/accumulative_error_compare.py +12 -11
- msprobe/pytorch/api_accuracy_checker/precision_standard/base_standard.py +21 -19
- msprobe/pytorch/api_accuracy_checker/precision_standard/benchmark_compare.py +14 -13
- msprobe/pytorch/api_accuracy_checker/precision_standard/binary_consistency.py +12 -11
- msprobe/pytorch/api_accuracy_checker/precision_standard/standard_config.py +60 -11
- msprobe/pytorch/api_accuracy_checker/precision_standard/standard_register.py +27 -16
- msprobe/pytorch/api_accuracy_checker/precision_standard/thousandth_standard.py +13 -11
- msprobe/pytorch/api_accuracy_checker/precision_standard/ulp_compare.py +39 -18
- msprobe/pytorch/bench_functions/__init__.py +12 -11
- msprobe/pytorch/bench_functions/apply_adam.py +12 -11
- msprobe/pytorch/bench_functions/apply_adam_w.py +12 -11
- msprobe/pytorch/bench_functions/confusion_transpose.py +12 -11
- msprobe/pytorch/bench_functions/fast_gelu.py +12 -11
- msprobe/pytorch/bench_functions/group_norm_silu.py +12 -11
- msprobe/pytorch/bench_functions/layer_norm_eval.py +12 -11
- msprobe/pytorch/bench_functions/linear.py +12 -11
- msprobe/pytorch/bench_functions/matmul_backward.py +12 -11
- msprobe/pytorch/bench_functions/mish.py +12 -11
- msprobe/pytorch/bench_functions/moe_gating_top_k_softmax.py +12 -11
- msprobe/pytorch/bench_functions/npu_fusion_attention.py +12 -11
- msprobe/pytorch/bench_functions/rms_norm.py +12 -11
- msprobe/pytorch/bench_functions/rotary_mul.py +12 -11
- msprobe/pytorch/bench_functions/scaled_mask_softmax.py +12 -11
- msprobe/pytorch/bench_functions/sort_v2.py +12 -11
- msprobe/pytorch/bench_functions/swiglu.py +12 -11
- msprobe/pytorch/common/__init__.py +12 -11
- msprobe/pytorch/common/log.py +12 -11
- msprobe/pytorch/common/parse_json.py +12 -11
- msprobe/pytorch/common/utils.py +52 -19
- msprobe/pytorch/compare/distributed_compare.py +13 -13
- msprobe/pytorch/compare/match.py +12 -11
- msprobe/pytorch/compare/pt_compare.py +14 -20
- msprobe/pytorch/compare/pt_diff_analyze.py +12 -11
- msprobe/pytorch/compare/utils.py +12 -11
- msprobe/pytorch/{hook_module → dump/api_dump}/api_register.py +18 -16
- msprobe/pytorch/{hook_module → dump/api_dump}/hook_module.py +14 -13
- msprobe/pytorch/{hook_module → dump/api_dump}/pt_hook_manager.py +68 -23
- msprobe/pytorch/{hook_module → dump/api_dump}/register_optimizer_hook.py +13 -11
- msprobe/pytorch/{hook_module → dump/api_dump}/script_wrapper.py +17 -14
- msprobe/pytorch/{hook_module → dump/api_dump}/utils.py +12 -11
- msprobe/pytorch/{debugger → dump/debugger}/debugger_config.py +23 -38
- msprobe/pytorch/dump/debugger/precision_debugger.py +130 -0
- msprobe/pytorch/{function_factory.py → dump/function_factory.py} +12 -11
- msprobe/pytorch/dump/module_dump/hook_wrapper.py +17 -13
- msprobe/pytorch/dump/module_dump/module_dump.py +16 -15
- msprobe/pytorch/dump/module_dump/{module_processer.py → module_processor.py} +54 -42
- msprobe/pytorch/dump/pt_config.py +128 -0
- msprobe/pytorch/{pytorch_service.py → dump/pytorch_service.py} +22 -21
- msprobe/pytorch/monitor/csv2tb.py +13 -11
- msprobe/pytorch/monitor/data_writers.py +13 -11
- msprobe/pytorch/monitor/distributed/wrap_distributed.py +13 -11
- msprobe/pytorch/monitor/features.py +12 -11
- msprobe/pytorch/monitor/module_hook.py +67 -59
- msprobe/pytorch/monitor/module_metric.py +13 -11
- msprobe/pytorch/monitor/optimizer_collect.py +37 -35
- msprobe/pytorch/monitor/utils.py +13 -11
- msprobe/pytorch/monitor/visualizer.py +12 -11
- msprobe/pytorch/torchair_dump/__init__.py +17 -0
- msprobe/pytorch/torchair_dump/torchair_dump.py +114 -0
- msprobe/scripts/atb/config_example.json +10 -0
- msprobe/scripts/atb/load_atb_probe.sh +101 -0
- msprobe/scripts/atb/unload_atb_probe.sh +27 -0
- msprobe/scripts/build_msaccucmp.sh +186 -0
- msprobe/scripts/conf/help.info +6 -0
- msprobe/scripts/conf/version.info +3 -0
- msprobe/scripts/run_script/common.sh +538 -0
- msprobe/scripts/run_script/main_msaccucmp.sh +232 -0
- msprobe/visualization/__init__.py +12 -11
- msprobe/visualization/builder/__init__.py +12 -11
- msprobe/visualization/builder/graph_builder.py +45 -30
- msprobe/visualization/builder/graph_merger.py +53 -32
- msprobe/visualization/builder/msprobe_adapter.py +34 -44
- msprobe/visualization/compare/__init__.py +12 -11
- msprobe/visualization/compare/graph_comparator.py +63 -51
- msprobe/visualization/compare/mode_adapter.py +28 -113
- msprobe/visualization/db_utils.py +133 -22
- msprobe/visualization/graph/__init__.py +12 -11
- msprobe/visualization/graph/base_node.py +15 -27
- msprobe/visualization/graph/distributed_analyzer.py +97 -40
- msprobe/visualization/graph/graph.py +14 -16
- msprobe/visualization/graph/node_colors.py +34 -31
- msprobe/visualization/graph/node_op.py +12 -11
- msprobe/visualization/graph_service.py +580 -205
- msprobe/visualization/utils.py +278 -31
- tb_graph_ascend/secure_build.py +175 -0
- tb_graph_ascend/server/__init__.py +15 -0
- tb_graph_ascend/server/app/__init__.py +15 -0
- tb_graph_ascend/server/app/model/__init__.py +15 -0
- tb_graph_ascend/server/app/model/hierarchy.py +348 -0
- tb_graph_ascend/server/app/model/layout_hierarchy_model.py +69 -0
- tb_graph_ascend/server/app/model/match_nodes_model.py +573 -0
- tb_graph_ascend/server/app/repositories/__init__.py +15 -0
- tb_graph_ascend/server/app/repositories/graph_repo_base.py +32 -0
- tb_graph_ascend/server/app/repositories/graph_repo_db.py +879 -0
- tb_graph_ascend/server/app/repositories/graph_repo_vis.py +83 -0
- tb_graph_ascend/server/app/service/__init__.py +18 -0
- tb_graph_ascend/server/app/service/graph_service_base.py +158 -0
- tb_graph_ascend/server/app/service/graph_service_db.py +438 -0
- tb_graph_ascend/server/app/service/graph_service_factory.py +54 -0
- tb_graph_ascend/server/app/service/graph_service_vis.py +480 -0
- tb_graph_ascend/server/app/utils/__init__.py +15 -0
- tb_graph_ascend/server/app/utils/constant.py +80 -0
- tb_graph_ascend/server/app/utils/file_check_wrapper.py +46 -0
- tb_graph_ascend/server/app/utils/global_state.py +95 -0
- tb_graph_ascend/server/app/utils/graph_utils.py +661 -0
- tb_graph_ascend/server/app/utils/i18n.py +153 -0
- tb_graph_ascend/server/app/utils/request_method.py +46 -0
- tb_graph_ascend/server/app/views/__init__.py +15 -0
- tb_graph_ascend/server/app/views/graph_views.py +304 -0
- tb_graph_ascend/server/plugin.py +108 -0
- tb_graph_ascend/server/static/index.html +9250 -0
- tb_graph_ascend/server/static/index.js +21 -0
- tb_graph_ascend/setup.py +57 -0
- mindstudio_probe-8.3.2.dist-info/LICENSE +0 -201
- mindstudio_probe-8.3.2.dist-info/RECORD +0 -491
- mindstudio_probe-8.3.2.dist-info/entry_points.txt +0 -2
- mindstudio_probe-8.3.2.dist-info/top_level.txt +0 -1
- msprobe/CMakeLists.txt +0 -5
- msprobe/README.md +0 -203
- msprobe/core/advisor/advisor.py +0 -129
- msprobe/core/advisor/advisor_const.py +0 -58
- msprobe/core/advisor/advisor_result.py +0 -58
- msprobe/core/compare/find_first/data_processor.py +0 -35
- msprobe/core/compare/highlight.py +0 -390
- msprobe/core/data_dump/data_collector.py +0 -356
- msprobe/core/grad_probe/constant.py +0 -90
- msprobe/core/grad_probe/grad_compare.py +0 -187
- msprobe/core/grad_probe/utils.py +0 -105
- msprobe/core/kernel_dump/kernel_config.py +0 -33
- msprobe/docs/01.installation.md +0 -250
- msprobe/docs/02.config_introduction.md +0 -221
- msprobe/docs/03.config_examples.md +0 -281
- msprobe/docs/04.kernel_dump_PyTorch.md +0 -73
- msprobe/docs/05.data_dump_PyTorch.md +0 -518
- msprobe/docs/06.data_dump_MindSpore.md +0 -618
- msprobe/docs/07.accuracy_checker_PyTorch.md +0 -310
- msprobe/docs/09.accuracy_checker_MindSpore.md +0 -120
- msprobe/docs/10.accuracy_compare_PyTorch.md +0 -637
- msprobe/docs/11.accuracy_compare_MindSpore.md +0 -769
- msprobe/docs/12.overflow_check_PyTorch.md +0 -82
- msprobe/docs/13.overflow_check_MindSpore.md +0 -33
- msprobe/docs/14.data_parse_PyTorch.md +0 -282
- msprobe/docs/15.free_benchmarking_PyTorch.md +0 -169
- msprobe/docs/16.free_benchmarking_MindSpore.md +0 -159
- msprobe/docs/17.grad_probe.md +0 -205
- msprobe/docs/18.online_dispatch.md +0 -89
- msprobe/docs/19.monitor.md +0 -753
- msprobe/docs/20.monitor_performance_baseline.md +0 -52
- msprobe/docs/21.visualization_PyTorch.md +0 -519
- msprobe/docs/22.visualization_MindSpore.md +0 -515
- msprobe/docs/23.generate_operator_PyTorch.md +0 -107
- msprobe/docs/24.code_mapping_Mindspore.md +0 -29
- msprobe/docs/25.tool_function_introduction.md +0 -29
- msprobe/docs/26.data_dump_PyTorch_baseline.md +0 -48
- msprobe/docs/27.dump_json_instruction.md +0 -795
- msprobe/docs/28.debugger_save_instruction.md +0 -288
- msprobe/docs/28.kernel_dump_MindSpore.md +0 -69
- msprobe/docs/29.data_dump_MSAdapter.md +0 -235
- msprobe/docs/30.overflow_check_MSAdapter.md +0 -31
- msprobe/docs/31.config_check.md +0 -107
- msprobe/docs/32.ckpt_compare.md +0 -69
- msprobe/docs/33.generate_operator_MindSpore.md +0 -181
- msprobe/docs/34.RL_collect.md +0 -101
- msprobe/docs/35.nan_analyze.md +0 -73
- msprobe/docs/36.calculation_result_change.md +0 -75
- msprobe/docs/FAQ.md +0 -232
- msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +0 -146
- msprobe/docs/accuracy_checker_MindSpore/accuracy_checker_MindSpore_baseline.md +0 -14
- msprobe/docs/data_dump_MindSpore/data_dump_MindSpore_baseline.md +0 -33
- msprobe/docs/data_dump_MindSpore/dynamic_graph_quick_start_example.md +0 -217
- msprobe/docs/img/BLOOM-7B_1.png +0 -0
- msprobe/docs/img/BLOOM-7B_2.png +0 -0
- msprobe/docs/img/BLOOM-7B_3.png +0 -0
- msprobe/docs/img/BLOOM-7B_4.png +0 -0
- msprobe/docs/img/GPT-3_1.png +0 -0
- msprobe/docs/img/GPT-3_2.png +0 -0
- msprobe/docs/img/GPT-3_3.png +0 -0
- msprobe/docs/img/GPT-3_4.png +0 -0
- msprobe/docs/img/GPT-3_5.png +0 -0
- msprobe/docs/img/GPT-3_6.png +0 -0
- msprobe/docs/img/GPT-3_7.png +0 -0
- msprobe/docs/img/GPT-3_8.png +0 -0
- msprobe/docs/img/YOLOV5S_1.png +0 -0
- msprobe/docs/img/YOLOV5S_2.png +0 -0
- msprobe/docs/img/accuracy_checking_details.png +0 -0
- msprobe/docs/img/accuracy_checking_result.png +0 -0
- msprobe/docs/img/api_precision_compare_details.png +0 -0
- msprobe/docs/img/api_precision_compare_result.png +0 -0
- msprobe/docs/img/auto_analyze_log.png +0 -0
- msprobe/docs/img/compare_result.png +0 -0
- msprobe/docs/img/compare_result_pkl.png +0 -0
- msprobe/docs/img/compare_result_pkl_md5.png.png +0 -0
- msprobe/docs/img/cpu_info.png +0 -0
- msprobe/docs/img/free_benchmark.png +0 -0
- msprobe/docs/img/free_benchmark_framework.png +0 -0
- msprobe/docs/img/grad_probe_image-1.png +0 -0
- msprobe/docs/img/grad_probe_image-2.png +0 -0
- msprobe/docs/img/grad_probe_image-3.png +0 -0
- msprobe/docs/img/grad_probe_image-4.png +0 -0
- msprobe/docs/img/grad_probe_image.png +0 -0
- msprobe/docs/img/merge_result.png +0 -0
- msprobe/docs/img/module_compare.png +0 -0
- msprobe/docs/img/monitor/cpu_info.png +0 -0
- msprobe/docs/img/monitor/step_count_per_record.png +0 -0
- msprobe/docs/img/ms_dump.png +0 -0
- msprobe/docs/img/ms_layer.png +0 -0
- msprobe/docs/img/pt_dump.png +0 -0
- msprobe/docs/img/save_compare_result_sample.png +0 -0
- msprobe/docs/img/visualization/fuzzy_match_ms.png +0 -0
- msprobe/docs/img/visualization/fuzzy_match_pt.png +0 -0
- msprobe/docs/img/visualization/proxy.png +0 -0
- msprobe/docs/img/visualization/tensorboard_1.png +0 -0
- msprobe/docs/img/visualization/tensorboard_2.png +0 -0
- msprobe/docs/img/visualization/vis_browser_1.png +0 -0
- msprobe/docs/img/visualization/vis_browser_2.png +0 -0
- msprobe/docs/img/visualization/vis_match_info.png +0 -0
- msprobe/docs/img/visualization/vis_precision_info.png +0 -0
- msprobe/docs/img/visualization/vis_search_info.png +0 -0
- msprobe/docs/img/visualization/vis_show_info.png +0 -0
- msprobe/docs/img/visualization/vis_showcase.png +0 -0
- msprobe/docs/img/visualization/vis_unmatch_info.png +0 -0
- msprobe/docs/visualization/GPTModel.png +0 -0
- msprobe/docs/visualization/ParallelMLP.png +0 -0
- msprobe/docs/visualization/layer_mapping_example.md +0 -132
- msprobe/docs/visualization/mapping.png +0 -0
- msprobe/docs/visualization/mapping1.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/1.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/2.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/3.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/4.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/5.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/6.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/7.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory-qwen25vl.txt +0 -59
- msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory1.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory2.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed-mm-qwen25vl.txt +0 -80
- msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed1.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed2.png +0 -0
- msprobe/docs/visualization/mindspeed_llamafactory_mapping.md +0 -330
- msprobe/docs/visualization/module_name.png +0 -0
- msprobe/docs/visualization/module_name1.png +0 -0
- msprobe/docs/visualization/no_mapping.png +0 -0
- msprobe/docs/visualization/no_mapping1.png +0 -0
- msprobe/docs/visualization/no_mapping_analyze.png +0 -0
- msprobe/docs/visualization/top_layer.png +0 -0
- msprobe/mindspore/api_accuracy_checker/generate_op_script/op_generator.py +0 -460
- msprobe/mindspore/api_accuracy_checker/generate_op_script/operator_replication.template +0 -2081
- msprobe/mindspore/code_mapping/bind.py +0 -283
- msprobe/mindspore/code_mapping/cmd_parser.py +0 -40
- msprobe/mindspore/code_mapping/graph.py +0 -49
- msprobe/mindspore/code_mapping/graph_parser.py +0 -211
- msprobe/mindspore/code_mapping/main.py +0 -24
- msprobe/mindspore/code_mapping/processor.py +0 -34
- msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp +0 -111
- msprobe/mindspore/dym_loader/hook_dynamic_loader.h +0 -52
- msprobe/mindspore/free_benchmark/api_pynative_self_check.py +0 -257
- msprobe/mindspore/free_benchmark/common/config.py +0 -27
- msprobe/mindspore/free_benchmark/common/handler_params.py +0 -31
- msprobe/mindspore/free_benchmark/common/utils.py +0 -100
- msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +0 -638
- msprobe/mindspore/free_benchmark/handler/base_handler.py +0 -105
- msprobe/mindspore/free_benchmark/handler/check_handler.py +0 -55
- msprobe/mindspore/free_benchmark/handler/fix_handler.py +0 -51
- msprobe/mindspore/free_benchmark/handler/handler_factory.py +0 -36
- msprobe/mindspore/free_benchmark/perturbation/add_noise.py +0 -82
- msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +0 -45
- msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +0 -78
- msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +0 -77
- msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +0 -56
- msprobe/mindspore/free_benchmark/perturbation/no_change.py +0 -27
- msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +0 -46
- msprobe/mindspore/free_benchmark/self_check_tool_factory.py +0 -51
- msprobe/mindspore/grad_probe/global_context.py +0 -127
- msprobe/mindspore/grad_probe/grad_analyzer.py +0 -260
- msprobe/mindspore/grad_probe/grad_monitor.py +0 -42
- msprobe/mindspore/grad_probe/grad_stat_csv.py +0 -161
- msprobe/mindspore/grad_probe/hook.py +0 -115
- msprobe/mindspore/grad_probe/utils.py +0 -43
- msprobe/mindspore/mindtorch/__init__.py +0 -18
- msprobe/mindspore/ms_config.py +0 -153
- msprobe/mindspore/task_handler_factory.py +0 -44
- msprobe/nan_analyze/__init__.py +0 -14
- msprobe/pytorch/api_accuracy_checker/generate_op_script/config_op.json +0 -9
- msprobe/pytorch/api_accuracy_checker/generate_op_script/op_generator.py +0 -480
- msprobe/pytorch/api_accuracy_checker/generate_op_script/operator_replication.template +0 -567
- msprobe/pytorch/debugger/precision_debugger.py +0 -181
- msprobe/pytorch/free_benchmark/__init__.py +0 -23
- msprobe/pytorch/free_benchmark/common/constant.py +0 -85
- msprobe/pytorch/free_benchmark/common/counter.py +0 -87
- msprobe/pytorch/free_benchmark/common/enums.py +0 -80
- msprobe/pytorch/free_benchmark/common/params.py +0 -152
- msprobe/pytorch/free_benchmark/common/utils.py +0 -143
- msprobe/pytorch/free_benchmark/compare/grad_saver.py +0 -215
- msprobe/pytorch/free_benchmark/compare/single_benchmark.py +0 -121
- msprobe/pytorch/free_benchmark/main.py +0 -123
- msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +0 -28
- msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +0 -56
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +0 -107
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +0 -121
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +0 -89
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +0 -87
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +0 -43
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +0 -60
- msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +0 -34
- msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +0 -252
- msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +0 -54
- msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +0 -40
- msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +0 -45
- msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +0 -181
- msprobe/pytorch/grad_probe/__init__.py +0 -0
- msprobe/pytorch/grad_probe/grad_monitor.py +0 -108
- msprobe/pytorch/grad_probe/grad_stat_csv.py +0 -160
- msprobe/pytorch/hook_module/__init__.py +0 -16
- msprobe/pytorch/hook_module/wrap_aten.py +0 -111
- msprobe/pytorch/online_dispatch/__init__.py +0 -19
- msprobe/pytorch/online_dispatch/compare.py +0 -224
- msprobe/pytorch/online_dispatch/dispatch.py +0 -332
- msprobe/pytorch/online_dispatch/dump_compare.py +0 -179
- msprobe/pytorch/online_dispatch/single_compare.py +0 -412
- msprobe/pytorch/online_dispatch/torch_ops_config.yaml +0 -58
- msprobe/pytorch/online_dispatch/utils.py +0 -158
- msprobe/pytorch/parse_tool/__init__.py +0 -0
- msprobe/pytorch/parse_tool/cli.py +0 -31
- msprobe/pytorch/parse_tool/lib/__init__.py +0 -0
- msprobe/pytorch/parse_tool/lib/compare.py +0 -253
- msprobe/pytorch/parse_tool/lib/config.py +0 -50
- msprobe/pytorch/parse_tool/lib/file_desc.py +0 -45
- msprobe/pytorch/parse_tool/lib/interactive_cli.py +0 -97
- msprobe/pytorch/parse_tool/lib/parse_exception.py +0 -54
- msprobe/pytorch/parse_tool/lib/parse_tool.py +0 -161
- msprobe/pytorch/parse_tool/lib/utils.py +0 -299
- msprobe/pytorch/parse_tool/lib/visualization.py +0 -85
- msprobe/pytorch/pt_config.py +0 -299
- /msprobe/core/{grad_probe → dump}/__init__.py +0 -0
- /msprobe/{mindspore/code_mapping → core/dump/api_dump}/__init__.py +0 -0
- /msprobe/{mindspore/debugger → core/dump/data_dump}/__init__.py +0 -0
- /msprobe/{mindspore/exception_dump → core/dump/data_dump/data_processor}/__init__.py +0 -0
- /msprobe/{mindspore/free_benchmark → core/dump/debugger}/__init__.py +0 -0
- /msprobe/{mindspore/free_benchmark/common → core/dump/kernel_dump}/__init__.py +0 -0
- /msprobe/mindspore/{free_benchmark/handler → dump/debugger}/__init__.py +0 -0
- /msprobe/mindspore/{grad_probe → dump/dump_processor}/__init__.py +0 -0
- /msprobe/mindspore/{overflow_check → dump/exception_dump}/__init__.py +0 -0
- /msprobe/mindspore/{mindtorch → dump/mindtorch}/mindtorch_adaptor.py +0 -0
- /msprobe/{pytorch/api_accuracy_checker/run_ut → mindspore/dump/overflow_check}/__init__.py +0 -0
- /msprobe/{pytorch/debugger → mindspore/monitor}/__init__.py +0 -0
- /msprobe/{pytorch/free_benchmark/common → msaccucmp}/__init__.py +0 -0
- /msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/.keep +0 -0
- /msprobe/pytorch/{free_benchmark/perturbed_layers → api_accuracy_checker/acc_check}/__init__.py +0 -0
- /msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/torch_ut_setting.json +0 -0
- /msprobe/pytorch/{free_benchmark/perturbed_layers/npu → dump/api_dump}/__init__.py +0 -0
- /msprobe/pytorch/{hook_module → dump/api_dump}/support_wrap_ops.yaml +0 -0
- /msprobe/pytorch/{free_benchmark/result_handlers → dump/debugger}/__init__.py +0 -0
|
@@ -0,0 +1,464 @@
|
|
|
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
|
+
AlgorithmManager class.
|
|
21
|
+
This class mainly involves the compare function.
|
|
22
|
+
"""
|
|
23
|
+
import os
|
|
24
|
+
import re
|
|
25
|
+
import sys
|
|
26
|
+
import time
|
|
27
|
+
import stat
|
|
28
|
+
import importlib
|
|
29
|
+
|
|
30
|
+
import numpy as np
|
|
31
|
+
|
|
32
|
+
from msprobe.msaccucmp.cmp_utils import log, utils_type
|
|
33
|
+
from msprobe.msaccucmp.cmp_utils import utils, path_check
|
|
34
|
+
from msprobe.msaccucmp.algorithm_manager.algorithm_parameter import AlgorithmParameter
|
|
35
|
+
from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
|
|
36
|
+
from msprobe.msaccucmp.cmp_utils.reg_manager import RegManager
|
|
37
|
+
from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
|
|
38
|
+
from msprobe.msaccucmp.cmp_utils.file_utils import FileUtils
|
|
39
|
+
from msprobe.msaccucmp.dump_parse import dump_utils
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class AlgorithmManager:
|
|
43
|
+
"""
|
|
44
|
+
The class for algorithm manager
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
def __init__(self: any, custom_script_path: str, select_algorithm: object, algorithm_options: str) -> None:
|
|
48
|
+
self.custom_path = custom_script_path
|
|
49
|
+
self.built_in_support_algorithm = []
|
|
50
|
+
self.custom_support_algorithm = []
|
|
51
|
+
self._make_support_algorithm()
|
|
52
|
+
self.select_algorithm_list = self._parse_selection_algorithm(select_algorithm)
|
|
53
|
+
self.algorithm_param = self._parse_algorithm_argument(algorithm_options)
|
|
54
|
+
self.support_algorithm_map = self._make_select_algorithm_map()
|
|
55
|
+
|
|
56
|
+
@staticmethod
|
|
57
|
+
def _check_value_invalid(value: object, parameter: str) -> None:
|
|
58
|
+
is_list_value_invalid = isinstance(value, list) and len(value) != 2
|
|
59
|
+
if not value or is_list_value_invalid:
|
|
60
|
+
log.print_error_log('The algorithm argument (%r) is invalid, just supports '
|
|
61
|
+
'"algorithm_name:name1=value1,name2=value2;".' % parameter)
|
|
62
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
|
|
63
|
+
|
|
64
|
+
@staticmethod
|
|
65
|
+
def _update_algorithm_param(algorithm_name: str, algorithm_param: dict, param_map: dict) -> None:
|
|
66
|
+
if RegManager.match_pattern(RegManager.BUILTIN_ALGORITHM_INDEX_PATTERN, algorithm_name):
|
|
67
|
+
algorithm_name = ConstManager.BUILT_IN_ALGORITHM[int(algorithm_name)]
|
|
68
|
+
if algorithm_name in algorithm_param:
|
|
69
|
+
algorithm_param[algorithm_name] = dict(algorithm_param.get(algorithm_name), **param_map)
|
|
70
|
+
else:
|
|
71
|
+
algorithm_param[algorithm_name] = param_map
|
|
72
|
+
|
|
73
|
+
@staticmethod
|
|
74
|
+
def _get_function(algorithm_module: any, module_type: str) -> (bool, any):
|
|
75
|
+
algorithm_func = getattr(algorithm_module, ConstManager.COMPARE_FUNC_NAME)
|
|
76
|
+
# check compare is function
|
|
77
|
+
if not callable(algorithm_func):
|
|
78
|
+
log.print_warn_log("[%s] The '%s' in %s is not function. Please check the file." %
|
|
79
|
+
(module_type, ConstManager.COMPARE_FUNC_NAME, str(algorithm_module.__file__)))
|
|
80
|
+
return False, ''
|
|
81
|
+
|
|
82
|
+
# check argument count of compare
|
|
83
|
+
if algorithm_func.__code__.co_argcount != ConstManager.COMPARE_ARGUMENT_COUNT:
|
|
84
|
+
log.print_warn_log("[%s] The argument count (%d) of '%s' in %s is not %d. Please check the file." %
|
|
85
|
+
(module_type, algorithm_func.__code__.co_argcount, ConstManager.COMPARE_FUNC_NAME,
|
|
86
|
+
str(algorithm_module.__file__), ConstManager.COMPARE_ARGUMENT_COUNT))
|
|
87
|
+
return False, ''
|
|
88
|
+
return True, algorithm_func
|
|
89
|
+
|
|
90
|
+
@staticmethod
|
|
91
|
+
def _add_algorithm_file_to_list(file_path: str, support_algorithm_list: list) -> bool:
|
|
92
|
+
if os.path.isfile(file_path):
|
|
93
|
+
file_name_pattern = re.compile(ConstManager.ALGORITHM_FILE_NAME_PATTERN)
|
|
94
|
+
match = file_name_pattern.match(os.path.basename(file_path))
|
|
95
|
+
if match is not None:
|
|
96
|
+
file_stat = os.stat(file_path)
|
|
97
|
+
file_mode = file_stat.st_mode
|
|
98
|
+
# 判断others或group权限是否有写权限
|
|
99
|
+
if bool(file_mode & stat.S_IWGRP):
|
|
100
|
+
log.print_warn_log(f"File {file_path} is not safe. Groups have writing permission to this file.")
|
|
101
|
+
if bool(file_mode & stat.S_IWOTH):
|
|
102
|
+
log.print_error_log(f"File {file_path} is dangerous. Others have writing "
|
|
103
|
+
"permission to this file. Please use chmod to dismiss the writing permission.")
|
|
104
|
+
raise CompareError(CompareError.MSACCUCMP_DANGER_FILE_ERROR)
|
|
105
|
+
support_algorithm_list.append(match.group(1))
|
|
106
|
+
current_uid = os.getuid()
|
|
107
|
+
# 判断当前用户是普通用户情况下,文件创建者是否是当前用户
|
|
108
|
+
if current_uid != 0 and file_stat.st_uid != 0 and file_stat.st_uid != current_uid:
|
|
109
|
+
log.print_error_log(f"File {file_path} is not owned by current user, "
|
|
110
|
+
"if must use this file, copy or chmod this file by yourself.")
|
|
111
|
+
raise CompareError(CompareError.MSACCUCMP_DANGER_FILE_ERROR)
|
|
112
|
+
return True
|
|
113
|
+
log.print_warn_log("The file '%r' does not match 'alg_{algorithm_name}.py'"
|
|
114
|
+
" in '%r', please check the file." % (os.path.basename(file_path),
|
|
115
|
+
os.path.dirname(file_path)))
|
|
116
|
+
return False
|
|
117
|
+
|
|
118
|
+
@staticmethod
|
|
119
|
+
def _check_data_size_valid(my_output_dump_data: any, ground_truth_dump_data: any, args: dict) -> None:
|
|
120
|
+
my_output_dump_data_size = len(my_output_dump_data)
|
|
121
|
+
if my_output_dump_data_size == 0 and args.get('my_output_dump_file') is not None:
|
|
122
|
+
msg = 'The dump data size is 0 in %r.' % args.get('my_output_dump_file')
|
|
123
|
+
log.print_warn_log(msg)
|
|
124
|
+
ground_truth_dump_data_size = len(ground_truth_dump_data)
|
|
125
|
+
if ground_truth_dump_data_size == 0 and args.get('ground_truth_dump_file') is not None:
|
|
126
|
+
msg = 'The dump data size is 0 in %r.' % args.get('ground_truth_dump_file')
|
|
127
|
+
log.print_warn_log(msg)
|
|
128
|
+
|
|
129
|
+
if my_output_dump_data_size != ground_truth_dump_data_size \
|
|
130
|
+
and args.get('my_output_dump_file') is not None \
|
|
131
|
+
and args.get('ground_truth_dump_file') is not None:
|
|
132
|
+
msg = "The my output dump data size (%d) in '%r' does not match the ground truth dump data size (%d) " \
|
|
133
|
+
"in '%r'." % (my_output_dump_data_size, args.get('my_output_dump_file'),
|
|
134
|
+
ground_truth_dump_data_size, args.get('ground_truth_dump_file'))
|
|
135
|
+
log.print_warn_log(msg)
|
|
136
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR, msg)
|
|
137
|
+
|
|
138
|
+
@staticmethod
|
|
139
|
+
def _check_return_value_valid(value: object, select_algorithm: str) -> None:
|
|
140
|
+
# check the return value is string
|
|
141
|
+
if not isinstance(value, str):
|
|
142
|
+
err_msg = "The return value (%s) of '%s' in '%s' is not string. Please check the return value." \
|
|
143
|
+
% (value, ConstManager.COMPARE_FUNC_NAME, select_algorithm)
|
|
144
|
+
raise CompareError(ConstManager.COMPARE_FUNC_NAME, err_msg)
|
|
145
|
+
|
|
146
|
+
def compare(self: any, my_output_dump_data: any, ground_truth_dump_data: any,
|
|
147
|
+
args: dict, max_cmp_size: int = 0) -> (list, list):
|
|
148
|
+
"""
|
|
149
|
+
Compare my output dump data and the ground truth dump data by select algorithm
|
|
150
|
+
:param my_output_dump_data: my output dump data to compare
|
|
151
|
+
:param ground_truth_dump_data: the ground truth dump data to compare
|
|
152
|
+
:param args: the algorithm parameter
|
|
153
|
+
:param max_cmp_size: max cmp array size
|
|
154
|
+
:return the result list and compare_fail_message
|
|
155
|
+
"""
|
|
156
|
+
self._check_data_size_valid(my_output_dump_data, ground_truth_dump_data, args)
|
|
157
|
+
np.seterr(divide='ignore', invalid='ignore')
|
|
158
|
+
result = []
|
|
159
|
+
error_msg = []
|
|
160
|
+
|
|
161
|
+
is_bool_data = my_output_dump_data.dtype == np.bool_ and ground_truth_dump_data.dtype == np.bool_
|
|
162
|
+
if max_cmp_size:
|
|
163
|
+
my_output_dump_data_to_cmp = my_output_dump_data[:max_cmp_size]
|
|
164
|
+
ground_truth_dump_data_to_cmp = ground_truth_dump_data[:max_cmp_size]
|
|
165
|
+
else:
|
|
166
|
+
my_output_dump_data_to_cmp = my_output_dump_data
|
|
167
|
+
ground_truth_dump_data_to_cmp = ground_truth_dump_data
|
|
168
|
+
|
|
169
|
+
if not is_bool_data:
|
|
170
|
+
my_output_dump_data_to_cmp = np.array(my_output_dump_data_to_cmp).astype("float32")
|
|
171
|
+
ground_truth_dump_data_to_cmp = np.array(ground_truth_dump_data_to_cmp).astype("float32")
|
|
172
|
+
|
|
173
|
+
for select_algorithm, compare_func in self.support_algorithm_map.items():
|
|
174
|
+
if is_bool_data and select_algorithm not in ConstManager.BOOL_ALGORITHM:
|
|
175
|
+
result.append(ConstManager.NAN)
|
|
176
|
+
error_msg += ["Algorithm %s does not support Boolean types." % select_algorithm]
|
|
177
|
+
continue
|
|
178
|
+
|
|
179
|
+
alg_args = self._make_algorithm_param(select_algorithm, args)
|
|
180
|
+
|
|
181
|
+
# call compare function
|
|
182
|
+
alg_result, alg_error_msg = self._call_compare_function(
|
|
183
|
+
compare_func, my_output_dump_data_to_cmp, ground_truth_dump_data_to_cmp, alg_args, select_algorithm)
|
|
184
|
+
result.append(alg_result)
|
|
185
|
+
if alg_error_msg:
|
|
186
|
+
error_msg += [alg_error_msg]
|
|
187
|
+
return result, error_msg
|
|
188
|
+
|
|
189
|
+
def get_result_title(self: any) -> list:
|
|
190
|
+
"""
|
|
191
|
+
Get algorithm name list
|
|
192
|
+
:return: the list
|
|
193
|
+
"""
|
|
194
|
+
return list(self.support_algorithm_map.keys())
|
|
195
|
+
|
|
196
|
+
def make_nan_result(self: any) -> list:
|
|
197
|
+
"""
|
|
198
|
+
Make nan result for compare algorithm
|
|
199
|
+
:return: the list, result is nan
|
|
200
|
+
"""
|
|
201
|
+
return [ConstManager.NAN] * len(self.support_algorithm_map)
|
|
202
|
+
|
|
203
|
+
def _add_algorithm_name_to_list(self: any, algorithm_name: str, select_algorithm_list: list) -> None:
|
|
204
|
+
if not algorithm_name:
|
|
205
|
+
return
|
|
206
|
+
if RegManager.match_pattern(RegManager.BUILTIN_ALGORITHM_INDEX_PATTERN, algorithm_name):
|
|
207
|
+
if ConstManager.BUILT_IN_ALGORITHM[int(algorithm_name)] not in select_algorithm_list:
|
|
208
|
+
select_algorithm_list.append(ConstManager.BUILT_IN_ALGORITHM[int(algorithm_name)])
|
|
209
|
+
return
|
|
210
|
+
if algorithm_name not in self.built_in_support_algorithm + self.custom_support_algorithm:
|
|
211
|
+
log.print_warn_log("The '%s' does not supported in builtin or custom. Please check the "
|
|
212
|
+
"algorithm name or algorithm index." % algorithm_name)
|
|
213
|
+
return
|
|
214
|
+
if algorithm_name not in select_algorithm_list:
|
|
215
|
+
select_algorithm_list.append(algorithm_name)
|
|
216
|
+
|
|
217
|
+
def _make_all_algorithm_list(self: any, select_algorithm: str) -> list:
|
|
218
|
+
select_algorithm_list = []
|
|
219
|
+
if select_algorithm.lower() == 'all':
|
|
220
|
+
select_algorithm_list = ConstManager.BUILT_IN_ALGORITHM
|
|
221
|
+
for item in self.custom_support_algorithm:
|
|
222
|
+
if item not in self.custom_support_algorithm:
|
|
223
|
+
select_algorithm_list.append(item)
|
|
224
|
+
return select_algorithm_list
|
|
225
|
+
return select_algorithm_list
|
|
226
|
+
|
|
227
|
+
def _parse_selection_algorithm(self: any, select_algorithm: object) -> list:
|
|
228
|
+
if not select_algorithm:
|
|
229
|
+
log.print_error_log('There is no algorithm to select. Please select at least one algorithm.')
|
|
230
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
|
|
231
|
+
if isinstance(select_algorithm, list):
|
|
232
|
+
select_algorithm = ','.join(str(x) for x in select_algorithm)
|
|
233
|
+
|
|
234
|
+
select_algorithm_list = self._make_all_algorithm_list(select_algorithm)
|
|
235
|
+
if select_algorithm_list:
|
|
236
|
+
return select_algorithm_list
|
|
237
|
+
for item in select_algorithm.split(','):
|
|
238
|
+
self._add_algorithm_name_to_list(item.strip(), select_algorithm_list)
|
|
239
|
+
if not select_algorithm_list:
|
|
240
|
+
log.print_error_log(
|
|
241
|
+
"The algorithm in '%s' does not supported. Just supports %s. Please check the "
|
|
242
|
+
"select algorithm name." % (select_algorithm,
|
|
243
|
+
self.built_in_support_algorithm + self.custom_support_algorithm))
|
|
244
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_ALGORITHM_ERROR)
|
|
245
|
+
return select_algorithm_list
|
|
246
|
+
|
|
247
|
+
def _change_str_to_map(self: any, algorithm_param_info: list, algorithm_args: str) -> dict:
|
|
248
|
+
param_map = {}
|
|
249
|
+
for param_str in algorithm_param_info:
|
|
250
|
+
if param_str.strip():
|
|
251
|
+
param = param_str.split('=')
|
|
252
|
+
self._check_value_invalid(param, algorithm_args)
|
|
253
|
+
self._check_value_invalid(param[0].strip(), algorithm_args)
|
|
254
|
+
self._check_value_invalid(param[1].strip(), algorithm_args)
|
|
255
|
+
param_map[param[0].strip()] = param[1].strip()
|
|
256
|
+
return param_map
|
|
257
|
+
|
|
258
|
+
def _parse_algorithm_argument(self: any, algorithm_options: str) -> dict:
|
|
259
|
+
algorithm_param = {}
|
|
260
|
+
if not algorithm_options:
|
|
261
|
+
return algorithm_param
|
|
262
|
+
|
|
263
|
+
for algorithm_args in algorithm_options.split(';'):
|
|
264
|
+
if algorithm_args:
|
|
265
|
+
algorithm_param_info = algorithm_args.split(':')
|
|
266
|
+
self._check_value_invalid(algorithm_param_info, algorithm_args)
|
|
267
|
+
algorithm_name = algorithm_param_info[0].strip()
|
|
268
|
+
self._check_value_invalid(algorithm_name, algorithm_args)
|
|
269
|
+
param_map = self._change_str_to_map(algorithm_param_info[1].split(','), algorithm_args)
|
|
270
|
+
self._update_algorithm_param(algorithm_name, algorithm_param, param_map)
|
|
271
|
+
return algorithm_param
|
|
272
|
+
|
|
273
|
+
def _make_support_algorithm(self: any) -> None:
|
|
274
|
+
"""
|
|
275
|
+
Make support algorithm list for custom and built in
|
|
276
|
+
"""
|
|
277
|
+
dir_path = os.path.join(os.path.dirname(__file__), ConstManager.BUILT_IN_ALGORITHM_DIR_NAME)
|
|
278
|
+
log.print_info_log("dir_path:%s" % dir_path)
|
|
279
|
+
self._make_support_algorithm_by_path(dir_path, self.built_in_support_algorithm)
|
|
280
|
+
if self.custom_path:
|
|
281
|
+
ret = path_check.check_path_valid(
|
|
282
|
+
self.custom_path, True, False, path_check.PathType.Directory)
|
|
283
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
284
|
+
raise CompareError(ret)
|
|
285
|
+
dir_path = os.path.join(self.custom_path, ConstManager.CUSTOM_ALGORITHM_DIR_NAME)
|
|
286
|
+
path_check.check_path_all_file_exec_valid(dir_path)
|
|
287
|
+
self._make_support_algorithm_by_path(dir_path, self.custom_support_algorithm)
|
|
288
|
+
|
|
289
|
+
def _get_module(self: any, algorithm_name: str) -> (bool, any, str):
|
|
290
|
+
if algorithm_name in self.custom_support_algorithm:
|
|
291
|
+
sys.path.append(self.custom_path)
|
|
292
|
+
algorithm_module = importlib.import_module('%s.alg_%s' %
|
|
293
|
+
(ConstManager.CUSTOM_ALGORITHM_DIR_NAME,
|
|
294
|
+
algorithm_name))
|
|
295
|
+
module_type = ConstManager.CUSTOM
|
|
296
|
+
elif algorithm_name in self.built_in_support_algorithm:
|
|
297
|
+
algorithm_module = importlib.import_module('%s.%s.alg_%s' %
|
|
298
|
+
("msprobe.msaccucmp.algorithm_manager",
|
|
299
|
+
ConstManager.BUILT_IN_ALGORITHM_DIR_NAME,
|
|
300
|
+
algorithm_name))
|
|
301
|
+
module_type = ConstManager.BUILTIN
|
|
302
|
+
else:
|
|
303
|
+
return False, '', ''
|
|
304
|
+
# check exist compare attr
|
|
305
|
+
if not hasattr(algorithm_module, ConstManager.COMPARE_FUNC_NAME):
|
|
306
|
+
log.print_warn_log("[%s] The file '%s' has no attribute '%s'. Please check the file."
|
|
307
|
+
% (module_type, str(algorithm_module.__file__), ConstManager.COMPARE_FUNC_NAME))
|
|
308
|
+
return False, algorithm_module, module_type
|
|
309
|
+
return True, algorithm_module, module_type
|
|
310
|
+
|
|
311
|
+
def _make_select_algorithm_map(self: any) -> dict:
|
|
312
|
+
"""
|
|
313
|
+
Make support algorithm map by select algorithm list
|
|
314
|
+
"""
|
|
315
|
+
support_algorithm_map = {}
|
|
316
|
+
for select_algorithm in self.select_algorithm_list:
|
|
317
|
+
get_ok, algorithm_module, module_type = self._get_module(select_algorithm)
|
|
318
|
+
if not get_ok:
|
|
319
|
+
continue
|
|
320
|
+
get_ok, algorithm_func = self._get_function(algorithm_module, module_type)
|
|
321
|
+
if not get_ok:
|
|
322
|
+
continue
|
|
323
|
+
support_algorithm_map[select_algorithm] = algorithm_func
|
|
324
|
+
if not support_algorithm_map:
|
|
325
|
+
log.print_error_log(
|
|
326
|
+
"The algorithm in %s does not supported. Just supports %s. Please check the "
|
|
327
|
+
"select algorithm name." % (self.select_algorithm_list,
|
|
328
|
+
self.built_in_support_algorithm + self.custom_support_algorithm))
|
|
329
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_ALGORITHM_ERROR)
|
|
330
|
+
return support_algorithm_map
|
|
331
|
+
|
|
332
|
+
def _make_support_algorithm_by_path(self: any, dir_path: str, support_algorithm_list: list) -> None:
|
|
333
|
+
if not os.path.exists(dir_path):
|
|
334
|
+
log.print_warn_log("There is no '%s' in '%r', please check the custom path."
|
|
335
|
+
% (ConstManager.CUSTOM_ALGORITHM_DIR_NAME, os.path.dirname(dir_path)))
|
|
336
|
+
return
|
|
337
|
+
one_match = False
|
|
338
|
+
for item in os.listdir(dir_path):
|
|
339
|
+
if self._add_algorithm_file_to_list(os.path.join(dir_path, item), support_algorithm_list):
|
|
340
|
+
one_match = True
|
|
341
|
+
if not one_match:
|
|
342
|
+
log.print_warn_log("There is no legal 'alg_{algorithm_name}.py' file in '%r', "
|
|
343
|
+
"please check the path." % dir_path)
|
|
344
|
+
|
|
345
|
+
def _make_algorithm_param(self: any, algorithm_name: str, args: dict) -> AlgorithmParameter:
|
|
346
|
+
alg_arg_map = args
|
|
347
|
+
if algorithm_name in self.algorithm_param:
|
|
348
|
+
alg_arg_map = dict(self.algorithm_param.get(algorithm_name), **args)
|
|
349
|
+
alg_args = AlgorithmParameter()
|
|
350
|
+
alg_args.__dict__ = alg_arg_map
|
|
351
|
+
return alg_args
|
|
352
|
+
|
|
353
|
+
def _call_compare_function(self: any, *args: any) -> (str, str):
|
|
354
|
+
compare_func, my_output_dump_data, ground_truth_dump_data, alg_args, algorithm_name = args
|
|
355
|
+
alg_result = ''
|
|
356
|
+
alg_error_msg = ''
|
|
357
|
+
try:
|
|
358
|
+
if compare_func:
|
|
359
|
+
alg_result, alg_error_msg = compare_func(my_output_dump_data, ground_truth_dump_data, alg_args)
|
|
360
|
+
self._check_return_value_valid(alg_result, algorithm_name)
|
|
361
|
+
self._check_return_value_valid(alg_error_msg, algorithm_name)
|
|
362
|
+
except Exception as ex:
|
|
363
|
+
alg_error_msg = "Failed to execute '%s' in '%s'. %s" \
|
|
364
|
+
% (ConstManager.COMPARE_FUNC_NAME, algorithm_name, str(ex))
|
|
365
|
+
log.print_warn_log(alg_error_msg)
|
|
366
|
+
alg_result = ConstManager.NAN
|
|
367
|
+
finally:
|
|
368
|
+
pass
|
|
369
|
+
return alg_result, alg_error_msg
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
class AlgorithmManagerMain:
|
|
373
|
+
"""
|
|
374
|
+
The class for algorithm manager main
|
|
375
|
+
"""
|
|
376
|
+
|
|
377
|
+
def __init__(self: any, args: any) -> None:
|
|
378
|
+
self.my_output_dump_file_path = os.path.realpath(args.my_dump_path)
|
|
379
|
+
self.ground_truth_dump_file_path = os.path.realpath(args.golden_dump_path)
|
|
380
|
+
self.manager = AlgorithmManager(args.custom_script_path, args.algorithm, args.algorithm_options)
|
|
381
|
+
if args.output_path:
|
|
382
|
+
if os.path.islink(os.path.abspath(args.output_path)):
|
|
383
|
+
log.print_error_log('The path "%r" is a softlink, not permitted.' % args.output_path)
|
|
384
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
|
|
385
|
+
self.output_path = os.path.realpath(args.output_path)
|
|
386
|
+
|
|
387
|
+
def check_arguments_valid(self: any) -> None:
|
|
388
|
+
"""
|
|
389
|
+
Check arguments valid, if invalid, throw exception
|
|
390
|
+
"""
|
|
391
|
+
ret = path_check.check_path_valid(self.my_output_dump_file_path, True, False,
|
|
392
|
+
path_check.PathType.File)
|
|
393
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
394
|
+
raise CompareError(ret)
|
|
395
|
+
ret = path_check.check_path_valid(self.ground_truth_dump_file_path, True, False,
|
|
396
|
+
path_check.PathType.File)
|
|
397
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
398
|
+
raise CompareError(ret)
|
|
399
|
+
|
|
400
|
+
def process(self: any, save_result: bool = False) -> int:
|
|
401
|
+
"""
|
|
402
|
+
Do compare for two numpy file
|
|
403
|
+
:param save_result: is save result
|
|
404
|
+
:return: VectorComparisonErrorCode
|
|
405
|
+
"""
|
|
406
|
+
self.check_arguments_valid()
|
|
407
|
+
log.print_info_log("The my output dump file is %r." % self.my_output_dump_file_path)
|
|
408
|
+
log.print_info_log("The ground truth file is %r." % self.ground_truth_dump_file_path)
|
|
409
|
+
try:
|
|
410
|
+
self._process_exec(save_result)
|
|
411
|
+
except CompareError as error:
|
|
412
|
+
return error.code
|
|
413
|
+
finally:
|
|
414
|
+
pass
|
|
415
|
+
return CompareError.MSACCUCMP_NONE_ERROR
|
|
416
|
+
|
|
417
|
+
def _process_exec(self: any, save_result: bool) -> None:
|
|
418
|
+
my_output_dump_data = dump_utils.read_numpy_file(self.my_output_dump_file_path)
|
|
419
|
+
ground_truth_dump_data = dump_utils.read_numpy_file(self.ground_truth_dump_file_path)
|
|
420
|
+
self._check_shape_valid(my_output_dump_data, ground_truth_dump_data)
|
|
421
|
+
|
|
422
|
+
result, error_msg = self.manager.compare(
|
|
423
|
+
my_output_dump_data.flatten(), ground_truth_dump_data.flatten(),
|
|
424
|
+
{'my_output_dump_file': self.my_output_dump_file_path,
|
|
425
|
+
'ground_truth_dump_file': self.ground_truth_dump_file_path,
|
|
426
|
+
'shape_type': utils.get_shape_type(my_output_dump_data.shape)})
|
|
427
|
+
self._print_result(result, error_msg, save_result)
|
|
428
|
+
|
|
429
|
+
def _print_result(self: any, result: list, error_msg: list, save_result: bool) -> None:
|
|
430
|
+
header = self.manager.get_result_title()
|
|
431
|
+
title = ''
|
|
432
|
+
line = ''
|
|
433
|
+
for (algorithm_index, value) in enumerate(result):
|
|
434
|
+
while len(line) < len(title):
|
|
435
|
+
line += ConstManager.SPACE
|
|
436
|
+
while len(title) < len(line):
|
|
437
|
+
title += ConstManager.SPACE
|
|
438
|
+
title += str(header[algorithm_index]) + ConstManager.SPACE
|
|
439
|
+
line += str(value) + ConstManager.SPACE
|
|
440
|
+
log.print_info_log(title)
|
|
441
|
+
log.print_info_log(line)
|
|
442
|
+
if error_msg:
|
|
443
|
+
log.print_info_log(str(error_msg))
|
|
444
|
+
if save_result:
|
|
445
|
+
content = ""
|
|
446
|
+
for index, data in enumerate(result):
|
|
447
|
+
content += "%s: %s\n" % (header[index], data)
|
|
448
|
+
file_name = 'file_result_%s.txt' % time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
|
|
449
|
+
path_type = path_check.PathType.File
|
|
450
|
+
summary_file_path = os.path.join(self.output_path, file_name)
|
|
451
|
+
ret = path_check.check_output_path_valid(summary_file_path, exist=False, path_type=path_type)
|
|
452
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
453
|
+
raise CompareError(ret)
|
|
454
|
+
FileUtils.save_file(summary_file_path, content)
|
|
455
|
+
log.print_info_log('The file compare result have been written to "%r".' % summary_file_path)
|
|
456
|
+
|
|
457
|
+
def _check_shape_valid(self: any, my_output_dump_data: any, ground_truth_dump_data: any) -> None:
|
|
458
|
+
my_output_shape = my_output_dump_data.shape
|
|
459
|
+
ground_truth_shape = ground_truth_dump_data.shape
|
|
460
|
+
if my_output_shape != ground_truth_shape:
|
|
461
|
+
log.print_error_log("My output shape %s in '%r' does not match the ground truth shape %s in '%r'."
|
|
462
|
+
% (my_output_shape, self.my_output_dump_file_path, ground_truth_shape,
|
|
463
|
+
self.ground_truth_dump_file_path))
|
|
464
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_SHAPE_ERROR)
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
AlgorithmParameter class.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class AlgorithmParameter:
|
|
25
|
+
"""
|
|
26
|
+
The class for algorithm parameter
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
def __init__(self: any) -> None:
|
|
30
|
+
pass
|
|
31
|
+
|
|
32
|
+
def get(self: any) -> dict:
|
|
33
|
+
"""
|
|
34
|
+
get dict
|
|
35
|
+
"""
|
|
36
|
+
return self.__dict__
|
|
37
|
+
|
|
38
|
+
def get_dict(self: any) -> dict:
|
|
39
|
+
"""
|
|
40
|
+
get dict
|
|
41
|
+
"""
|
|
42
|
+
return self.__dict__
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
AccumulatedRelativeError algorithm. This file mainly involves the compare function.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import numpy as np
|
|
24
|
+
|
|
25
|
+
from msprobe.msaccucmp.algorithm_manager.algorithm_parameter import AlgorithmParameter
|
|
26
|
+
from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
|
|
27
|
+
from msprobe.msaccucmp.cmp_utils import utils
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def compare(my_output_dump_data: any, ground_truth_dump_data: any, args: AlgorithmParameter) -> (str, str):
|
|
31
|
+
"""
|
|
32
|
+
compare my output dump data and the ground truth dump data
|
|
33
|
+
by accumulated relative error
|
|
34
|
+
formula is (|x[i]-y[i]|) / |y[i]| + (x[i+1]-y[i+1]) / y[i+1]
|
|
35
|
+
:param my_output_dump_data: my output dump data to compare
|
|
36
|
+
:param ground_truth_dump_data: the ground truth dump data to compare
|
|
37
|
+
:param args: the algorithm parameter
|
|
38
|
+
:return: the result of accumulated relative error value and error message (the default is "")
|
|
39
|
+
"""
|
|
40
|
+
_ = args # Bypassing parameter is not used
|
|
41
|
+
result = np.where(
|
|
42
|
+
np.abs(ground_truth_dump_data) > ConstManager.FLOAT_EPSILON,
|
|
43
|
+
np.abs(my_output_dump_data / ground_truth_dump_data - 1), # abs(aa - bb) / abs(bb) -> abs(aa / bb - 1)
|
|
44
|
+
0,
|
|
45
|
+
).sum()
|
|
46
|
+
return utils.format_value(result), ""
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
CosineSimilarity algorithm. This file mainly involves the compare function.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import numpy as np
|
|
24
|
+
|
|
25
|
+
from msprobe.msaccucmp.algorithm_manager.algorithm_parameter import AlgorithmParameter
|
|
26
|
+
from msprobe.msaccucmp.cmp_utils import utils, utils_type, log
|
|
27
|
+
from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def compare(my_output_dump_data: any, ground_truth_dump_data: any, args: AlgorithmParameter) -> (str, str):
|
|
31
|
+
"""
|
|
32
|
+
compare my output dump data and the ground truth dump data
|
|
33
|
+
by cosine similarity
|
|
34
|
+
cos(sitar) = sum(x[i] * y[i]) /
|
|
35
|
+
(sqrt(sum(x[i] * x[i])) * sqrt(sum(y[i] * y[i])))
|
|
36
|
+
:param my_output_dump_data: my output dump data to compare
|
|
37
|
+
:param ground_truth_dump_data: the ground truth dump data to compare
|
|
38
|
+
:param args: the algorithm parameter
|
|
39
|
+
:return: the result of cosine similarity value and error message (the default is "")
|
|
40
|
+
"""
|
|
41
|
+
if args.shape_type == utils_type.ShapeType.Scalar:
|
|
42
|
+
return utils.format_value(1), "This tensor is scalar."
|
|
43
|
+
|
|
44
|
+
my_output_norm = np.linalg.norm(my_output_dump_data, axis=-1, keepdims=True)
|
|
45
|
+
ground_truth_norm = np.linalg.norm(ground_truth_dump_data, axis=-1, keepdims=True)
|
|
46
|
+
if my_output_norm <= ConstManager.FLOAT_EPSILON and ground_truth_norm < ConstManager.FLOAT_EPSILON:
|
|
47
|
+
return "1.0", ""
|
|
48
|
+
elif my_output_norm ** 0.5 <= ConstManager.FLOAT_EPSILON:
|
|
49
|
+
message = 'Cannot compare by Cosine Similarity. All the data is zero in ' + args.my_output_dump_file + '.'
|
|
50
|
+
log.print_warn_log(message)
|
|
51
|
+
return ConstManager.NAN, message
|
|
52
|
+
elif ground_truth_norm ** 0.5 <= ConstManager.FLOAT_EPSILON:
|
|
53
|
+
message = 'Cannot compare by Cosine Similarity. All the data is zero in ' + args.ground_truth_dump_file + '.'
|
|
54
|
+
log.print_warn_log(message)
|
|
55
|
+
return ConstManager.NAN, message
|
|
56
|
+
|
|
57
|
+
result = ((my_output_dump_data / my_output_norm) * (ground_truth_dump_data / ground_truth_norm)).sum()
|
|
58
|
+
return utils.format_value(min(result, 1.0)), ""
|