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,328 @@
|
|
|
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 the main function.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import csv
|
|
24
|
+
import os
|
|
25
|
+
import stat
|
|
26
|
+
import time
|
|
27
|
+
|
|
28
|
+
import pandas as pd
|
|
29
|
+
|
|
30
|
+
from msprobe.core.common.log import logger
|
|
31
|
+
from msprobe.core.common.file_utils import create_directory
|
|
32
|
+
from msprobe.infer.offline.compare.msquickcmp.adapter_cli.args_adapter import CmpArgsAdapter
|
|
33
|
+
from msprobe.infer.offline.compare.msquickcmp.atc import atc_utils
|
|
34
|
+
from msprobe.infer.offline.compare.msquickcmp.common import utils
|
|
35
|
+
from msprobe.infer.offline.compare.msquickcmp.common.convert import convert_npy_to_bin
|
|
36
|
+
from msprobe.infer.offline.compare.msquickcmp.common.utils import AccuracyCompareException, \
|
|
37
|
+
get_shape_to_directory_name, OPTYPE_WHITWLIST
|
|
38
|
+
from msprobe.infer.offline.compare.msquickcmp.net_compare.net_compare import NetCompare
|
|
39
|
+
from msprobe.infer.offline.compare.msquickcmp.npu.npu_dump_data import NpuDumpData
|
|
40
|
+
from msprobe.infer.offline.compare.msquickcmp.npu.om_parser import OmParser
|
|
41
|
+
from msprobe.infer.utils.file_open_check import ms_open, sanitize_csv_value
|
|
42
|
+
from msprobe.infer.utils.check.rule import Rule
|
|
43
|
+
from msprobe.infer.utils.constants import TENSOR_MAX_SIZE
|
|
44
|
+
|
|
45
|
+
try:
|
|
46
|
+
import acl
|
|
47
|
+
except ImportError:
|
|
48
|
+
acl = None
|
|
49
|
+
logger.error("Please verify that the CANN environment is properly configured.")
|
|
50
|
+
|
|
51
|
+
WRITE_MODES = stat.S_IWUSR | stat.S_IRUSR
|
|
52
|
+
READ_WRITE_FLAGS = os.O_RDWR | os.O_CREAT
|
|
53
|
+
WRITE_FLAGS = os.O_WRONLY | os.O_CREAT | os.O_TRUNC
|
|
54
|
+
MAX_MEMORY_USE = 6 * 1024 * 1024 * 1024
|
|
55
|
+
COSINE_SIMILARITY = 0.99
|
|
56
|
+
RELATIVE_EUCLIDEAN_DISTANCE = 0.05
|
|
57
|
+
KULLBACK_LEIBLER_DIVERGENCE = 0.005
|
|
58
|
+
ROOT_MEAN_SQUARE_ERROR = 1.0
|
|
59
|
+
MEAN_RELATIVE_ERROR = 1.0
|
|
60
|
+
YES = "YES"
|
|
61
|
+
NO = "NO"
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _generate_golden_data_model(args, npu_dump_npy_path):
|
|
65
|
+
model_name, extension = utils.get_model_name_and_extension(args.golden_path)
|
|
66
|
+
if ".onnx" == extension:
|
|
67
|
+
from msprobe.infer.offline.compare.msquickcmp.onnx_model.onnx_dump_data import OnnxDumpData
|
|
68
|
+
return OnnxDumpData(args, npu_dump_npy_path), extension
|
|
69
|
+
elif ".om" == extension:
|
|
70
|
+
return NpuDumpData(arguments=args, is_golden=True), extension
|
|
71
|
+
else:
|
|
72
|
+
logger.error("Only model files whose names end with .om or .onnx are supported")
|
|
73
|
+
raise AccuracyCompareException(utils.ACCURACY_COMPARISON_MODEL_TYPE_ERROR)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _correct_the_wrong_order(left_index, right_index, golden_net_output_info):
|
|
77
|
+
if left_index not in golden_net_output_info.keys() or right_index not in golden_net_output_info.keys():
|
|
78
|
+
return
|
|
79
|
+
if left_index != right_index:
|
|
80
|
+
tmp = golden_net_output_info[left_index]
|
|
81
|
+
golden_net_output_info[left_index] = golden_net_output_info[right_index]
|
|
82
|
+
golden_net_output_info[right_index] = tmp
|
|
83
|
+
logger.info(f"swap the {left_index} and {right_index} item in golden_net_output_info!")
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _check_output_node_name_mapping(original_net_output_node, golden_net_output_info):
|
|
87
|
+
for left_index, node_name in original_net_output_node.items():
|
|
88
|
+
match = False
|
|
89
|
+
for right_index, dump_file_path in golden_net_output_info.items():
|
|
90
|
+
dump_file_name = os.path.basename(dump_file_path)
|
|
91
|
+
if dump_file_name.startswith(node_name.replace("/", "_").replace(":", ".")):
|
|
92
|
+
match = True
|
|
93
|
+
_correct_the_wrong_order(left_index, right_index, golden_net_output_info)
|
|
94
|
+
break
|
|
95
|
+
if not match:
|
|
96
|
+
logger.warning(f"the original name: {node_name} of net output maybe not correct!")
|
|
97
|
+
break
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def _get_single_csv_in_folder(csv_path):
|
|
101
|
+
for file_name in os.listdir(csv_path):
|
|
102
|
+
if file_name.endswith('.csv'):
|
|
103
|
+
return os.path.join(csv_path, file_name)
|
|
104
|
+
raise IOError(f"None csv file exists in folder {csv_path}")
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def _read_and_process_csv(csv_path, process_func, node_output_show_list):
|
|
108
|
+
if Rule.input_file().check(csv_path):
|
|
109
|
+
with ms_open(csv_path, 'r', max_size=TENSOR_MAX_SIZE) as f:
|
|
110
|
+
reader = csv.reader(f)
|
|
111
|
+
rows = [row for row in reader]
|
|
112
|
+
if len(rows) < 1:
|
|
113
|
+
logger.error("csv is empty, please check.")
|
|
114
|
+
raise AccuracyCompareException(utils.ACCURACY_COMPARISON_EMPTY_CSV_ERROR)
|
|
115
|
+
header = rows[0]
|
|
116
|
+
rows = process_func(header, rows, node_output_show_list)
|
|
117
|
+
return rows
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def _write_csv(csv_path, rows):
|
|
121
|
+
with ms_open(csv_path, mode='w') as f:
|
|
122
|
+
writer = csv.writer(f)
|
|
123
|
+
for line in rows:
|
|
124
|
+
for ele in line:
|
|
125
|
+
_ = sanitize_csv_value(ele)
|
|
126
|
+
writer.writerows(rows)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def _process_is_npu_and_is_precision_error_ops(header, rows, node_output_name_list):
|
|
130
|
+
ground_truth_col = header.index("GroundTruth")
|
|
131
|
+
optype_col = header.index("OpType")
|
|
132
|
+
cosine_similarity_col = header.index("CosineSimilarity")
|
|
133
|
+
relative_euclidean_distance_col = header.index("RelativeEuclideanDistance")
|
|
134
|
+
kullback_leibler_divergence_col = header.index("KullbackLeiblerDivergence")
|
|
135
|
+
root_mean_square_error_col = header.index("RootMeanSquareError")
|
|
136
|
+
mean_relative_error_col = header.index("MeanRelativeError")
|
|
137
|
+
|
|
138
|
+
header.append('IsNpuOps')
|
|
139
|
+
header.append('IsOutputNode')
|
|
140
|
+
header.append('IsPrecisionError')
|
|
141
|
+
for row in rows[1:]:
|
|
142
|
+
try:
|
|
143
|
+
is_npu_ops = YES if row[ground_truth_col] == "*" else NO
|
|
144
|
+
row.append(is_npu_ops)
|
|
145
|
+
|
|
146
|
+
optype = row[optype_col]
|
|
147
|
+
cosine_similarity = row[cosine_similarity_col]
|
|
148
|
+
relative_euclidean_distance = float(row[relative_euclidean_distance_col])
|
|
149
|
+
kullback_leibler_divergence = float(row[kullback_leibler_divergence_col])
|
|
150
|
+
root_mean_square_error = float(row[root_mean_square_error_col])
|
|
151
|
+
mean_relative_error = float(row[mean_relative_error_col])
|
|
152
|
+
if _is_output_node(row[ground_truth_col], node_output_name_list):
|
|
153
|
+
row.append(YES)
|
|
154
|
+
else:
|
|
155
|
+
row.append(NO)
|
|
156
|
+
if optype in OPTYPE_WHITWLIST or cosine_similarity.lower() == 'nan':
|
|
157
|
+
row.append(NO)
|
|
158
|
+
continue
|
|
159
|
+
if _is_row_precision_error(cosine_similarity,
|
|
160
|
+
relative_euclidean_distance,
|
|
161
|
+
kullback_leibler_divergence,
|
|
162
|
+
root_mean_square_error,
|
|
163
|
+
mean_relative_error):
|
|
164
|
+
row.append(YES)
|
|
165
|
+
else:
|
|
166
|
+
row.append(NO)
|
|
167
|
+
|
|
168
|
+
except ValueError as e:
|
|
169
|
+
logger.warning(f"Skipping row due to invalid data: {row}. Error: {e}")
|
|
170
|
+
continue
|
|
171
|
+
return rows
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _is_row_precision_error(cosine_similarity,
|
|
175
|
+
relative_euclidean_distance,
|
|
176
|
+
kullback_leibler_divergence,
|
|
177
|
+
root_mean_square_error,
|
|
178
|
+
mean_relative_error):
|
|
179
|
+
return (float(cosine_similarity) < COSINE_SIMILARITY or
|
|
180
|
+
relative_euclidean_distance > RELATIVE_EUCLIDEAN_DISTANCE or
|
|
181
|
+
kullback_leibler_divergence > KULLBACK_LEIBLER_DIVERGENCE or
|
|
182
|
+
root_mean_square_error > ROOT_MEAN_SQUARE_ERROR or
|
|
183
|
+
mean_relative_error > MEAN_RELATIVE_ERROR)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def _is_output_node(groundtruth, onnxnode_output_name_list):
|
|
187
|
+
return groundtruth.strip() in onnxnode_output_name_list
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def _append_column_to_csv(csv_path, node_output_show_list=None):
|
|
191
|
+
if node_output_show_list is None:
|
|
192
|
+
node_output_show_list = []
|
|
193
|
+
csv_path = _get_single_csv_in_folder(csv_path)
|
|
194
|
+
rows = _read_and_process_csv(csv_path, _process_is_npu_and_is_precision_error_ops, node_output_show_list)
|
|
195
|
+
_write_csv(csv_path, rows)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def cmp_process(args: CmpArgsAdapter):
|
|
199
|
+
args.golden_path = os.path.realpath(args.golden_path)
|
|
200
|
+
args.target_path = os.path.realpath(args.target_path)
|
|
201
|
+
args.cann_path = os.path.realpath(args.cann_path)
|
|
202
|
+
args.input_data = convert_npy_to_bin(args.input_data)
|
|
203
|
+
try:
|
|
204
|
+
check_and_run(args)
|
|
205
|
+
except utils.AccuracyCompareException as error:
|
|
206
|
+
raise error
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def run(args: CmpArgsAdapter, input_shape, original_out_path):
|
|
210
|
+
if input_shape:
|
|
211
|
+
args.input_shape = input_shape
|
|
212
|
+
args.output_path = os.path.join(original_out_path, get_shape_to_directory_name(args.input_shape))
|
|
213
|
+
run_om_model_compare(args)
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def run_om_model_compare(args):
|
|
217
|
+
# whether use aipp
|
|
218
|
+
output_json_path = atc_utils.convert_model_to_json(args.cann_path, args.target_path, args.output_path)
|
|
219
|
+
golden_json_path = None
|
|
220
|
+
if args.golden_path.endswith('.om'):
|
|
221
|
+
golden_json_path = atc_utils.convert_model_to_json(args.cann_path, args.golden_path, args.output_path)
|
|
222
|
+
|
|
223
|
+
temp_om_parser = OmParser(output_json_path)
|
|
224
|
+
use_aipp = True if temp_om_parser.get_aipp_config_content() else False
|
|
225
|
+
|
|
226
|
+
npu_dump = NpuDumpData(args, is_golden=False)
|
|
227
|
+
# generate npu inputs data
|
|
228
|
+
npu_dump.generate_inputs_data(use_aipp=use_aipp)
|
|
229
|
+
# generate npu dump data
|
|
230
|
+
npu_dump_data_path, npu_net_output_data_path = npu_dump.generate_dump_data()
|
|
231
|
+
npu_dump_npy_path = ""
|
|
232
|
+
|
|
233
|
+
# generate onnx inputs data
|
|
234
|
+
golden_dump, model_extension = _generate_golden_data_model(args, npu_dump_npy_path)
|
|
235
|
+
expect_net_output_node = npu_dump.get_expect_output_name()
|
|
236
|
+
# generate dump data by golden model
|
|
237
|
+
golden_dump.generate_inputs_data(npu_dump_data_path, use_aipp)
|
|
238
|
+
if isinstance(golden_dump, NpuDumpData):
|
|
239
|
+
golden_dump_data_path, _ = golden_dump.generate_dump_data(npu_dump_npy_path, npu_dump.om_parser)
|
|
240
|
+
else:
|
|
241
|
+
golden_dump_data_path = golden_dump.generate_dump_data(npu_dump_npy_path, npu_dump.om_parser)
|
|
242
|
+
golden_net_output_info = golden_dump.get_net_output_info()
|
|
243
|
+
|
|
244
|
+
# if it's dynamic batch scenario, golden data files should be renamed
|
|
245
|
+
utils.handle_ground_truth_files(npu_dump.om_parser, npu_dump_data_path, golden_dump_data_path)
|
|
246
|
+
|
|
247
|
+
# compare the entire network
|
|
248
|
+
net_compare = NetCompare(npu_dump_data_path, golden_dump_data_path, output_json_path, args, golden_json_path)
|
|
249
|
+
net_compare.accuracy_network_compare()
|
|
250
|
+
|
|
251
|
+
# Check and correct the mapping of net output node name.
|
|
252
|
+
if len(expect_net_output_node) == 1:
|
|
253
|
+
_check_output_node_name_mapping(expect_net_output_node, golden_net_output_info)
|
|
254
|
+
|
|
255
|
+
node_output_show_list = None
|
|
256
|
+
if model_extension == ".onnx":
|
|
257
|
+
node_output_show_list = _get_model_output_node_name_list(golden_dump.model_with_inputs_session,
|
|
258
|
+
golden_dump.origin_model)
|
|
259
|
+
_append_column_to_csv(args.output_path, node_output_show_list)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def _get_model_output_node_name_list(model_with_inputs_session, origin_model):
|
|
263
|
+
net_output_node_name_list = [item.name for item in model_with_inputs_session.get_outputs()]
|
|
264
|
+
node_output_show_list = []
|
|
265
|
+
for node_name in net_output_node_name_list:
|
|
266
|
+
pre_node = _find_previous_node(origin_model.graph, node_name)
|
|
267
|
+
if pre_node is None:
|
|
268
|
+
return None
|
|
269
|
+
node_output_show_list.append(pre_node)
|
|
270
|
+
return node_output_show_list
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
def _find_previous_node(graph, output_name):
|
|
274
|
+
# 遍历所有节点
|
|
275
|
+
for node in graph.node:
|
|
276
|
+
if output_name in [output for output in node.output]:
|
|
277
|
+
# 找到目标输出节点
|
|
278
|
+
return node.name
|
|
279
|
+
return None
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
def check_and_run(args: CmpArgsAdapter):
|
|
283
|
+
time_dir = time.strftime("%Y%m%d%H%M%S", time.localtime())
|
|
284
|
+
original_out_path = os.path.realpath(os.path.join(args.output_path, time_dir))
|
|
285
|
+
args.output_path = original_out_path
|
|
286
|
+
create_directory(args.output_path)
|
|
287
|
+
|
|
288
|
+
# deal with the dymShape_range param if exists
|
|
289
|
+
input_shapes = []
|
|
290
|
+
if args.dym_shape_range:
|
|
291
|
+
input_shapes = utils.parse_dym_shape_range(args.dym_shape_range)
|
|
292
|
+
if not input_shapes:
|
|
293
|
+
input_shapes.append("")
|
|
294
|
+
for input_shape in input_shapes:
|
|
295
|
+
run(args, input_shape, original_out_path)
|
|
296
|
+
if args.dym_shape_range:
|
|
297
|
+
csv_sum(original_out_path)
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
def csv_sum(original_out_path):
|
|
301
|
+
"""
|
|
302
|
+
Function:
|
|
303
|
+
Summarize csv files under different shapes
|
|
304
|
+
generate a xlsx file
|
|
305
|
+
"""
|
|
306
|
+
csv_file_list = []
|
|
307
|
+
sheet_name_list = []
|
|
308
|
+
|
|
309
|
+
for files in os.listdir(original_out_path):
|
|
310
|
+
if not os.path.isdir(os.path.join(original_out_path, files)):
|
|
311
|
+
continue
|
|
312
|
+
for sub_file in os.listdir(os.path.join(original_out_path, files)):
|
|
313
|
+
if sub_file.endswith(".csv"):
|
|
314
|
+
csv_file_list.append(os.path.join(original_out_path, files, sub_file))
|
|
315
|
+
sheet_name_list.append(files)
|
|
316
|
+
|
|
317
|
+
xlsx_file_summary = os.path.join(original_out_path, "result_summary.xlsx")
|
|
318
|
+
|
|
319
|
+
if os.path.exists(xlsx_file_summary):
|
|
320
|
+
logger.error(f"Error, file {xlsx_file_summary} already exists!")
|
|
321
|
+
os.remove(xlsx_file_summary)
|
|
322
|
+
|
|
323
|
+
with ms_open(xlsx_file_summary, 'wb') as fp_write:
|
|
324
|
+
with pd.ExcelWriter(xlsx_file_summary) as writer:
|
|
325
|
+
for i, csv_file in enumerate(csv_file_list):
|
|
326
|
+
if Rule.input_file().check(csv_file):
|
|
327
|
+
data = pd.read_csv(csv_file, na_values=['NAN'])
|
|
328
|
+
data.to_excel(writer, sheet_name=sheet_name_list[i], index=False, na_rep='NAN')
|
|
@@ -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
|
+
# -------------------------------------------------------------------------
|
|
@@ -0,0 +1,112 @@
|
|
|
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
|
+
import argparse
|
|
19
|
+
import re
|
|
20
|
+
|
|
21
|
+
from msprobe.core.common.log import logger
|
|
22
|
+
from msprobe.core.common.const import FileCheckConst
|
|
23
|
+
from msprobe.core.common.file_utils import check_file_or_directory_path, check_output_dir_path, check_file_type
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def check_model_path_legality(path):
|
|
27
|
+
check_file_or_directory_path(path, False, False, [".onnx", ".om"])
|
|
28
|
+
return path
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def check_input_data_path(path):
|
|
32
|
+
if not isinstance(path, str):
|
|
33
|
+
logger.error(f"input data path:{path} is illegal. Please check.")
|
|
34
|
+
raise argparse.ArgumentTypeError
|
|
35
|
+
if path == '':
|
|
36
|
+
return path
|
|
37
|
+
input_item_paths = path.split(',')
|
|
38
|
+
for input_item_path in input_item_paths:
|
|
39
|
+
file_type = check_file_type(input_item_path)
|
|
40
|
+
if file_type != FileCheckConst.FILE:
|
|
41
|
+
logger.error("The '--input_data' parameter only supports file paths, not folder paths. Please check.")
|
|
42
|
+
raise argparse.ArgumentTypeError
|
|
43
|
+
check_file_or_directory_path(input_item_path, False, False, [".npy", ".bin"])
|
|
44
|
+
return path
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def check_output_path_legality(path):
|
|
48
|
+
if not path:
|
|
49
|
+
return path
|
|
50
|
+
check_output_dir_path(path)
|
|
51
|
+
return path
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def check_dict_kind_string(value):
|
|
55
|
+
# just like "input_name1:1,224,224,3;input_name2:3,300"
|
|
56
|
+
if not value:
|
|
57
|
+
return value
|
|
58
|
+
regex = re.compile(r"[^_A-Za-z0-9,;:/.-]")
|
|
59
|
+
if regex.search(value):
|
|
60
|
+
logger.error(f"string '{value}' is not a legal string")
|
|
61
|
+
raise argparse.ArgumentTypeError
|
|
62
|
+
return value
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def check_rank_range_valid(rank):
|
|
66
|
+
min_value = 0
|
|
67
|
+
max_value = 255
|
|
68
|
+
try:
|
|
69
|
+
int_rank = int(rank)
|
|
70
|
+
except Exception as e:
|
|
71
|
+
logger.error("The rank is illegal. The value must be of type that can be cast to an int variable!")
|
|
72
|
+
raise argparse.ArgumentTypeError from e
|
|
73
|
+
if int_rank < min_value or int_rank > max_value:
|
|
74
|
+
logger.error(f"rank:{rank} is invalid. valid value range is [{min_value}, {max_value}]")
|
|
75
|
+
raise argparse.ArgumentTypeError
|
|
76
|
+
return rank
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def check_number_list(value):
|
|
80
|
+
# just like "1241414,124141,124424"
|
|
81
|
+
if not value:
|
|
82
|
+
return value
|
|
83
|
+
outsize_list = value.split(',')
|
|
84
|
+
for outsize in outsize_list:
|
|
85
|
+
regex = re.compile(r"[^0-9]")
|
|
86
|
+
if regex.search(outsize):
|
|
87
|
+
logger.error(f"output size \"{outsize}\" is not a legal string")
|
|
88
|
+
raise argparse.ArgumentTypeError
|
|
89
|
+
return value
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def check_dym_range_string(value):
|
|
93
|
+
if not value:
|
|
94
|
+
return value
|
|
95
|
+
dym_string = value
|
|
96
|
+
regex = re.compile(r"[^_A-Za-z0-9,;:/.\-~]")
|
|
97
|
+
if regex.search(dym_string):
|
|
98
|
+
logger.error(f"dym range string \"{dym_string}\" is not a legal string")
|
|
99
|
+
raise argparse.ArgumentTypeError
|
|
100
|
+
return value
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def str2bool(v):
|
|
104
|
+
if isinstance(v, bool):
|
|
105
|
+
return v
|
|
106
|
+
if v.lower() in ('yes', 'true', 't', 'y', '1'):
|
|
107
|
+
return True
|
|
108
|
+
elif v.lower() in ('no', 'false', 'f', 'n', '0'):
|
|
109
|
+
return False
|
|
110
|
+
else:
|
|
111
|
+
logger.error('Boolean value expected true, 1, false, 0 with case insensitive.')
|
|
112
|
+
raise argparse.ArgumentTypeError
|
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
import os
|
|
19
|
+
import sys
|
|
20
|
+
import numpy as np
|
|
21
|
+
|
|
22
|
+
from msprobe.core.common.log import logger
|
|
23
|
+
from msprobe.core.common.file_utils import change_mode
|
|
24
|
+
from msprobe.core.common.const import FileCheckConst
|
|
25
|
+
from msprobe.infer.offline.compare.msquickcmp.common.utils import execute_command
|
|
26
|
+
from msprobe.infer.utils.util import load_file_to_read_common_check, filter_cmd
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
MSACCUCMP_FILE_PATH = "toolkit/tools/operator_cmp/compare/msaccucmp.py"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def convert_bin_file_to_npy(bin_file_path, npy_dir_path, cann_path):
|
|
33
|
+
"""
|
|
34
|
+
Function Description:
|
|
35
|
+
convert a bin file to npy file.
|
|
36
|
+
Parameter:
|
|
37
|
+
bin_file_path: the path of the bin file needed to be converted to npy
|
|
38
|
+
npy_dir_path: the dest dir to save the converted npy file
|
|
39
|
+
cann_path: user or system cann_path for using msaccucmp.py
|
|
40
|
+
"""
|
|
41
|
+
python_version = sys.executable.split('/')[-1]
|
|
42
|
+
msaccucmp_command_file_path = os.path.join(cann_path, MSACCUCMP_FILE_PATH)
|
|
43
|
+
logger.info(f"convert dump data: {bin_file_path} to npy file")
|
|
44
|
+
bin2npy_cmd = [python_version, msaccucmp_command_file_path, "convert", "-d", bin_file_path, "-out", npy_dir_path]
|
|
45
|
+
bin2npy_cmd = filter_cmd(bin2npy_cmd)
|
|
46
|
+
execute_command(bin2npy_cmd)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def convert_npy_to_bin(npy_input_path):
|
|
50
|
+
"""
|
|
51
|
+
Function Description:
|
|
52
|
+
convert a file to bin file.
|
|
53
|
+
Parameter:
|
|
54
|
+
npy_file_path: the path of the npy file needed to be converted to bin
|
|
55
|
+
"""
|
|
56
|
+
input_initial_path = npy_input_path.split(",")
|
|
57
|
+
outputs = []
|
|
58
|
+
for input_item in input_initial_path:
|
|
59
|
+
input_item_path = os.path.realpath(input_item)
|
|
60
|
+
if input_item_path.endswith('.npy'):
|
|
61
|
+
bin_item = input_item[:-4] + '.bin'
|
|
62
|
+
bin_path = input_item_path[:-4] + '.bin'
|
|
63
|
+
input_item_path = load_file_to_read_common_check(input_item_path)
|
|
64
|
+
npy_data = np.load(input_item_path)
|
|
65
|
+
if os.path.islink(bin_path):
|
|
66
|
+
os.unlink(bin_path)
|
|
67
|
+
if os.path.exists(bin_path):
|
|
68
|
+
os.remove(bin_path)
|
|
69
|
+
npy_data.tofile(bin_path)
|
|
70
|
+
change_mode(bin_path, FileCheckConst.DATA_FILE_AUTHORITY)
|
|
71
|
+
outputs.append(bin_item)
|
|
72
|
+
else:
|
|
73
|
+
outputs.append(input_item)
|
|
74
|
+
return ",".join(outputs)
|
|
@@ -0,0 +1,121 @@
|
|
|
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 generate dump data function.
|
|
21
|
+
"""
|
|
22
|
+
import os
|
|
23
|
+
import time
|
|
24
|
+
|
|
25
|
+
import numpy as np
|
|
26
|
+
|
|
27
|
+
from msprobe.core.common.file_utils import save_numpy_to_bin
|
|
28
|
+
from msprobe.infer.offline.compare.msquickcmp.common import utils
|
|
29
|
+
from msprobe.core.common.log import logger
|
|
30
|
+
from msprobe.infer.offline.compare.msquickcmp.common.utils import AccuracyCompareException
|
|
31
|
+
from msprobe.infer.utils.check.rule import Rule
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class DumpData(object):
|
|
35
|
+
"""
|
|
36
|
+
Class for generate dump data.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(self):
|
|
40
|
+
self.net_output = {}
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
@staticmethod
|
|
44
|
+
def _to_valid_name(name_str):
|
|
45
|
+
return name_str.replace('.', '_').replace('/', '_')
|
|
46
|
+
|
|
47
|
+
@staticmethod
|
|
48
|
+
def _check_path_exists(input_path, extentions=None):
|
|
49
|
+
input_path = os.path.realpath(input_path)
|
|
50
|
+
if not os.path.exists(input_path):
|
|
51
|
+
logger.error(f"path '{input_path}' not exists")
|
|
52
|
+
raise AccuracyCompareException(utils.ACCURACY_COMPARISON_INVALID_PATH_ERROR)
|
|
53
|
+
|
|
54
|
+
if extentions and not any([input_path.endswith(extention) for extention in extentions]):
|
|
55
|
+
logger.error(f"path '{input_path}' not ends with extention {extentions}")
|
|
56
|
+
raise AccuracyCompareException(utils.ACCURACY_COMPARISON_INVALID_PATH_ERROR)
|
|
57
|
+
|
|
58
|
+
if not os.access(input_path, os.R_OK):
|
|
59
|
+
logger.error(f"user doesn't have read permission to the file {input_path}.")
|
|
60
|
+
raise AccuracyCompareException(utils.ACCURACY_COMPARISON_INVALID_PATH_ERROR)
|
|
61
|
+
|
|
62
|
+
@staticmethod
|
|
63
|
+
def _check_input_data_path(input_path, inputs_tensor_info):
|
|
64
|
+
if len(inputs_tensor_info) != len(input_path):
|
|
65
|
+
logger.error(
|
|
66
|
+
f"the number of model inputs tensor_info is not equal the number of inputs data, "
|
|
67
|
+
f"inputs tensor_info is: {len(inputs_tensor_info)}, "
|
|
68
|
+
f"inputs data is: {len(input_path)}"
|
|
69
|
+
)
|
|
70
|
+
raise AccuracyCompareException(utils.ACCURACY_COMPARISON_INVALID_DATA_ERROR)
|
|
71
|
+
|
|
72
|
+
for cur_path in input_path:
|
|
73
|
+
if not os.path.exists(cur_path):
|
|
74
|
+
logger.error(f"input data path '{cur_path}' not exists")
|
|
75
|
+
raise AccuracyCompareException(utils.ACCURACY_COMPARISON_INVALID_PATH_ERROR)
|
|
76
|
+
|
|
77
|
+
@staticmethod
|
|
78
|
+
def _generate_random_input_data(save_dir, names, shapes, dtypes):
|
|
79
|
+
inputs_map = {}
|
|
80
|
+
for index, (tensor_name, tensor_shape, tensor_dtype) in enumerate(zip(names, shapes, dtypes)):
|
|
81
|
+
input_data = np.random.random(tensor_shape).astype(tensor_dtype)
|
|
82
|
+
inputs_map[tensor_name] = input_data
|
|
83
|
+
file_name = "input_" + str(index) + ".bin"
|
|
84
|
+
input_data_path = os.path.join(save_dir, file_name)
|
|
85
|
+
save_numpy_to_bin(input_data, input_data_path)
|
|
86
|
+
logger.info(f"save input file name: {file_name}, shape: {input_data.shape}, dtype: {input_data.dtype}")
|
|
87
|
+
return inputs_map
|
|
88
|
+
|
|
89
|
+
def generate_dump_data(self):
|
|
90
|
+
pass
|
|
91
|
+
|
|
92
|
+
def get_net_output_info(self):
|
|
93
|
+
return self.net_output
|
|
94
|
+
|
|
95
|
+
def generate_inputs_data(self):
|
|
96
|
+
pass
|
|
97
|
+
|
|
98
|
+
def _generate_dump_data_file_name(self, name_str, node_id):
|
|
99
|
+
return ".".join([self._to_valid_name(name_str), str(node_id), str(round(time.time() * 1e6)), "npy"])
|
|
100
|
+
|
|
101
|
+
def _read_input_data(self, input_pathes, names, shapes, dtypes):
|
|
102
|
+
inputs_map = {}
|
|
103
|
+
for input_path, name, shape, dtype in zip(input_pathes, names, shapes, dtypes):
|
|
104
|
+
if dtype == np.float32 and os.path.getsize(input_path) == np.prod(shape) * 2:
|
|
105
|
+
if Rule.input_file().check(input_path, will_raise=True):
|
|
106
|
+
input_data = np.fromfile(input_path, dtype=np.float16).astype(np.float32)
|
|
107
|
+
else:
|
|
108
|
+
if Rule.input_file().check(input_path, will_raise=True):
|
|
109
|
+
input_data = np.fromfile(input_path, dtype=dtype)
|
|
110
|
+
if np.prod(input_data.shape) != np.prod(shape):
|
|
111
|
+
cur = input_data.shape
|
|
112
|
+
logger.error(f"input data shape not match, input_path: {input_path}, shape: {cur}, target: {shape}")
|
|
113
|
+
raise AccuracyCompareException(utils.ACCURACY_COMPARISON_INVALID_DATA_ERROR)
|
|
114
|
+
input_data = input_data.reshape(shape)
|
|
115
|
+
inputs_map[name] = input_data
|
|
116
|
+
logger.info(
|
|
117
|
+
f"load input file name: {os.path.basename(input_path)}, "
|
|
118
|
+
f"shape: {input_data.shape}, "
|
|
119
|
+
f"dtype: {input_data.dtype}"
|
|
120
|
+
)
|
|
121
|
+
return inputs_map
|