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,274 @@
|
|
|
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 file mainly involves the path check function.
|
|
21
|
+
"""
|
|
22
|
+
import os
|
|
23
|
+
import re
|
|
24
|
+
import stat
|
|
25
|
+
from enum import Enum
|
|
26
|
+
|
|
27
|
+
from msprobe.msaccucmp.cmp_utils import log
|
|
28
|
+
from msprobe.msaccucmp.cmp_utils import utils
|
|
29
|
+
from msprobe.msaccucmp.cmp_utils.reg_manager import RegManager
|
|
30
|
+
from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
|
|
31
|
+
from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class PathType(Enum):
|
|
35
|
+
"""
|
|
36
|
+
The enum for path type
|
|
37
|
+
"""
|
|
38
|
+
All = 0
|
|
39
|
+
File = 1
|
|
40
|
+
Directory = 2
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _check_path_file_or_directory(path: str, path_type: PathType) -> int:
|
|
44
|
+
ret = CompareError.MSACCUCMP_NONE_ERROR
|
|
45
|
+
if path_type == PathType.File:
|
|
46
|
+
if os.path.exists(path) and not os.path.isfile(path):
|
|
47
|
+
log.print_error_log('The path "%r" is not a file. Please check the path.' % path)
|
|
48
|
+
ret = CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
49
|
+
elif path_type == PathType.Directory:
|
|
50
|
+
if not os.path.isdir(path):
|
|
51
|
+
log.print_error_log('The path "%r" is not a directory. Please check the path.' % path)
|
|
52
|
+
ret = CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
53
|
+
return ret
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def get_path_list_for_str(path_str: str) -> list:
|
|
57
|
+
"""
|
|
58
|
+
Get path list for string
|
|
59
|
+
:param path_str: the user input string
|
|
60
|
+
:return: the path list
|
|
61
|
+
"""
|
|
62
|
+
if ',' not in path_str:
|
|
63
|
+
new_path = os.path.realpath(path_str)
|
|
64
|
+
ret = check_path_valid(new_path, True, False)
|
|
65
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
66
|
+
raise CompareError(ret)
|
|
67
|
+
return [new_path]
|
|
68
|
+
input_path_list = []
|
|
69
|
+
for input_path in path_str.split(','):
|
|
70
|
+
new_path = os.path.realpath(input_path.strip())
|
|
71
|
+
ret = check_path_valid(new_path, True, False)
|
|
72
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
73
|
+
continue
|
|
74
|
+
input_path_list.append(new_path)
|
|
75
|
+
if not input_path_list:
|
|
76
|
+
log.print_error_log(
|
|
77
|
+
'There is no valid file in "%r". Please check the path.' % path_str)
|
|
78
|
+
raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
|
|
79
|
+
return input_path_list
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def check_output_path_valid(path: str, exist: bool, path_type: PathType = PathType.Directory) -> int:
|
|
83
|
+
"""
|
|
84
|
+
Check output path valid
|
|
85
|
+
:param path: the path to check
|
|
86
|
+
:param exist: the path exist
|
|
87
|
+
:param path_type: the path type
|
|
88
|
+
:return: VectorComparisonErrorCode
|
|
89
|
+
"""
|
|
90
|
+
if os.path.islink(os.path.abspath(path)):
|
|
91
|
+
log.print_error_log('The path "%r" is a softlink, not permitted.' % path)
|
|
92
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
93
|
+
output_path = os.path.realpath(path)
|
|
94
|
+
if path_type == PathType.File:
|
|
95
|
+
output_path = os.path.dirname(output_path)
|
|
96
|
+
if not os.path.exists(output_path):
|
|
97
|
+
try:
|
|
98
|
+
os.makedirs(output_path, mode=0o700)
|
|
99
|
+
except OSError as ex:
|
|
100
|
+
log.print_error_log('Failed to create "%r". %s' % (output_path, str(ex)))
|
|
101
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
102
|
+
finally:
|
|
103
|
+
pass
|
|
104
|
+
return check_path_valid(path, exist, True, path_type)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def check_exec_file_valid(exist_path: str) -> int:
|
|
108
|
+
"""
|
|
109
|
+
Check exec path valid
|
|
110
|
+
:param path: the path to check
|
|
111
|
+
:return: VectorComparisonErrorCode
|
|
112
|
+
"""
|
|
113
|
+
file_stat = os.stat(exist_path)
|
|
114
|
+
if file_stat.st_uid != 0 and file_stat.st_uid != os.getuid():
|
|
115
|
+
log.print_error_log('You are not the owner of the path "%r".' % exist_path)
|
|
116
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
117
|
+
|
|
118
|
+
if file_stat.st_gid != 0 and file_stat.st_gid not in os.getgroups():
|
|
119
|
+
log.print_error_log('You are not in the group of the path "%r".' % exist_path)
|
|
120
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
121
|
+
|
|
122
|
+
ret = check_others_permission(exist_path)
|
|
123
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
124
|
+
raise CompareError(ret)
|
|
125
|
+
|
|
126
|
+
return check_path_valid(exist_path, True, False, PathType.File)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def check_path_all_file_exec_valid(custom_path):
|
|
130
|
+
# all file and dir in custom path check safe
|
|
131
|
+
file_count = 0
|
|
132
|
+
for up_dir, dirs, files in os.walk(custom_path):
|
|
133
|
+
if len(up_dir.split(os.path.sep)) > ConstManager.MAX_WALK_DIR_DEEP_NUM:
|
|
134
|
+
raise CompareError(f"custom path is deep then {ConstManager.MAX_WALK_DIR_DEEP_NUM}")
|
|
135
|
+
|
|
136
|
+
for name in files:
|
|
137
|
+
sub_file_path = os.path.join(up_dir, name)
|
|
138
|
+
ret = check_exec_file_valid(sub_file_path)
|
|
139
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
140
|
+
raise CompareError(ret)
|
|
141
|
+
utils.check_file_size(sub_file_path, ConstManager.ONE_MB, is_raise=True)
|
|
142
|
+
file_count = file_count + 1
|
|
143
|
+
if file_count > ConstManager.MAX_WALK_FILE_NUM:
|
|
144
|
+
raise CompareError(f"file count in custom path is more then {ConstManager.MAX_WALK_FILE_NUM}")
|
|
145
|
+
|
|
146
|
+
for name in dirs:
|
|
147
|
+
sub_dir_path = os.path.join(up_dir, name)
|
|
148
|
+
ret = check_path_valid(sub_dir_path, True, False, PathType.Directory)
|
|
149
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
150
|
+
raise CompareError(ret)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def check_name_valid(name: str) -> int:
|
|
154
|
+
"""
|
|
155
|
+
Check name valid
|
|
156
|
+
:param name: the name to check
|
|
157
|
+
:return: VectorComparisonErrorCode
|
|
158
|
+
"""
|
|
159
|
+
if name == "":
|
|
160
|
+
log.print_error_log("The parameter is null.")
|
|
161
|
+
return CompareError.MSACCUCMP_INVALID_PARAM_ERROR
|
|
162
|
+
name_pattern = re.compile(RegManager.SUPPORT_PATH_PATTERN)
|
|
163
|
+
match = name_pattern.match(name)
|
|
164
|
+
if match is None:
|
|
165
|
+
log.print_only_support_error('name', name, '"A-Za-z0-9_\\./:()=-"')
|
|
166
|
+
return CompareError.MSACCUCMP_INVALID_PARAM_ERROR
|
|
167
|
+
return CompareError.MSACCUCMP_NONE_ERROR
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def is_same_owner(path) -> bool:
|
|
171
|
+
file_stat = os.stat(path)
|
|
172
|
+
if os.getuid() != 0 and file_stat.st_uid != os.getuid():
|
|
173
|
+
return False
|
|
174
|
+
return True
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def is_group_and_others_writable(path) -> bool:
|
|
178
|
+
file_stat = os.stat(path)
|
|
179
|
+
file_mode = file_stat.st_mode
|
|
180
|
+
if bool(file_mode & stat.S_IWGRP) or bool(file_mode & stat.S_IWOTH):
|
|
181
|
+
return True
|
|
182
|
+
return False
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def is_parent_dir_has_right_permission(path) -> bool:
|
|
186
|
+
if not is_same_owner(path) or is_group_and_others_writable(path):
|
|
187
|
+
return False
|
|
188
|
+
return True
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def check_path_valid(path: str, exist: bool, have_write_permission: bool = False,
|
|
192
|
+
path_type: PathType = PathType.All) -> int:
|
|
193
|
+
"""
|
|
194
|
+
Check path valid
|
|
195
|
+
:param path: the path to check
|
|
196
|
+
:param exist: the path exist
|
|
197
|
+
:param have_write_permission: have write permission
|
|
198
|
+
:param path_type: the path type
|
|
199
|
+
:return: VectorComparisonErrorCode
|
|
200
|
+
"""
|
|
201
|
+
if path == "":
|
|
202
|
+
log.print_error_log("The path is null.")
|
|
203
|
+
return CompareError.MSACCUCMP_INVALID_PARAM_ERROR
|
|
204
|
+
|
|
205
|
+
ret = check_name_valid(path)
|
|
206
|
+
if ret != CompareError.MSACCUCMP_NONE_ERROR:
|
|
207
|
+
return ret
|
|
208
|
+
if os.path.islink(os.path.abspath(path)):
|
|
209
|
+
log.print_error_log('The path "%r" is a softlink, not permitted.' % path)
|
|
210
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
211
|
+
|
|
212
|
+
exist_path = os.path.realpath(path)
|
|
213
|
+
if not exist:
|
|
214
|
+
exist_path = os.path.dirname(exist_path)
|
|
215
|
+
|
|
216
|
+
if not os.path.exists(exist_path):
|
|
217
|
+
log.print_error_log('The path "%r" does not exist.' % exist_path)
|
|
218
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
219
|
+
|
|
220
|
+
if not os.access(exist_path, os.R_OK):
|
|
221
|
+
log.print_error_log('You do not have permission to read the path "%r".' % exist_path)
|
|
222
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
223
|
+
|
|
224
|
+
if have_write_permission and not os.access(exist_path, os.W_OK):
|
|
225
|
+
log.print_error_log('You do not have permission to write the path "%r".' % exist_path)
|
|
226
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
227
|
+
|
|
228
|
+
file_stat = os.stat(exist_path)
|
|
229
|
+
if os.getuid() != 0 and file_stat.st_uid != os.getuid() and file_stat.st_gid not in os.getgroups():
|
|
230
|
+
log.print_error_log('You are neither the owner nor in the group of the path "%r".' % exist_path)
|
|
231
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
232
|
+
|
|
233
|
+
if bool(file_stat.st_mode & stat.S_IWGRP):
|
|
234
|
+
log.print_warn_log(f"The file path is writable by group: {exist_path}.")
|
|
235
|
+
|
|
236
|
+
if bool(file_stat.st_mode & stat.S_IWOTH):
|
|
237
|
+
log.print_error_log(f"The file must not allow write access to others. File path: {exist_path}.")
|
|
238
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
parent_directory = os.path.dirname(os.path.abspath(path))
|
|
242
|
+
if not have_write_permission and not is_parent_dir_has_right_permission(parent_directory):
|
|
243
|
+
log.print_warn_log('The permissions of the parent directory of the current file are incorrect.')
|
|
244
|
+
|
|
245
|
+
return _check_path_file_or_directory(path, path_type)
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def check_write_path_secure(path: str):
|
|
249
|
+
if os.path.islink(path):
|
|
250
|
+
os.unlink(path)
|
|
251
|
+
if os.path.exists(path):
|
|
252
|
+
os.remove(path)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def check_others_permission(exist_path: str) -> int:
|
|
256
|
+
"""
|
|
257
|
+
Check others permission
|
|
258
|
+
:param path: the path to check
|
|
259
|
+
:return: VectorComparisonErrorCode
|
|
260
|
+
"""
|
|
261
|
+
file_stat = os.stat(exist_path)
|
|
262
|
+
file_mode = file_stat.st_mode
|
|
263
|
+
# 判断others或group权限是否有写权限
|
|
264
|
+
if file_stat.st_gid != 0 and bool(file_mode & stat.S_IWGRP):
|
|
265
|
+
log.print_error_log(f"File {exist_path} is not safe. Groups have writing permission to this file.")
|
|
266
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
267
|
+
|
|
268
|
+
if bool(file_mode & stat.S_IWOTH):
|
|
269
|
+
log.print_error_log("File %r is dangerous. Others have writing "
|
|
270
|
+
"permission to this file. Please use chmod to dismiss the writing permission." % exist_path)
|
|
271
|
+
return CompareError.MSACCUCMP_INVALID_PATH_ERROR
|
|
272
|
+
|
|
273
|
+
return CompareError.MSACCUCMP_NONE_ERROR
|
|
274
|
+
|
|
@@ -0,0 +1,98 @@
|
|
|
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 file mainly involves the reg const.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import re
|
|
24
|
+
|
|
25
|
+
from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class RegManager:
|
|
29
|
+
"""
|
|
30
|
+
The class for reg manager
|
|
31
|
+
"""
|
|
32
|
+
NUMBER_PATTERN = r"^[0-9]+$"
|
|
33
|
+
|
|
34
|
+
# mapping of built in algorithms to numbers, the indexes correspond one-to-one to the list above
|
|
35
|
+
BUILTIN_ALGORITHM_INDEX_PATTERN = r"^([0-" + str(len(ConstManager.BUILT_IN_ALGORITHM) - 1) + "])$"
|
|
36
|
+
|
|
37
|
+
# Standard
|
|
38
|
+
STANDARD_DUMP_PATTERN = r"^([A-Za-z0-9_-]+\.[0-9]+)\.[0-9]{1,255}\.pb$"
|
|
39
|
+
|
|
40
|
+
# Qunat
|
|
41
|
+
QUANT_DUMP_PATTERN = r"^([A-Za-z0-9_-]+\.[0-9]+)\.[0-9]{1,255}\.quant$"
|
|
42
|
+
|
|
43
|
+
# Offline
|
|
44
|
+
OFFLINE_DUMP_PATTERN = r"^[A-Za-z0-9_-]+\.([A-Za-z0-9_-]+)\.[0-9]+" \
|
|
45
|
+
r"(\.[0-9]+)?\.[0-9]{1,255}(\.[0-9]+\.[0-9]+\.[0-9]+)?(\.[0-9]+)?"
|
|
46
|
+
OFFLINE_NUMPY_PATTERN = r"^([A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[0-9]+" \
|
|
47
|
+
r"\.[0-9]{1,255})\.[0-9]+\.\b(npy|data|bin|txt)\b$"
|
|
48
|
+
OFFLINE_FFTS_DUMP_PATTERN = r"^[A-Za-z0-9_-]+\.([A-Za-z0-9_-]+)\.[0-9]+" \
|
|
49
|
+
r"(\.[0-9]+)?\.[0-9]{1,255}\.[0-9]+\.[0-9]+\.[0-9]+"
|
|
50
|
+
|
|
51
|
+
# Standard
|
|
52
|
+
NUMPY_DUMP_PATTERN = r"^([\.A-Za-z0-9_-]+\.[0-9]+)\.[0-9]{1,255}\.npy$"
|
|
53
|
+
|
|
54
|
+
STANDARD_NUMPY_PATTERN = r"^([\.A-Za-z0-9_-]+\.[0-9]+\.[0-9]{1,255})\.npy$"
|
|
55
|
+
|
|
56
|
+
SUPPORT_SHAPE_PATTERN = r"^([0-9]+,)+[0-9]+$"
|
|
57
|
+
|
|
58
|
+
# matching `convert_xxx_to_yyy.py`, the `{1,128}` is used for limiting string length, bypassing ReDoS attack.
|
|
59
|
+
FORMAT_CONVERT_FILE_NAME_PATTERN = r"^(convert_[A-Za-z0-9_]{1,128}_to_[A-Za-z0-9_]{1,128})\.py[c]?$"
|
|
60
|
+
|
|
61
|
+
SUPPORT_PATH_PATTERN = r"^[A-Za-z0-9_\./:()=\\-]+$"
|
|
62
|
+
|
|
63
|
+
FFTS_MANUAL_FIELD_PATTERN = r"lxslice[0-9]+"
|
|
64
|
+
|
|
65
|
+
LXSLICE_PATTERN = r"_lxslice[0-9]+"
|
|
66
|
+
|
|
67
|
+
SGT_FLIED_PATTERN = r"sgt_graph_[0-9]+"
|
|
68
|
+
|
|
69
|
+
@staticmethod
|
|
70
|
+
def match_pattern(pattern: str, value: any) -> bool:
|
|
71
|
+
"""
|
|
72
|
+
The value match pattern or not
|
|
73
|
+
:param pattern: the pattern
|
|
74
|
+
:param value: the value to match
|
|
75
|
+
:return bool
|
|
76
|
+
"""
|
|
77
|
+
re_pattern = re.compile(pattern)
|
|
78
|
+
match = re_pattern.match(value)
|
|
79
|
+
return match is not None
|
|
80
|
+
|
|
81
|
+
@staticmethod
|
|
82
|
+
def match_group(pattern: str, value: any) -> (bool, any):
|
|
83
|
+
"""
|
|
84
|
+
The value match pattern or not
|
|
85
|
+
:param pattern: the pattern
|
|
86
|
+
:param value: the value to match
|
|
87
|
+
:return bool, match
|
|
88
|
+
"""
|
|
89
|
+
re_pattern = re.compile(pattern)
|
|
90
|
+
match = re_pattern.match(value)
|
|
91
|
+
if match is not None:
|
|
92
|
+
return True, match
|
|
93
|
+
return False, match
|
|
94
|
+
|
|
95
|
+
@staticmethod
|
|
96
|
+
def get_matchs(pattern: str, value: any) -> list:
|
|
97
|
+
re_pattern = re.compile(pattern)
|
|
98
|
+
return [match for match in re.finditer(re_pattern, value)]
|
|
@@ -0,0 +1,279 @@
|
|
|
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 file mainly involves the tlv info parse function.
|
|
21
|
+
|
|
22
|
+
How to use:
|
|
23
|
+
|
|
24
|
+
1、Tag map:
|
|
25
|
+
|
|
26
|
+
TLV_CONFIG_TAB = [
|
|
27
|
+
{'Name': 'data_type', 'TLV_Type': 'ATOM', 'Ele_Type': 'INT32'},
|
|
28
|
+
{'Name': 'data_id', 'TLV_Type': 'ATOM', 'Ele_Type': 'INT32'},
|
|
29
|
+
{'Name': 'shape_dims', 'TLV_Type': 'TLNV', 'Ele_Type': 'UINT64', 'Tag': 1}
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
2、parse an bytes:
|
|
33
|
+
from msprobe.msaccucmp.cmp_utils.tlv_parse import TLV
|
|
34
|
+
|
|
35
|
+
class ParseInfo:
|
|
36
|
+
def __init__(self):
|
|
37
|
+
self.data_type = 0
|
|
38
|
+
self.data_id = 0
|
|
39
|
+
self.shape_dims = []
|
|
40
|
+
|
|
41
|
+
aux = b'0x5a\0x5a\0x5a\0x5a' + \
|
|
42
|
+
b'0x11\0x11\0x11\0x11' + \
|
|
43
|
+
b'0x01\0x00\0x00\0x00' + \
|
|
44
|
+
b'0x10\0x00\0x00\0x00' + \
|
|
45
|
+
b'0x0a\0x0a\0x0a\0x0b\0x0b\0x0b\0x0b\0x0b' + \
|
|
46
|
+
b'0x0b\0x0b\0x0b\0x0b\0x0b\0x0b\0x0b\0x0b'
|
|
47
|
+
|
|
48
|
+
input = ParseInfo()
|
|
49
|
+
tlv = TLV(TLV_CONFIG_TAB)
|
|
50
|
+
aux, input = tlv.parse_tlv_by_cfg_tab(aux, input)
|
|
51
|
+
|
|
52
|
+
"""
|
|
53
|
+
import struct
|
|
54
|
+
|
|
55
|
+
from msprobe.msaccucmp.cmp_utils import log
|
|
56
|
+
from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
|
|
57
|
+
|
|
58
|
+
CHAR_SIZE = 1
|
|
59
|
+
INT16_SIZE = 2
|
|
60
|
+
UINT16_SIZE = 2
|
|
61
|
+
INT32_SIZE = 4
|
|
62
|
+
UINT32_SIZE = 4
|
|
63
|
+
INT64_SIZE = 8
|
|
64
|
+
UINT64_SIZE = 8
|
|
65
|
+
|
|
66
|
+
_UNPACK_FORMAT = {
|
|
67
|
+
'CHAR': {'FMT': 's', 'SIZE': 1},
|
|
68
|
+
'UINT16': {'FMT': 'H', 'SIZE': 2},
|
|
69
|
+
'INT16': {'FMT': 'h', 'SIZE': 2},
|
|
70
|
+
'UINT32': {'FMT': 'I', 'SIZE': 4},
|
|
71
|
+
'INT32': {'FMT': 'i', 'SIZE': 4},
|
|
72
|
+
'UINT64': {'FMT': 'Q', 'SIZE': 8},
|
|
73
|
+
'INT64': {'FMT': 'q', 'SIZE': 8},
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
TLV_TYPE = ['ATOM', 'TLV', 'TLNV', 'NV']
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class NestedObj:
|
|
80
|
+
pass
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class TLV:
|
|
84
|
+
def __init__(self, tlv_tab, tag_type="UINT32", len_type="UINT32") -> None:
|
|
85
|
+
self.tlv_tab = tlv_tab
|
|
86
|
+
self.tag_type = tag_type
|
|
87
|
+
self.len_type = len_type
|
|
88
|
+
|
|
89
|
+
@staticmethod
|
|
90
|
+
def _unpack_single_element(aux: bytes, ele_type) -> (bytes, any):
|
|
91
|
+
type_para = _UNPACK_FORMAT.get(ele_type)
|
|
92
|
+
ele_fmt, ele_size = type_para.get('FMT'), type_para.get('SIZE')
|
|
93
|
+
|
|
94
|
+
if len(aux) < ele_size:
|
|
95
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
|
|
96
|
+
try:
|
|
97
|
+
value = struct.unpack(ele_fmt, aux[:ele_size])[0]
|
|
98
|
+
except struct.error as error:
|
|
99
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR) from error
|
|
100
|
+
|
|
101
|
+
if ele_type == 'CHAR' and isinstance(value, bytes):
|
|
102
|
+
value = value.decode(encoding="utf-8")
|
|
103
|
+
|
|
104
|
+
return aux[ele_size:], value
|
|
105
|
+
|
|
106
|
+
@staticmethod
|
|
107
|
+
def _check_tl(tag, length, tlv_cfg):
|
|
108
|
+
tag_in_cfg, ele_type = tlv_cfg.get("Tag"), tlv_cfg.get('Ele_Type')
|
|
109
|
+
|
|
110
|
+
if tag_in_cfg != tag:
|
|
111
|
+
log.print_error_log(
|
|
112
|
+
'Failed to parse of tag_in_cfg: %s, tag_in_stream: %s.' % (tag_in_cfg, tag))
|
|
113
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
|
|
114
|
+
|
|
115
|
+
if not isinstance(ele_type, list):
|
|
116
|
+
ele_size = _UNPACK_FORMAT.get(ele_type).get('SIZE')
|
|
117
|
+
if length < ele_size:
|
|
118
|
+
log.print_error_log(
|
|
119
|
+
'Failed to parse of tag: %s. length:%d < single ele_size:%d' % (tag_in_cfg, length, ele_size))
|
|
120
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
|
|
121
|
+
|
|
122
|
+
def parse_tlv_by_cfg_tab(self, content: bytes, x: object) -> (bytes, object):
|
|
123
|
+
aux = content
|
|
124
|
+
self._check_cfg_tab(self.tlv_tab)
|
|
125
|
+
|
|
126
|
+
for tlv_cfg in self.tlv_tab:
|
|
127
|
+
tlv_type = tlv_cfg.get('TLV_Type')
|
|
128
|
+
if tlv_type == 'ATOM':
|
|
129
|
+
aux, x = self._unpack_atom_value(aux, tlv_cfg, x)
|
|
130
|
+
elif tlv_type == 'TLV':
|
|
131
|
+
aux, x = self._unpack_tlv_value(aux, tlv_cfg, x)
|
|
132
|
+
elif tlv_type == 'TLNV':
|
|
133
|
+
aux, x = self._unpack_tlnv_value(aux, tlv_cfg, x)
|
|
134
|
+
elif tlv_type == 'NV':
|
|
135
|
+
num_attr_name = tlv_cfg.get('N')
|
|
136
|
+
num = getattr(x, num_attr_name)
|
|
137
|
+
aux, x = self._unpack_nv_value(aux, tlv_cfg, x, num)
|
|
138
|
+
return aux, x
|
|
139
|
+
|
|
140
|
+
def _check_cfg_tab(self, tlv_tab):
|
|
141
|
+
for tlv_cfg in tlv_tab:
|
|
142
|
+
tlv_type, ele_type = tlv_cfg.get('TLV_Type'), tlv_cfg.get('Ele_Type')
|
|
143
|
+
if tlv_type not in TLV_TYPE:
|
|
144
|
+
log.print_error_log('%s invalid tlv_type: %s.' % (tlv_cfg.get('Name'), tlv_type))
|
|
145
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
|
|
146
|
+
|
|
147
|
+
# Nested tlv
|
|
148
|
+
if isinstance(ele_type, list):
|
|
149
|
+
self._check_cfg_tab(ele_type)
|
|
150
|
+
elif _UNPACK_FORMAT.get(ele_type) is None:
|
|
151
|
+
log.print_error_log('invalid ele_type: %s.' % ele_type)
|
|
152
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
|
|
153
|
+
|
|
154
|
+
if tlv_type == 'NV':
|
|
155
|
+
num_attr_name = tlv_cfg.get('N')
|
|
156
|
+
if num_attr_name is None:
|
|
157
|
+
log.print_error_log("is tlv_tpye is NV, 'N' must be given!")
|
|
158
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
|
|
159
|
+
return
|
|
160
|
+
|
|
161
|
+
def _unpack_atom_value(self, aux: bytes, tlv_cfg, x: object) -> (bytes, object):
|
|
162
|
+
ele_type, ele_name = tlv_cfg.get('Ele_Type'), tlv_cfg.get('Name')
|
|
163
|
+
|
|
164
|
+
if isinstance(ele_type, list):
|
|
165
|
+
# parse Nested tlv value
|
|
166
|
+
sub_tlv_tab = ele_type
|
|
167
|
+
sub_tlv = TLV(sub_tlv_tab)
|
|
168
|
+
nested_obj = NestedObj()
|
|
169
|
+
aux, value = sub_tlv.parse_tlv_by_cfg_tab(aux, nested_obj)
|
|
170
|
+
else:
|
|
171
|
+
try:
|
|
172
|
+
# parse single element
|
|
173
|
+
aux, value = self._unpack_single_element(aux, ele_type)
|
|
174
|
+
except CompareError as error:
|
|
175
|
+
log.print_error_log('Failed to parse of ele name: %s, value_type: %s, '
|
|
176
|
+
'Please check the dump file:%s.' % (tlv_cfg.get('Name'), ele_type, str(error)))
|
|
177
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR) from error
|
|
178
|
+
|
|
179
|
+
setattr(x, ele_name, value)
|
|
180
|
+
return aux, x
|
|
181
|
+
|
|
182
|
+
def _parse_tag_len(self, aux: bytes) -> (bytes, any, any):
|
|
183
|
+
aux, tag = self._unpack_single_element(aux, self.tag_type)
|
|
184
|
+
aux, length = self._unpack_single_element(aux, self.len_type)
|
|
185
|
+
return aux, tag, length
|
|
186
|
+
|
|
187
|
+
def _unpack_tlv_value(self, aux: bytes, tlv_cfg, x: object) -> (bytes, object):
|
|
188
|
+
ele_type, ele_name = tlv_cfg.get('Ele_Type'), tlv_cfg.get('Name')
|
|
189
|
+
|
|
190
|
+
# tag, len
|
|
191
|
+
try:
|
|
192
|
+
aux_try, tag, length = self._parse_tag_len(aux)
|
|
193
|
+
except CompareError:
|
|
194
|
+
setattr(x, ele_name, None)
|
|
195
|
+
log.print_info_log('Failed to parse of ele name: %s, ele_type: %s' % (ele_name, ele_type))
|
|
196
|
+
return aux, x
|
|
197
|
+
try:
|
|
198
|
+
self._check_tl(tag, length, tlv_cfg)
|
|
199
|
+
except CompareError:
|
|
200
|
+
log.print_info_log('Failed to parse of ele name: %s, ele_type: %s' % (ele_name, ele_type))
|
|
201
|
+
setattr(x, ele_name, None)
|
|
202
|
+
return aux, x
|
|
203
|
+
|
|
204
|
+
new_aux, new_x = self._unpack_atom_value(aux_try, tlv_cfg, x)
|
|
205
|
+
return new_aux, new_x
|
|
206
|
+
|
|
207
|
+
def _unpack_tlnv_value(self, aux: bytes, tlv_cfg, x: object) -> (bytes, object):
|
|
208
|
+
tag_in_cfg, ele_type, ele_name = tlv_cfg.get("Tag"), tlv_cfg.get('Ele_Type'), tlv_cfg.get('Name')
|
|
209
|
+
|
|
210
|
+
# tag, len
|
|
211
|
+
try:
|
|
212
|
+
aux_try, tag, length = self._parse_tag_len(aux)
|
|
213
|
+
except CompareError:
|
|
214
|
+
setattr(x, ele_name, None)
|
|
215
|
+
log.print_info_log('skip to parse tlv of ele name: %s, ele_type: %s' % (ele_name, ele_type))
|
|
216
|
+
return aux, x
|
|
217
|
+
try:
|
|
218
|
+
self._check_tl(tag, length, tlv_cfg)
|
|
219
|
+
except CompareError:
|
|
220
|
+
log.print_info_log('skip to parse tlv of ele name: %s, ele_type: %s' % (ele_name, ele_type))
|
|
221
|
+
setattr(x, ele_name, None)
|
|
222
|
+
return aux, x
|
|
223
|
+
|
|
224
|
+
aux = aux_try
|
|
225
|
+
|
|
226
|
+
# get list num of value
|
|
227
|
+
if _UNPACK_FORMAT.get(ele_type) is not None:
|
|
228
|
+
ele_size = _UNPACK_FORMAT.get(ele_type).get('SIZE')
|
|
229
|
+
ele_num = int(length / ele_size)
|
|
230
|
+
|
|
231
|
+
try:
|
|
232
|
+
aux, x = self._unpack_nv_value(aux, tlv_cfg, x, ele_num)
|
|
233
|
+
except CompareError as error:
|
|
234
|
+
log.print_error_log('Failed to parse of ele name: %s, value_type: %s, '
|
|
235
|
+
'Please check the dump file:%s.' % (tlv_cfg.get('Name'), ele_type, str(error)))
|
|
236
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR) from error
|
|
237
|
+
|
|
238
|
+
elif isinstance(ele_type, list):
|
|
239
|
+
value = []
|
|
240
|
+
sub_aux = aux[:length]
|
|
241
|
+
|
|
242
|
+
while (len(sub_aux) > 0):
|
|
243
|
+
# Nested tlv
|
|
244
|
+
sub_tlv_tab = ele_type
|
|
245
|
+
sub_tlv, nested_obj = TLV(sub_tlv_tab), NestedObj()
|
|
246
|
+
sub_aux, single_value = sub_tlv.parse_tlv_by_cfg_tab(sub_aux, nested_obj)
|
|
247
|
+
value.append(single_value)
|
|
248
|
+
|
|
249
|
+
setattr(x, tlv_cfg.get('Name'), value)
|
|
250
|
+
aux = aux[length:]
|
|
251
|
+
return aux, x
|
|
252
|
+
|
|
253
|
+
def _unpack_nv_value(self, aux: bytes, tlv_cfg, x: object, ele_num) -> (bytes, object):
|
|
254
|
+
ele_type, ele_name = tlv_cfg.get('Ele_Type'), tlv_cfg.get('Name')
|
|
255
|
+
value = []
|
|
256
|
+
|
|
257
|
+
for _ in range(ele_num):
|
|
258
|
+
if isinstance(ele_type, list):
|
|
259
|
+
# Nested tlv
|
|
260
|
+
sub_tlv_tab = ele_type
|
|
261
|
+
sub_tlv, nested_obj = TLV(sub_tlv_tab), NestedObj()
|
|
262
|
+
aux, single_value = sub_tlv.parse_tlv_by_cfg_tab(aux, nested_obj)
|
|
263
|
+
value.append(single_value)
|
|
264
|
+
else:
|
|
265
|
+
try:
|
|
266
|
+
# single element
|
|
267
|
+
aux, single_value = self._unpack_single_element(aux, ele_type)
|
|
268
|
+
except CompareError as error:
|
|
269
|
+
log.print_error_log('Failed to parse of ele name: %s, value_type: %s, '
|
|
270
|
+
'Please check the dump file:%s.' % (tlv_cfg.get('Name'), ele_type, str(error)))
|
|
271
|
+
raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR) from error
|
|
272
|
+
value.append(single_value)
|
|
273
|
+
|
|
274
|
+
if ele_type == 'CHAR' and isinstance(value, list):
|
|
275
|
+
value_str = "".join(value)
|
|
276
|
+
setattr(x, tlv_cfg.get('Name'), value_str)
|
|
277
|
+
else:
|
|
278
|
+
setattr(x, tlv_cfg.get('Name'), value)
|
|
279
|
+
return aux, x
|