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,461 @@
|
|
|
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
|
+
Pytorch CompareData class. This class mainly involves the function of parse dump_data.
|
|
21
|
+
"""
|
|
22
|
+
import numpy as np
|
|
23
|
+
|
|
24
|
+
from msprobe.msaccucmp.cmp_utils import utils_type
|
|
25
|
+
from msprobe.msaccucmp.cmp_utils import log
|
|
26
|
+
from msprobe.msaccucmp.pytorch_cmp import hdf5_parser
|
|
27
|
+
from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
|
|
28
|
+
from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class DataType:
|
|
32
|
+
"""
|
|
33
|
+
The class for pytorch dump data DataType
|
|
34
|
+
"""
|
|
35
|
+
data_type = {
|
|
36
|
+
"Float": 1,
|
|
37
|
+
"Byte": 2,
|
|
38
|
+
"Char": 3,
|
|
39
|
+
"Short": 5,
|
|
40
|
+
"Int": 6,
|
|
41
|
+
"Long": 7,
|
|
42
|
+
"Bool": 9,
|
|
43
|
+
"Half": 10,
|
|
44
|
+
"Double": 11
|
|
45
|
+
}
|
|
46
|
+
equivalent_type = [
|
|
47
|
+
("Int", "Long"),
|
|
48
|
+
("Float", "Half")
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def get_name(cls: any, value: int) -> str:
|
|
53
|
+
"""
|
|
54
|
+
Get the type name by the type value.
|
|
55
|
+
:value: the code of data type
|
|
56
|
+
"""
|
|
57
|
+
return list(DataType.data_type.keys())[list(DataType.data_type.values()).index(value)]
|
|
58
|
+
|
|
59
|
+
@classmethod
|
|
60
|
+
def get_value(cls: any, name: str) -> int:
|
|
61
|
+
"""
|
|
62
|
+
Get the type value by the type name.
|
|
63
|
+
:name: the name of data type
|
|
64
|
+
"""
|
|
65
|
+
return DataType.data_type.get(name)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class CompareMap:
|
|
69
|
+
"""
|
|
70
|
+
The class is used for op mapping.
|
|
71
|
+
"""
|
|
72
|
+
def __init__(self: any) -> None:
|
|
73
|
+
self.op_map = {}
|
|
74
|
+
self.param_map = {}
|
|
75
|
+
self._init_map_table()
|
|
76
|
+
|
|
77
|
+
def get_mapping_opname(self: any, opname: str) -> list:
|
|
78
|
+
"""
|
|
79
|
+
Get mapping op name in map table.
|
|
80
|
+
:opname: the op name before mapping
|
|
81
|
+
"""
|
|
82
|
+
if opname in list(self.op_map.keys()):
|
|
83
|
+
return self.op_map.get(opname)
|
|
84
|
+
return []
|
|
85
|
+
|
|
86
|
+
def get_mapping_param(self: any, opname: str, param: str) -> str:
|
|
87
|
+
"""
|
|
88
|
+
Get mapping param in map table.
|
|
89
|
+
:opname: the param name before mapping
|
|
90
|
+
"""
|
|
91
|
+
if opname not in list(self.param_map.keys()):
|
|
92
|
+
return ''
|
|
93
|
+
item = self.param_map.get(opname)
|
|
94
|
+
if param in item.keys():
|
|
95
|
+
return item[param]
|
|
96
|
+
return ''
|
|
97
|
+
|
|
98
|
+
def get_mapping_opname_all(self: any) -> list:
|
|
99
|
+
"""
|
|
100
|
+
Get all the mapped opname.
|
|
101
|
+
"""
|
|
102
|
+
return list(self.op_map.values())
|
|
103
|
+
|
|
104
|
+
def _init_map_table(self: any) -> None:
|
|
105
|
+
self.op_map = {
|
|
106
|
+
'CudnnBatchNormBackward': ['NativeBatchNormBackward'],
|
|
107
|
+
'NativeBatchNormBackward': ['CudnnBatchNormBackward'],
|
|
108
|
+
'CudnnConvolutionBackward': ['NpuConvolutionBackward'],
|
|
109
|
+
'ThnnConvDepthwise2DBackward': ['NpuConvolutionBackward'],
|
|
110
|
+
'NpuConvolutionBackward': ['CudnnConvolutionBackward', 'ThnnConvDepthwise2DBackward']
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
self.param_map = {
|
|
114
|
+
'CudnnBatchNormBackward': {'epsilon': 'eps'},
|
|
115
|
+
'NativeBatchNormBackward': {'eps': 'epsilon'},
|
|
116
|
+
'CudnnConvolutionBackward': {'self': 'input'},
|
|
117
|
+
'ThnnConvDepthwise2DBackward': {'self': 'input'},
|
|
118
|
+
'NpuConvolutionBackward': {'input': 'self'}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class CompareData:
|
|
123
|
+
"""
|
|
124
|
+
The class for compare data, left dump data and right dump data.
|
|
125
|
+
"""
|
|
126
|
+
NPU_PREFIX = "Npu"
|
|
127
|
+
GPU_PREFIX = "Cudnn"
|
|
128
|
+
CPU_PREFIX = "Thnn"
|
|
129
|
+
|
|
130
|
+
def __init__(self: any, my_dump_path: str, golden_dump_path: str) -> None:
|
|
131
|
+
self.mapping = CompareMap()
|
|
132
|
+
self.my_dump = hdf5_parser.Hdf5Parser(my_dump_path, hdf5_parser.Hdf5Parser.MY_DUMP_FILE,
|
|
133
|
+
self.mapping.get_mapping_opname_all())
|
|
134
|
+
self.golden_dump = hdf5_parser.Hdf5Parser(golden_dump_path, hdf5_parser.Hdf5Parser.GOLDEN_DUMP_FILE,
|
|
135
|
+
self.mapping.get_mapping_opname_all())
|
|
136
|
+
self.orders_num = 0
|
|
137
|
+
|
|
138
|
+
@staticmethod
|
|
139
|
+
def get_original_opname(ext_opname: str) -> str:
|
|
140
|
+
"""
|
|
141
|
+
Get original op name in ext_opname.
|
|
142
|
+
:ext_opname: extend op name. such as cov2d:2
|
|
143
|
+
"""
|
|
144
|
+
if ConstManager.DELIMITER not in ext_opname:
|
|
145
|
+
log.print_error_log(f": not in {ext_opname}, please check.")
|
|
146
|
+
raise CompareError(CompareError.MSACCUCMP_NAME_ERROR)
|
|
147
|
+
op_name, _ = ext_opname.split(ConstManager.DELIMITER, 1)
|
|
148
|
+
return op_name
|
|
149
|
+
|
|
150
|
+
@staticmethod
|
|
151
|
+
def _is_equivalent_type(my_dump_data_type: int, golden_dump_data_type: int, type_info: str) -> bool:
|
|
152
|
+
equivalent_type = set()
|
|
153
|
+
for item in DataType.equivalent_type:
|
|
154
|
+
equivalent_type.clear()
|
|
155
|
+
for type_name in item:
|
|
156
|
+
equivalent_type.add(DataType.get_value(type_name))
|
|
157
|
+
if my_dump_data_type in equivalent_type \
|
|
158
|
+
and golden_dump_data_type in equivalent_type:
|
|
159
|
+
message = 'The DataType on both sides are Compatible, {}'.format(type_info)
|
|
160
|
+
log.print_info_log(message)
|
|
161
|
+
return True
|
|
162
|
+
return False
|
|
163
|
+
|
|
164
|
+
@staticmethod
|
|
165
|
+
def _check_stride(dataset_path: str, shape: list, stride: list) -> bool:
|
|
166
|
+
message = "shape={},stride={},stride is invalid". \
|
|
167
|
+
format(tuple(shape), tuple(stride))
|
|
168
|
+
|
|
169
|
+
if len(shape) != len(stride):
|
|
170
|
+
log.print_warn_log("[{}]:{}".format(dataset_path, message))
|
|
171
|
+
return False
|
|
172
|
+
|
|
173
|
+
expect_data_num = 0
|
|
174
|
+
real_data_num = 1
|
|
175
|
+
for (index, _) in enumerate(shape):
|
|
176
|
+
expect_data_num += ((shape[index] - 1) * stride[index])
|
|
177
|
+
real_data_num *= shape[index]
|
|
178
|
+
expect_data_num += 1
|
|
179
|
+
if expect_data_num > real_data_num:
|
|
180
|
+
log.print_warn_log("[{}]:{}".format(dataset_path, message))
|
|
181
|
+
return False
|
|
182
|
+
return True
|
|
183
|
+
|
|
184
|
+
def get_golden_dataset(self: any, ext_opname: str, my_dump_dataset_path: str) -> (bool, str, str):
|
|
185
|
+
"""
|
|
186
|
+
Get the golden_dataset_path that matches the my_dump_dataset_path.
|
|
187
|
+
:ext_opname: the extend op name. such as cov2d:2
|
|
188
|
+
:my_dump_dataset_path: the my dump dataset path that get from dump data
|
|
189
|
+
"""
|
|
190
|
+
message = 'No data match with {} in golden dump data.' \
|
|
191
|
+
.format(my_dump_dataset_path)
|
|
192
|
+
if ext_opname in self.golden_dump.ext_opname_dataset_map.keys():
|
|
193
|
+
golden_ext_opname = ext_opname
|
|
194
|
+
else:
|
|
195
|
+
golden_ext_opname = self._opname_map(ext_opname, self.golden_dump.device_type)
|
|
196
|
+
if golden_ext_opname not in self.golden_dump.ext_opname_dataset_map.keys():
|
|
197
|
+
return False, '', message
|
|
198
|
+
|
|
199
|
+
golden_dataset_path = self._construct_dataset_path(
|
|
200
|
+
ext_opname, my_dump_dataset_path, self.golden_dump, golden_ext_opname)
|
|
201
|
+
if golden_dataset_path and self.golden_dump.have_dataset(golden_ext_opname, golden_dataset_path):
|
|
202
|
+
return True, golden_dataset_path, ''
|
|
203
|
+
log.print_warn_log(message)
|
|
204
|
+
return False, '', message
|
|
205
|
+
|
|
206
|
+
def get_dump_data(self: any, my_dataset_path: str, golden_dataset_path: str) -> (any, any, str):
|
|
207
|
+
"""
|
|
208
|
+
Get my dump data and golden dump data.
|
|
209
|
+
:my_dataset_path: my dataset path in my dump data
|
|
210
|
+
:golden_dataset_path: golden dataset path in golden dump data
|
|
211
|
+
"""
|
|
212
|
+
success, message = self._check_data_type(my_dataset_path, golden_dataset_path)
|
|
213
|
+
if not success:
|
|
214
|
+
log.print_warn_log(message)
|
|
215
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR, message)
|
|
216
|
+
|
|
217
|
+
my_dump_data = self.my_dump.get_dump_data(my_dataset_path)
|
|
218
|
+
golden_dump_data = self.golden_dump.get_dump_data(golden_dataset_path)
|
|
219
|
+
converted_golden_dump_data = self._converted_stride(
|
|
220
|
+
golden_dump_data, golden_dataset_path)
|
|
221
|
+
return my_dump_data, converted_golden_dump_data, ''
|
|
222
|
+
|
|
223
|
+
def get_not_matched_golden_datasets(self: any) -> list:
|
|
224
|
+
"""
|
|
225
|
+
Find all the dataset that does not match with my dump in the golden file.
|
|
226
|
+
"""
|
|
227
|
+
not_matched_info = []
|
|
228
|
+
# Unmatched items. To display them at the end of the result file after sorting,
|
|
229
|
+
# order must be the maximum value plus 1.
|
|
230
|
+
for golden_ext_opname, _ in self.golden_dump.ext_opname_dataset_map.items():
|
|
231
|
+
all_not_matched = True
|
|
232
|
+
failed_info = []
|
|
233
|
+
golden_dataset = ''
|
|
234
|
+
for golden_dataset in self.golden_dump.ext_opname_dataset_map[golden_ext_opname]:
|
|
235
|
+
if golden_ext_opname in self.my_dump.ext_opname_dataset_map.keys():
|
|
236
|
+
my_dump_ext_opname = golden_ext_opname
|
|
237
|
+
else:
|
|
238
|
+
my_dump_ext_opname = self._opname_map(golden_ext_opname)
|
|
239
|
+
if not self._reverse_match_non_load_mode(my_dump_ext_opname, golden_dataset, failed_info):
|
|
240
|
+
continue
|
|
241
|
+
if not self._reverse_match_process(my_dump_ext_opname, golden_ext_opname,
|
|
242
|
+
golden_dataset, failed_info):
|
|
243
|
+
continue
|
|
244
|
+
all_not_matched = False
|
|
245
|
+
|
|
246
|
+
if all_not_matched:
|
|
247
|
+
failed_info.clear()
|
|
248
|
+
_, op_name, order, _ = golden_dataset.split('/', 3)
|
|
249
|
+
message = 'No data match with /{}/{} in my dump data.'.format(op_name, order)
|
|
250
|
+
failed_info.append([max(self.my_dump.get_all_orders()) + 1, 'NaN',
|
|
251
|
+
'/{}/{}'.format(op_name, order), message])
|
|
252
|
+
not_matched_info.extend(failed_info)
|
|
253
|
+
|
|
254
|
+
return not_matched_info
|
|
255
|
+
|
|
256
|
+
def set_compare_input_flag(self: any) -> None:
|
|
257
|
+
"""
|
|
258
|
+
Sets whether to compare inputs.
|
|
259
|
+
"""
|
|
260
|
+
if self.my_dump.need_compare_input:
|
|
261
|
+
self.golden_dump.need_compare_input = True
|
|
262
|
+
|
|
263
|
+
def check_my_dump_file_valid(self: any) -> None:
|
|
264
|
+
"""
|
|
265
|
+
Check whether the device type is NPU.
|
|
266
|
+
"""
|
|
267
|
+
if not self.my_dump.ext_opname_dataset_map:
|
|
268
|
+
log.print_warn_log('my dump file is empty!')
|
|
269
|
+
raise CompareError(
|
|
270
|
+
CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR)
|
|
271
|
+
|
|
272
|
+
if self.my_dump.device_type != utils_type.DeviceType.NPU.value:
|
|
273
|
+
log.print_error_log('My dump file is not the dump data of the model'
|
|
274
|
+
' executed on the AI processor, please check -m param!')
|
|
275
|
+
raise CompareError(
|
|
276
|
+
CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR)
|
|
277
|
+
|
|
278
|
+
def parse_dump_file(self: any) -> int:
|
|
279
|
+
"""
|
|
280
|
+
Parsing the data to be compared.
|
|
281
|
+
"""
|
|
282
|
+
ret = self.my_dump.parse_dump_file()
|
|
283
|
+
if ret == CompareError.MSACCUCMP_NONE_ERROR:
|
|
284
|
+
self.check_my_dump_file_valid()
|
|
285
|
+
self.set_compare_input_flag()
|
|
286
|
+
self.orders_num = len(self.my_dump.get_all_orders())
|
|
287
|
+
return self.golden_dump.parse_dump_file()
|
|
288
|
+
return ret
|
|
289
|
+
|
|
290
|
+
def open_file(self: any, model: str) -> None:
|
|
291
|
+
"""
|
|
292
|
+
Open the my dump and golden dump files.
|
|
293
|
+
"""
|
|
294
|
+
self.my_dump.open_file(model)
|
|
295
|
+
self.golden_dump.open_file(model)
|
|
296
|
+
|
|
297
|
+
def close_file(self: any) -> None:
|
|
298
|
+
"""
|
|
299
|
+
Close the my dump and golden dump files.
|
|
300
|
+
"""
|
|
301
|
+
self.my_dump.close_file()
|
|
302
|
+
self.golden_dump.close_file()
|
|
303
|
+
|
|
304
|
+
def get_all_orders(self: any) -> list:
|
|
305
|
+
"""
|
|
306
|
+
Get all orders incrementally.
|
|
307
|
+
"""
|
|
308
|
+
return sorted(self.my_dump.get_all_orders())
|
|
309
|
+
|
|
310
|
+
def get_ext_opname_by_order(self: any, order: int) -> list:
|
|
311
|
+
"""
|
|
312
|
+
Get the list of extend op name corresponding to the order.
|
|
313
|
+
:order: the order of Op execution
|
|
314
|
+
"""
|
|
315
|
+
return self.my_dump.get_ext_opname_group_by_order(order)
|
|
316
|
+
|
|
317
|
+
def get_my_dump_datasets(self: any, ext_opname: str) -> list:
|
|
318
|
+
"""
|
|
319
|
+
Get the dump datasets(include input and output) by ext_opname.
|
|
320
|
+
:ext_opname: the extend op name. such as cov2d:2
|
|
321
|
+
"""
|
|
322
|
+
if ext_opname in self.my_dump.ext_opname_dataset_map.keys():
|
|
323
|
+
return self.my_dump.ext_opname_dataset_map[ext_opname]
|
|
324
|
+
return []
|
|
325
|
+
|
|
326
|
+
def _construct_dataset_path(self: any, src_ext_opname: str, src_dataset_path: str, dst_dump_data: any,
|
|
327
|
+
dst_ext_opname: str) -> str:
|
|
328
|
+
"""
|
|
329
|
+
Construct the dataset path based on the peer path.
|
|
330
|
+
:ext_opname: the extend op name. such as cov2d:2
|
|
331
|
+
:dataset_path: the base dataset_path
|
|
332
|
+
:gen_golden_path: if the Dataset is the expect type(golden)
|
|
333
|
+
"""
|
|
334
|
+
dst_order = dst_dump_data.get_order_by_ext_opname(dst_ext_opname)
|
|
335
|
+
|
|
336
|
+
# e.g. dataset_path:/AddmmBackward/4/input/mat1,dataset_name: input/mat1
|
|
337
|
+
_, _, src_order, direction, src_dataset_name = src_dataset_path.split('/', 4)
|
|
338
|
+
|
|
339
|
+
# in load comparison mode, inputs do not need to be compared, and
|
|
340
|
+
# the dataset paths of my dump and golden dump must be the same order.
|
|
341
|
+
if dst_dump_data.is_load_mode():
|
|
342
|
+
dst_order = src_order
|
|
343
|
+
|
|
344
|
+
dst_opname = self.get_original_opname(dst_ext_opname)
|
|
345
|
+
|
|
346
|
+
dst_dataset_path = "/{}/{}/{}/{}".format(dst_opname, dst_order, direction, src_dataset_name)
|
|
347
|
+
if dst_dump_data.have_dataset(dst_ext_opname, dst_dataset_path):
|
|
348
|
+
return dst_dataset_path
|
|
349
|
+
|
|
350
|
+
src_opname = self.get_original_opname(src_ext_opname)
|
|
351
|
+
# get param name at suffix
|
|
352
|
+
src_param_name = src_dataset_path.split('/')[-1]
|
|
353
|
+
mapping_param_name = self.mapping.get_mapping_param(src_opname, src_param_name)
|
|
354
|
+
if mapping_param_name:
|
|
355
|
+
# replace param name at suffix
|
|
356
|
+
return "{}{}".format(dst_dataset_path[:-len(src_param_name)], mapping_param_name)
|
|
357
|
+
|
|
358
|
+
return ''
|
|
359
|
+
|
|
360
|
+
def _opname_map_by_map_table(self: any, ext_opname: str, device_type: int) -> str:
|
|
361
|
+
replaced_ext_opname = ''
|
|
362
|
+
opname = self.get_original_opname(ext_opname)
|
|
363
|
+
mapping_opname_list = self.mapping.get_mapping_opname(opname)
|
|
364
|
+
if not mapping_opname_list:
|
|
365
|
+
return replaced_ext_opname
|
|
366
|
+
for mapping_opname in mapping_opname_list:
|
|
367
|
+
replaced_ext_opname = ext_opname.replace(opname, mapping_opname, 1)
|
|
368
|
+
if device_type == utils_type.DeviceType.NPU.value:
|
|
369
|
+
if replaced_ext_opname in self.my_dump.ext_opname_dataset_map.keys():
|
|
370
|
+
return replaced_ext_opname
|
|
371
|
+
else:
|
|
372
|
+
if replaced_ext_opname in self.golden_dump.ext_opname_dataset_map.keys():
|
|
373
|
+
return replaced_ext_opname
|
|
374
|
+
return ''
|
|
375
|
+
|
|
376
|
+
def _opname_map(self: any, ext_opname: str, device_type: int = utils_type.DeviceType.NPU.value) -> str:
|
|
377
|
+
"""
|
|
378
|
+
Processes mappings between NPUs, GPNs, and CPU operators.
|
|
379
|
+
:ext_opname: the extend op name. such as cov2d:2
|
|
380
|
+
:device_type: the device_type at my dump side
|
|
381
|
+
"""
|
|
382
|
+
mapped_opname = self._opname_map_by_map_table(ext_opname, device_type)
|
|
383
|
+
if mapped_opname:
|
|
384
|
+
return mapped_opname
|
|
385
|
+
|
|
386
|
+
if ext_opname.startswith(self.NPU_PREFIX):
|
|
387
|
+
if device_type == utils_type.DeviceType.CPU.value:
|
|
388
|
+
return ext_opname.replace(self.NPU_PREFIX, self.CPU_PREFIX, 1)
|
|
389
|
+
if device_type == utils_type.DeviceType.GPU.value:
|
|
390
|
+
return ext_opname.replace(self.NPU_PREFIX, self.GPU_PREFIX, 1)
|
|
391
|
+
# reverse lookup
|
|
392
|
+
if ext_opname.startswith(self.CPU_PREFIX):
|
|
393
|
+
return ext_opname.replace(self.CPU_PREFIX, self.NPU_PREFIX, 1)
|
|
394
|
+
if ext_opname.startswith(self.GPU_PREFIX):
|
|
395
|
+
return ext_opname.replace(self.GPU_PREFIX, self.NPU_PREFIX, 1)
|
|
396
|
+
return ext_opname
|
|
397
|
+
|
|
398
|
+
def _check_data_type(self: any, my_dataset_path: str, golden_dataset_path: str) -> (bool, str):
|
|
399
|
+
"""
|
|
400
|
+
Check the DataType of my dump data and golden dump data.
|
|
401
|
+
:my_dataset_path: the my dump dataset path
|
|
402
|
+
:golden_dataset_path: the golden dump dataset path
|
|
403
|
+
"""
|
|
404
|
+
message = "my_dataset_path is {}, golden_dataset_path" \
|
|
405
|
+
" is {}.".format(my_dataset_path, golden_dataset_path)
|
|
406
|
+
attr_ok, my_dump_data_type = self.my_dump.get_dump_data_attr(
|
|
407
|
+
my_dataset_path, utils_type.DatasetAttr.DataType.name)
|
|
408
|
+
if not attr_ok:
|
|
409
|
+
return False, "Get the attr 'DataType' of {} failed! {}".format("my_dump", message)
|
|
410
|
+
|
|
411
|
+
attr_ok, golden_dump_data_type = self.golden_dump.get_dump_data_attr(
|
|
412
|
+
golden_dataset_path, utils_type.DatasetAttr.DataType.name)
|
|
413
|
+
if not attr_ok:
|
|
414
|
+
return False, "Get the attr 'DataType' of {} failed! {}".format("golden_dump", message)
|
|
415
|
+
|
|
416
|
+
type_info = 'my dump data path is {}, the data type of both sides is({},{}).' \
|
|
417
|
+
.format(my_dataset_path, DataType.get_name(my_dump_data_type),
|
|
418
|
+
DataType.get_name(golden_dump_data_type))
|
|
419
|
+
if my_dump_data_type == golden_dump_data_type:
|
|
420
|
+
return True, ''
|
|
421
|
+
|
|
422
|
+
if self._is_equivalent_type(my_dump_data_type, golden_dump_data_type, type_info):
|
|
423
|
+
return True, ''
|
|
424
|
+
|
|
425
|
+
message = 'The DataType on both sides are different, {}'.format(type_info)
|
|
426
|
+
return False, message
|
|
427
|
+
|
|
428
|
+
def _converted_stride(self: any, dump_data: any, dataset_path: str) -> any:
|
|
429
|
+
# convert GPU/CPU stride
|
|
430
|
+
attr_ok, device_type = self.golden_dump.get_dump_data_attr(dataset_path,
|
|
431
|
+
utils_type.DatasetAttr.DeviceType.name)
|
|
432
|
+
if attr_ok and device_type in (utils_type.DeviceType.GPU.value, utils_type.DeviceType.CPU.value):
|
|
433
|
+
have_stride_attr, stride_attr = self.golden_dump.get_dump_data_attr(dataset_path,
|
|
434
|
+
utils_type.DatasetAttr.Stride.name)
|
|
435
|
+
if have_stride_attr and self._check_stride(dataset_path, list(dump_data.shape), list(stride_attr)):
|
|
436
|
+
dump_data_flatten = dump_data.flatten()
|
|
437
|
+
real_stride = (dump_data_flatten.strides[0] * i for i in list(stride_attr))
|
|
438
|
+
return np.lib.stride_tricks.as_strided(
|
|
439
|
+
dump_data_flatten, shape=dump_data.shape, strides=real_stride)
|
|
440
|
+
return dump_data
|
|
441
|
+
|
|
442
|
+
def _reverse_match_non_load_mode(self: any, my_dump_ext_opname: str, golden_dataset: str,
|
|
443
|
+
failed_info: list) -> bool:
|
|
444
|
+
message = 'No data match with {} in my dump data.'.format(golden_dataset)
|
|
445
|
+
if not self.my_dump.is_load_mode() \
|
|
446
|
+
and my_dump_ext_opname not in self.my_dump.ext_opname_dataset_map.keys():
|
|
447
|
+
failed_info.append([max(self.my_dump.get_all_orders()) + 1, 'NaN', golden_dataset, message])
|
|
448
|
+
return False
|
|
449
|
+
return True
|
|
450
|
+
|
|
451
|
+
def _reverse_match_process(self: any, my_dump_ext_opname: str, golden_ext_opname: str,
|
|
452
|
+
golden_dataset: str, failed_info: list) -> bool:
|
|
453
|
+
my_dump_dataset_path = self._construct_dataset_path(
|
|
454
|
+
golden_ext_opname, golden_dataset, self.my_dump, my_dump_ext_opname)
|
|
455
|
+
if not my_dump_dataset_path or not self.my_dump.have_dataset(my_dump_ext_opname, my_dump_dataset_path):
|
|
456
|
+
order = self.my_dump.get_order_by_ext_opname(my_dump_ext_opname)
|
|
457
|
+
op_name = self.get_original_opname(my_dump_ext_opname)
|
|
458
|
+
message = 'No data match with {} in my dump data.'.format(golden_dataset)
|
|
459
|
+
failed_info.append([order, op_name, golden_dataset, message])
|
|
460
|
+
return False
|
|
461
|
+
return True
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
ShapeConversion class. This class mainly involves the convert_shape function.
|
|
21
|
+
"""
|
|
22
|
+
import sys
|
|
23
|
+
import time
|
|
24
|
+
from msprobe.msaccucmp.cmp_utils import log, file_utils
|
|
25
|
+
from msprobe.msaccucmp.conversion.shape_format_conversion import ShapeConversionMain
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
if __name__ == "__main__":
|
|
29
|
+
log.print_deprecated_warning(sys.argv[0])
|
|
30
|
+
START = time.time()
|
|
31
|
+
SHAPE_CONVERSION = ShapeConversionMain()
|
|
32
|
+
RET = 0
|
|
33
|
+
with file_utils.UmaskWrapper():
|
|
34
|
+
try:
|
|
35
|
+
RET = SHAPE_CONVERSION.process()
|
|
36
|
+
except Exception as base_err:
|
|
37
|
+
log.print_error_log(f'Basic error running {sys.argv[0]}: {base_err}')
|
|
38
|
+
sys.exit(1)
|
|
39
|
+
END = time.time()
|
|
40
|
+
log.print_info_log("The format conversion was completed and took %.2f seconds." % (END - START))
|
|
41
|
+
sys.exit(RET)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# This file is part of the MindStudio project.
|
|
3
|
+
# Copyright (c) 2025 Huawei Technologies Co.,Ltd.
|
|
4
|
+
#
|
|
5
|
+
# MindStudio is licensed under Mulan PSL v2.
|
|
6
|
+
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
7
|
+
# You may obtain a copy of Mulan PSL v2 at:
|
|
8
|
+
#
|
|
9
|
+
# http://license.coscl.org.cn/MulanPSL2
|
|
10
|
+
#
|
|
11
|
+
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
12
|
+
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
13
|
+
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
14
|
+
# See the Mulan PSL v2 for more details.
|
|
15
|
+
# -------------------------------------------------------------------------
|
|
16
|
+
|