mindstudio-probe 8.3.3__py3-none-any.whl → 26.0.0a1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mindstudio_probe-8.3.3.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.3.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 +28 -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.3.dist-info/LICENSE +0 -201
- mindstudio_probe-8.3.3.dist-info/RECORD +0 -491
- mindstudio_probe-8.3.3.dist-info/entry_points.txt +0 -2
- mindstudio_probe-8.3.3.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
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2025, Huawei Technologies Co., Ltd.
|
|
2
|
-
# All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
# you may not use this file except in compliance with the License.
|
|
6
|
-
# You may obtain a copy of the License at
|
|
7
|
-
#
|
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
#
|
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
# See the License for the specific language governing permissions and
|
|
14
|
-
# limitations under the License.
|
|
15
|
-
|
|
16
|
-
import os
|
|
17
|
-
import re
|
|
18
|
-
import subprocess
|
|
19
|
-
import sys
|
|
20
|
-
import time
|
|
21
|
-
import zlib
|
|
22
|
-
from collections import namedtuple
|
|
23
|
-
|
|
24
|
-
import numpy as np
|
|
25
|
-
from msprobe.core.common.const import FileCheckConst
|
|
26
|
-
from msprobe.core.common.file_utils import change_mode, check_other_user_writable, \
|
|
27
|
-
check_path_executable, check_path_owner_consistent
|
|
28
|
-
from msprobe.core.common.file_utils import check_file_or_directory_path, remove_path, check_file_type, os_walk_for_files
|
|
29
|
-
from msprobe.pytorch.common.log import logger
|
|
30
|
-
from msprobe.pytorch.parse_tool.lib.config import Const
|
|
31
|
-
from msprobe.pytorch.parse_tool.lib.file_desc import DumpDecodeFileDesc, FileDesc
|
|
32
|
-
from msprobe.pytorch.parse_tool.lib.parse_exception import ParseException
|
|
33
|
-
|
|
34
|
-
try:
|
|
35
|
-
from rich.traceback import install
|
|
36
|
-
from rich.panel import Panel
|
|
37
|
-
from rich.table import Table
|
|
38
|
-
from rich import print as rich_print
|
|
39
|
-
from rich.columns import Columns
|
|
40
|
-
except ImportError as err:
|
|
41
|
-
install = None
|
|
42
|
-
Panel = None
|
|
43
|
-
Table = None
|
|
44
|
-
Columns = None
|
|
45
|
-
rich_print = None
|
|
46
|
-
logger.warning(
|
|
47
|
-
"Failed to import rich, Some features may not be available. Please run 'pip install rich' to fix it.")
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class Util:
|
|
51
|
-
def __init__(self):
|
|
52
|
-
self.ms_accu_cmp = None
|
|
53
|
-
self.log = logger
|
|
54
|
-
self.python = sys.executable
|
|
55
|
-
|
|
56
|
-
@staticmethod
|
|
57
|
-
def print(content):
|
|
58
|
-
rich_print(content)
|
|
59
|
-
|
|
60
|
-
@staticmethod
|
|
61
|
-
def path_strip(path):
|
|
62
|
-
return path.strip("'").strip('"')
|
|
63
|
-
|
|
64
|
-
@staticmethod
|
|
65
|
-
def check_executable_file(path):
|
|
66
|
-
check_path_owner_consistent(path)
|
|
67
|
-
check_other_user_writable(path)
|
|
68
|
-
check_path_executable(path)
|
|
69
|
-
|
|
70
|
-
@staticmethod
|
|
71
|
-
def get_subdir_count(directory):
|
|
72
|
-
subdir_count = 0
|
|
73
|
-
check_file_or_directory_path(directory, isdir=True)
|
|
74
|
-
for _, dirs, _ in os.walk(directory):
|
|
75
|
-
subdir_count += len(dirs)
|
|
76
|
-
break
|
|
77
|
-
return subdir_count
|
|
78
|
-
|
|
79
|
-
@staticmethod
|
|
80
|
-
def get_subfiles_count(directory):
|
|
81
|
-
files = os_walk_for_files(directory, Const.MAX_TRAVERSAL_DEPTH)
|
|
82
|
-
return len(files)
|
|
83
|
-
|
|
84
|
-
@staticmethod
|
|
85
|
-
def get_sorted_subdirectories_names(directory):
|
|
86
|
-
subdirectories = []
|
|
87
|
-
for item in os.listdir(directory):
|
|
88
|
-
item_path = os.path.join(directory, item)
|
|
89
|
-
if os.path.isdir(item_path):
|
|
90
|
-
subdirectories.append(item)
|
|
91
|
-
return sorted(subdirectories)
|
|
92
|
-
|
|
93
|
-
@staticmethod
|
|
94
|
-
def get_sorted_files_names(directory):
|
|
95
|
-
files = []
|
|
96
|
-
for item in os.listdir(directory):
|
|
97
|
-
item_path = os.path.join(directory, item)
|
|
98
|
-
if os.path.isfile(item_path):
|
|
99
|
-
files.append(item)
|
|
100
|
-
return sorted(files)
|
|
101
|
-
|
|
102
|
-
@staticmethod
|
|
103
|
-
def check_npy_files_valid_in_dir(dir_path):
|
|
104
|
-
for file_name in os.listdir(dir_path):
|
|
105
|
-
file_path = os.path.join(dir_path, file_name)
|
|
106
|
-
check_file_or_directory_path(file_path)
|
|
107
|
-
_, file_extension = os.path.splitext(file_path)
|
|
108
|
-
if not file_extension == '.npy':
|
|
109
|
-
return False
|
|
110
|
-
return True
|
|
111
|
-
|
|
112
|
-
@staticmethod
|
|
113
|
-
def get_md5_for_numpy(obj):
|
|
114
|
-
np_bytes = obj.tobytes()
|
|
115
|
-
md5_crc = zlib.crc32(np_bytes)
|
|
116
|
-
return f"{md5_crc:08x}"
|
|
117
|
-
|
|
118
|
-
@staticmethod
|
|
119
|
-
def deal_with_dir_or_file_inconsistency(output_path):
|
|
120
|
-
logger.warning(f"Trying to delete {output_path}")
|
|
121
|
-
remove_path(output_path)
|
|
122
|
-
raise ParseException("Inconsistent directory structure or file.")
|
|
123
|
-
|
|
124
|
-
@staticmethod
|
|
125
|
-
def deal_with_value_if_has_zero(data):
|
|
126
|
-
if data.dtype in Const.FLOAT_TYPE:
|
|
127
|
-
zero_mask = (data == 0)
|
|
128
|
-
# 给0的地方加上eps防止除0
|
|
129
|
-
data[zero_mask] += np.finfo(data.dtype).eps
|
|
130
|
-
else:
|
|
131
|
-
# int type + float eps 会报错,所以这里要强转
|
|
132
|
-
data = data.astype(float)
|
|
133
|
-
zero_mask = (data == 0)
|
|
134
|
-
data[zero_mask] += np.finfo(float).eps
|
|
135
|
-
return data
|
|
136
|
-
|
|
137
|
-
@staticmethod
|
|
138
|
-
def dir_contains_only(path, endfix):
|
|
139
|
-
files = os_walk_for_files(path, Const.MAX_TRAVERSAL_DEPTH)
|
|
140
|
-
for file in files:
|
|
141
|
-
if not file['file'].endswith(endfix):
|
|
142
|
-
return False
|
|
143
|
-
return True
|
|
144
|
-
|
|
145
|
-
@staticmethod
|
|
146
|
-
def localtime_str():
|
|
147
|
-
return time.strftime("%Y%m%d%H%M%S", time.localtime())
|
|
148
|
-
|
|
149
|
-
@staticmethod
|
|
150
|
-
def change_filemode_safe(path):
|
|
151
|
-
change_mode(path, FileCheckConst.DATA_FILE_AUTHORITY)
|
|
152
|
-
|
|
153
|
-
@staticmethod
|
|
154
|
-
def _gen_npu_dump_convert_file_info(name, match, dir_path):
|
|
155
|
-
return DumpDecodeFileDesc(name, dir_path, int(match.groups()[-4]), op_name=match.group(2),
|
|
156
|
-
op_type=match.group(1), task_id=int(match.group(3)), anchor_type=match.groups()[-3],
|
|
157
|
-
anchor_idx=int(match.groups()[-2]))
|
|
158
|
-
|
|
159
|
-
@staticmethod
|
|
160
|
-
def _gen_numpy_file_info(name, math, dir_path):
|
|
161
|
-
return FileDesc(name, dir_path)
|
|
162
|
-
|
|
163
|
-
def execute_command(self, cmd):
|
|
164
|
-
if not cmd:
|
|
165
|
-
self.log.error("Commond is None")
|
|
166
|
-
return -1
|
|
167
|
-
self.log.info("[RUN CMD]: %s" % cmd)
|
|
168
|
-
cmd = cmd.split(" ")
|
|
169
|
-
complete_process = subprocess.run(cmd, shell=False)
|
|
170
|
-
return complete_process.returncode
|
|
171
|
-
|
|
172
|
-
def print_panel(self, content, title='', fit=True):
|
|
173
|
-
if not Panel:
|
|
174
|
-
self.print(content)
|
|
175
|
-
return
|
|
176
|
-
if fit:
|
|
177
|
-
self.print(Panel.fit(content, title=title))
|
|
178
|
-
else:
|
|
179
|
-
self.print(Panel(content, title=title))
|
|
180
|
-
|
|
181
|
-
def check_msaccucmp(self, target_file):
|
|
182
|
-
if os.path.split(target_file)[-1] != Const.MS_ACCU_CMP_FILE_NAME:
|
|
183
|
-
self.log.error(
|
|
184
|
-
"Check msaccucmp failed in dir %s. This is not a correct msaccucmp file" % target_file)
|
|
185
|
-
raise ParseException(ParseException.PARSE_MSACCUCMP_ERROR)
|
|
186
|
-
result = subprocess.run(
|
|
187
|
-
[self.python, target_file, "--help"], stdout=subprocess.PIPE, shell=False)
|
|
188
|
-
if result.returncode == 0:
|
|
189
|
-
self.log.info("Check [%s] success." % (target_file))
|
|
190
|
-
else:
|
|
191
|
-
self.log.error("Check msaccucmp failed in dir %s" % target_file)
|
|
192
|
-
self.log.error("Please specify a valid msaccucmp.py path or install the cann package")
|
|
193
|
-
raise ParseException(ParseException.PARSE_MSACCUCMP_ERROR)
|
|
194
|
-
return target_file
|
|
195
|
-
|
|
196
|
-
def gen_npy_info_txt(self, source_data):
|
|
197
|
-
(shape, dtype, max_data, min_data, mean) = \
|
|
198
|
-
self.npy_info(source_data)
|
|
199
|
-
return \
|
|
200
|
-
'[Shape: %s] [Dtype: %s] [Max: %s] [Min: %s] [Mean: %s]' % (shape, dtype, max_data, min_data, mean)
|
|
201
|
-
|
|
202
|
-
def list_convert_files(self, path, external_pattern=""):
|
|
203
|
-
return self.list_file_with_pattern(
|
|
204
|
-
path, Const.OFFLINE_DUMP_CONVERT_PATTERN, external_pattern, self._gen_npu_dump_convert_file_info
|
|
205
|
-
)
|
|
206
|
-
|
|
207
|
-
def list_numpy_files(self, path, extern_pattern=''):
|
|
208
|
-
return self.list_file_with_pattern(path, Const.NUMPY_PATTERN, extern_pattern,
|
|
209
|
-
self._gen_numpy_file_info)
|
|
210
|
-
|
|
211
|
-
def create_columns(self, content):
|
|
212
|
-
if not Columns:
|
|
213
|
-
self.log.error("No module named rich, please install it")
|
|
214
|
-
raise ParseException(ParseException.PARSE_NO_MODULE_ERROR)
|
|
215
|
-
return Columns(content)
|
|
216
|
-
|
|
217
|
-
def create_table(self, title, columns):
|
|
218
|
-
if not Table:
|
|
219
|
-
self.log.error("No module named rich, please install it and restart parse tool")
|
|
220
|
-
raise ParseException(ParseException.PARSE_NO_MODULE_ERROR)
|
|
221
|
-
table = Table(title=title)
|
|
222
|
-
for column_name in columns:
|
|
223
|
-
table.add_column(column_name, overflow='fold')
|
|
224
|
-
return table
|
|
225
|
-
|
|
226
|
-
def check_path_valid(self, path):
|
|
227
|
-
path = self.path_strip(path)
|
|
228
|
-
if not path or not os.path.exists(path):
|
|
229
|
-
self.log.error("The path does not exist.")
|
|
230
|
-
raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR)
|
|
231
|
-
isdir = check_file_type(path) == FileCheckConst.DIR
|
|
232
|
-
check_file_or_directory_path(path, isdir=isdir)
|
|
233
|
-
return True
|
|
234
|
-
|
|
235
|
-
def check_files_in_path(self, path):
|
|
236
|
-
if os.path.isdir(path) and len(os.listdir(path)) == 0:
|
|
237
|
-
self.log.error("No files found in path.")
|
|
238
|
-
raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR)
|
|
239
|
-
|
|
240
|
-
def npy_info(self, source_data):
|
|
241
|
-
if isinstance(source_data, np.ndarray):
|
|
242
|
-
data = source_data
|
|
243
|
-
else:
|
|
244
|
-
self.log.error("Invalid data, data is not ndarray")
|
|
245
|
-
raise ParseException(ParseException.PARSE_INVALID_DATA_ERROR)
|
|
246
|
-
if data.dtype == 'object':
|
|
247
|
-
self.log.error("Invalid data, data is object.")
|
|
248
|
-
raise ParseException(ParseException.PARSE_INVALID_DATA_ERROR)
|
|
249
|
-
if np.size(data) == 0:
|
|
250
|
-
self.log.error("Invalid data, data is empty")
|
|
251
|
-
raise ParseException(ParseException.PARSE_INVALID_DATA_ERROR)
|
|
252
|
-
npu_info_result = namedtuple('npu_info_result', ['shape', 'dtype', 'max', 'min', 'mean'])
|
|
253
|
-
res = npu_info_result(data.shape, data.dtype, data.max(), data.min(), data.mean())
|
|
254
|
-
return res
|
|
255
|
-
|
|
256
|
-
def list_file_with_pattern(self, path, pattern, extern_pattern, gen_info_func):
|
|
257
|
-
self.check_path_valid(path)
|
|
258
|
-
file_list = {}
|
|
259
|
-
re_pattern = re.compile(pattern)
|
|
260
|
-
files = os_walk_for_files(path, Const.MAX_TRAVERSAL_DEPTH)
|
|
261
|
-
for file in files:
|
|
262
|
-
name = file["file"]
|
|
263
|
-
match = re_pattern.match(name)
|
|
264
|
-
if not match:
|
|
265
|
-
continue
|
|
266
|
-
if extern_pattern != '' and re_pattern.match(extern_pattern) and not name.startswith(extern_pattern):
|
|
267
|
-
continue
|
|
268
|
-
file_list[name] = gen_info_func(name, match, file["root"])
|
|
269
|
-
return file_list
|
|
270
|
-
|
|
271
|
-
def check_file_path_format(self, path, suffix):
|
|
272
|
-
if os.path.isfile(path):
|
|
273
|
-
if not path.endswith(suffix):
|
|
274
|
-
self.log.error("%s is not a %s file." % (path, suffix))
|
|
275
|
-
raise ParseException(ParseException.PARSE_INVALID_FILE_FORMAT_ERROR)
|
|
276
|
-
elif os.path.isdir(path):
|
|
277
|
-
self.log.error("Please specify a single file path")
|
|
278
|
-
raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR)
|
|
279
|
-
else:
|
|
280
|
-
self.log.error("The file path %s is invalid" % path)
|
|
281
|
-
raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR)
|
|
282
|
-
|
|
283
|
-
def check_str_param(self, param):
|
|
284
|
-
if len(param) > Const.FILE_NAME_LENGTH:
|
|
285
|
-
self.log.error('The parameter length exceeds limit')
|
|
286
|
-
raise ParseException(ParseException.PARSE_INVALID_PARAM_ERROR)
|
|
287
|
-
if not re.match(Const.FILE_PATTERN, param):
|
|
288
|
-
self.log.error('The parameter {} contains special characters.'.format(param))
|
|
289
|
-
raise ParseException(ParseException.PARSE_INVALID_PARAM_ERROR)
|
|
290
|
-
|
|
291
|
-
def is_subdir_count_equal(self, dir1, dir2):
|
|
292
|
-
dir1_count = self.get_subdir_count(dir1)
|
|
293
|
-
dir2_count = self.get_subdir_count(dir2)
|
|
294
|
-
return dir1_count == dir2_count
|
|
295
|
-
|
|
296
|
-
def check_positive(self, value):
|
|
297
|
-
if value <= 0.0:
|
|
298
|
-
self.log.error("Invalid value. It must be greater than 0.")
|
|
299
|
-
raise ParseException(ParseException.PARSE_INVALID_DATA_ERROR)
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2025, Huawei Technologies Co., Ltd.
|
|
2
|
-
# All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
# you may not use this file except in compliance with the License.
|
|
6
|
-
# You may obtain a copy of the License at
|
|
7
|
-
#
|
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
#
|
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
# See the License for the specific language governing permissions and
|
|
14
|
-
# limitations under the License.
|
|
15
|
-
|
|
16
|
-
import json
|
|
17
|
-
|
|
18
|
-
import numpy as np
|
|
19
|
-
from msprobe.core.common.file_utils import FileOpen, load_npy, save_npy_to_txt
|
|
20
|
-
from msprobe.pytorch.parse_tool.lib.config import Const
|
|
21
|
-
from msprobe.pytorch.parse_tool.lib.parse_exception import ParseException
|
|
22
|
-
from msprobe.pytorch.parse_tool.lib.utils import Util
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class Visualization:
|
|
26
|
-
def __init__(self):
|
|
27
|
-
self.util = Util()
|
|
28
|
-
|
|
29
|
-
def print_npy_summary(self, target_file):
|
|
30
|
-
np_data = load_npy(target_file)
|
|
31
|
-
table = self.util.create_table('', ['Index', 'Data'])
|
|
32
|
-
flatten_data = np_data.flatten()
|
|
33
|
-
tablesize = 8
|
|
34
|
-
for i in range(min(16, int(np.ceil(flatten_data.size / tablesize)))):
|
|
35
|
-
last_idx = min(flatten_data.size, i * tablesize + tablesize)
|
|
36
|
-
table.add_row(str(i * tablesize), ' '.join(flatten_data[i * tablesize: last_idx].astype('str').tolist()))
|
|
37
|
-
summary = ['[yellow]%s[/yellow]' % self.util.gen_npy_info_txt(np_data), 'Path: %s' % target_file,
|
|
38
|
-
"TextFile: %s.txt" % target_file]
|
|
39
|
-
self.util.print_panel(self.util.create_columns([table, "\n".join(summary)]), target_file)
|
|
40
|
-
save_npy_to_txt(np_data, target_file + ".txt")
|
|
41
|
-
|
|
42
|
-
def print_npy_data(self, file_name):
|
|
43
|
-
file_name = self.util.path_strip(file_name)
|
|
44
|
-
self.util.check_path_valid(file_name)
|
|
45
|
-
self.util.check_file_path_format(file_name, Const.NPY_SUFFIX)
|
|
46
|
-
return self.print_npy_summary(file_name)
|
|
47
|
-
|
|
48
|
-
def parse_pkl(self, path, api_name):
|
|
49
|
-
path = self.util.path_strip(path)
|
|
50
|
-
self.util.check_path_valid(path)
|
|
51
|
-
self.util.check_file_path_format(path, Const.PKL_SUFFIX)
|
|
52
|
-
self.util.check_str_param(api_name)
|
|
53
|
-
with FileOpen(path, "r") as pkl_handle:
|
|
54
|
-
title_printed = False
|
|
55
|
-
while True:
|
|
56
|
-
pkl_line = pkl_handle.readline()
|
|
57
|
-
if pkl_line == '\n':
|
|
58
|
-
continue
|
|
59
|
-
if len(pkl_line) == 0:
|
|
60
|
-
break
|
|
61
|
-
try:
|
|
62
|
-
msg = json.loads(pkl_line)
|
|
63
|
-
except json.JSONDecodeError as e:
|
|
64
|
-
self.util.log.error("%s %s in line %s" % ("JSONDecodeError", str(e), pkl_line))
|
|
65
|
-
self.util.log.warning("Please check the pkl file")
|
|
66
|
-
raise ParseException(ParseException.PARSE_JSONDECODE_ERROR) from e
|
|
67
|
-
if not isinstance(msg, list) or len(msg) == 0:
|
|
68
|
-
break
|
|
69
|
-
info_prefix = msg[0]
|
|
70
|
-
if not info_prefix.startswith(api_name):
|
|
71
|
-
continue
|
|
72
|
-
if info_prefix.find("stack_info") != -1 and len(msg) == 2:
|
|
73
|
-
self.util.log.info("\nTrace back({}):".format(msg[0]))
|
|
74
|
-
if msg[1] and len(msg[1]) > 4:
|
|
75
|
-
for item in reversed(msg[1]):
|
|
76
|
-
self.util.log.info(" File \"{}\", line {}, in {}".format(item[0], item[1], item[2]))
|
|
77
|
-
self.util.log.info(" {}".format(item[3]))
|
|
78
|
-
continue
|
|
79
|
-
if len(msg) > 5 and len(msg[5]) >= 3:
|
|
80
|
-
summery_info = " [{}][dtype: {}][shape: {}][max: {}][min: {}][mean: {}]" \
|
|
81
|
-
.format(msg[0], msg[3], msg[4], msg[5][0], msg[5][1], msg[5][2])
|
|
82
|
-
if not title_printed:
|
|
83
|
-
self.util.log.info("\nStatistic Info:")
|
|
84
|
-
title_printed = True
|
|
85
|
-
self.util.log.info(summery_info)
|
msprobe/pytorch/pt_config.py
DELETED
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2025, Huawei Technologies Co., Ltd.
|
|
2
|
-
# All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
# you may not use this file except in compliance with the License.
|
|
6
|
-
# You may obtain a copy of the License at
|
|
7
|
-
#
|
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
#
|
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
# See the License for the specific language governing permissions and
|
|
14
|
-
# limitations under the License.
|
|
15
|
-
|
|
16
|
-
import os
|
|
17
|
-
import re
|
|
18
|
-
|
|
19
|
-
from msprobe.core.common.const import Const, FileCheckConst
|
|
20
|
-
from msprobe.core.common.exceptions import MsprobeException
|
|
21
|
-
from msprobe.core.common.file_utils import FileOpen, load_json, check_file_or_directory_path, FileChecker
|
|
22
|
-
from msprobe.core.common.log import logger
|
|
23
|
-
from msprobe.core.common.utils import is_int
|
|
24
|
-
from msprobe.core.common_config import BaseConfig, CommonConfig
|
|
25
|
-
from msprobe.core.grad_probe.constant import level_adp
|
|
26
|
-
from msprobe.core.grad_probe.utils import check_bounds
|
|
27
|
-
from msprobe.pytorch.free_benchmark.common.enums import (
|
|
28
|
-
DeviceType,
|
|
29
|
-
HandlerType,
|
|
30
|
-
PytorchFreeBenchmarkConst,
|
|
31
|
-
)
|
|
32
|
-
from msprobe.pytorch.hook_module.utils import get_ops
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class TensorConfig(BaseConfig):
|
|
36
|
-
def __init__(self, json_config):
|
|
37
|
-
super().__init__(json_config)
|
|
38
|
-
self.check_config()
|
|
39
|
-
self._check_summary_mode()
|
|
40
|
-
self._check_file_format()
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def _check_file_format(self):
|
|
44
|
-
if self.file_format is not None and self.file_format not in ["npy", "bin"]:
|
|
45
|
-
raise Exception("file_format is invalid")
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
class StatisticsConfig(BaseConfig):
|
|
49
|
-
def __init__(self, json_config):
|
|
50
|
-
super().__init__(json_config)
|
|
51
|
-
self.check_config()
|
|
52
|
-
self._check_summary_mode()
|
|
53
|
-
|
|
54
|
-
self.tensor_list = json_config.get("tensor_list", [])
|
|
55
|
-
self._check_str_list_config(self.tensor_list, "tensor_list")
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
class OverflowCheckConfig(BaseConfig):
|
|
59
|
-
def __init__(self, json_config):
|
|
60
|
-
super().__init__(json_config)
|
|
61
|
-
self.overflow_nums = json_config.get("overflow_nums")
|
|
62
|
-
self.check_mode = json_config.get("check_mode")
|
|
63
|
-
self.check_overflow_config()
|
|
64
|
-
|
|
65
|
-
def check_overflow_config(self):
|
|
66
|
-
if self.overflow_nums is not None and not is_int(self.overflow_nums):
|
|
67
|
-
raise Exception("overflow_num is invalid")
|
|
68
|
-
if self.overflow_nums is not None and self.overflow_nums != -1 and self.overflow_nums <= 0:
|
|
69
|
-
raise Exception("overflow_nums should be -1 or positive integer")
|
|
70
|
-
if self.check_mode is not None and self.check_mode not in ["all", "aicore", "atomic"]:
|
|
71
|
-
raise Exception("check_mode is invalid")
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
class FreeBenchmarkCheckConfig(BaseConfig):
|
|
75
|
-
|
|
76
|
-
def __init__(self, json_config):
|
|
77
|
-
super().__init__(json_config)
|
|
78
|
-
self.fuzz_device = json_config.get("fuzz_device", PytorchFreeBenchmarkConst.DEFAULT_DEVICE)
|
|
79
|
-
self.pert_mode = json_config.get("pert_mode", PytorchFreeBenchmarkConst.DEFAULT_MODE)
|
|
80
|
-
self.handler_type = json_config.get("handler_type", PytorchFreeBenchmarkConst.DEFAULT_HANDLER)
|
|
81
|
-
self.fuzz_level = json_config.get("fuzz_level", PytorchFreeBenchmarkConst.DEFAULT_FUZZ_LEVEL)
|
|
82
|
-
self.fuzz_stage = json_config.get("fuzz_stage", PytorchFreeBenchmarkConst.DEFAULT_FUZZ_STAGE)
|
|
83
|
-
self.list = json_config.get("list")
|
|
84
|
-
self.if_preheat = json_config.get("if_preheat", False)
|
|
85
|
-
self.preheat_step = json_config.get("preheat_step", PytorchFreeBenchmarkConst.DEFAULT_PREHEAT_STEP)
|
|
86
|
-
self.max_sample = json_config.get("max_sample", PytorchFreeBenchmarkConst.DEFAULT_PREHEAT_STEP)
|
|
87
|
-
self.check_freebenchmark_config()
|
|
88
|
-
|
|
89
|
-
def check_freebenchmark_config(self):
|
|
90
|
-
self._check_pert_mode()
|
|
91
|
-
self._check_fuzz_device()
|
|
92
|
-
self._check_handler_type()
|
|
93
|
-
self._check_fuzz_stage()
|
|
94
|
-
self._check_fuzz_level()
|
|
95
|
-
self._check_if_preheat()
|
|
96
|
-
if self.handler_type == HandlerType.FIX:
|
|
97
|
-
self._check_fix_config()
|
|
98
|
-
if self.if_preheat:
|
|
99
|
-
self._check_preheat_config()
|
|
100
|
-
|
|
101
|
-
def _check_pert_mode(self):
|
|
102
|
-
if self.pert_mode not in PytorchFreeBenchmarkConst.PERTURBATION_MODE_LIST:
|
|
103
|
-
msg = (
|
|
104
|
-
f"pert_mode is invalid, it should be one of"
|
|
105
|
-
f" {PytorchFreeBenchmarkConst.PERTURBATION_MODE_LIST}"
|
|
106
|
-
)
|
|
107
|
-
logger.error_log_with_exp(
|
|
108
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
109
|
-
)
|
|
110
|
-
|
|
111
|
-
def _check_fuzz_device(self):
|
|
112
|
-
if self.fuzz_device not in PytorchFreeBenchmarkConst.DEVICE_LIST:
|
|
113
|
-
msg = (
|
|
114
|
-
f"fuzz_device is invalid, it should be one of"
|
|
115
|
-
f" {PytorchFreeBenchmarkConst.DEVICE_LIST}"
|
|
116
|
-
)
|
|
117
|
-
logger.error_log_with_exp(
|
|
118
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
119
|
-
)
|
|
120
|
-
if (self.fuzz_device == DeviceType.CPU) ^ (
|
|
121
|
-
self.pert_mode in PytorchFreeBenchmarkConst.CPU_MODE_LIST
|
|
122
|
-
):
|
|
123
|
-
msg = (
|
|
124
|
-
f"You need to and can only set fuzz_device as {DeviceType.CPU} "
|
|
125
|
-
f"when pert_mode in {PytorchFreeBenchmarkConst.CPU_MODE_LIST}"
|
|
126
|
-
)
|
|
127
|
-
logger.error_log_with_exp(
|
|
128
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
129
|
-
)
|
|
130
|
-
|
|
131
|
-
def _check_handler_type(self):
|
|
132
|
-
if self.handler_type not in PytorchFreeBenchmarkConst.HANDLER_LIST:
|
|
133
|
-
msg = (
|
|
134
|
-
f"handler_type is invalid, it should be one of"
|
|
135
|
-
f" {PytorchFreeBenchmarkConst.HANDLER_LIST}"
|
|
136
|
-
)
|
|
137
|
-
logger.error_log_with_exp(
|
|
138
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
def _check_fuzz_stage(self):
|
|
142
|
-
if self.fuzz_stage not in PytorchFreeBenchmarkConst.FUZZ_STAGE_LIST:
|
|
143
|
-
msg = (
|
|
144
|
-
f"fuzz_stage is invalid, it should be one of"
|
|
145
|
-
f" {PytorchFreeBenchmarkConst.FUZZ_STAGE_LIST}"
|
|
146
|
-
)
|
|
147
|
-
logger.error_log_with_exp(
|
|
148
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
149
|
-
)
|
|
150
|
-
if self.fuzz_stage == Const.BACKWARD and not self.list:
|
|
151
|
-
raise MsprobeException(
|
|
152
|
-
MsprobeException.INVALID_PARAM_ERROR,
|
|
153
|
-
f"When fuzz_stage is set to {Const.BACKWARD}, the parameters list must not be empty."
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
def _check_fuzz_level(self):
|
|
157
|
-
if self.fuzz_level not in PytorchFreeBenchmarkConst.FUZZ_LEVEL_LIST:
|
|
158
|
-
msg = (
|
|
159
|
-
f"fuzz_level is invalid, it should be one of"
|
|
160
|
-
f" {PytorchFreeBenchmarkConst.FUZZ_LEVEL_LIST}"
|
|
161
|
-
)
|
|
162
|
-
logger.error_log_with_exp(
|
|
163
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
def _check_if_preheat(self):
|
|
167
|
-
if not isinstance(self.if_preheat, bool):
|
|
168
|
-
msg = "if_preheat is invalid, it should be a boolean"
|
|
169
|
-
logger.error_log_with_exp(
|
|
170
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
171
|
-
)
|
|
172
|
-
|
|
173
|
-
def _check_preheat_config(self):
|
|
174
|
-
if not is_int(self.preheat_step):
|
|
175
|
-
msg = "preheat_step is invalid, it should be an integer"
|
|
176
|
-
logger.error_log_with_exp(
|
|
177
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
178
|
-
)
|
|
179
|
-
if self.preheat_step <= 0:
|
|
180
|
-
msg = "preheat_step must be greater than 0"
|
|
181
|
-
logger.error_log_with_exp(
|
|
182
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
183
|
-
)
|
|
184
|
-
if not is_int(self.max_sample):
|
|
185
|
-
msg = "max_sample is invalid, it should be an integer"
|
|
186
|
-
logger.error_log_with_exp(
|
|
187
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
188
|
-
)
|
|
189
|
-
if self.max_sample <= 0:
|
|
190
|
-
msg = "max_sample must be greater than 0"
|
|
191
|
-
logger.error_log_with_exp(
|
|
192
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
193
|
-
)
|
|
194
|
-
|
|
195
|
-
def _check_fix_config(self):
|
|
196
|
-
if self.if_preheat:
|
|
197
|
-
msg = f"Preheating is not supported for {HandlerType.FIX} handler type"
|
|
198
|
-
logger.error_log_with_exp(
|
|
199
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
200
|
-
)
|
|
201
|
-
if self.fuzz_stage not in PytorchFreeBenchmarkConst.FIX_STAGE_LIST:
|
|
202
|
-
msg = (
|
|
203
|
-
f"The fuzz_stage when opening {HandlerType.FIX} handler must be one of "
|
|
204
|
-
f"{PytorchFreeBenchmarkConst.FIX_STAGE_LIST}"
|
|
205
|
-
)
|
|
206
|
-
logger.error_log_with_exp(
|
|
207
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
208
|
-
)
|
|
209
|
-
if self.pert_mode not in PytorchFreeBenchmarkConst.FIX_MODE_LIST:
|
|
210
|
-
msg = (
|
|
211
|
-
f"The pert_mode when opening {HandlerType.FIX} handler must be one of "
|
|
212
|
-
f"{PytorchFreeBenchmarkConst.FIX_MODE_LIST}"
|
|
213
|
-
)
|
|
214
|
-
logger.error_log_with_exp(
|
|
215
|
-
msg, MsprobeException(MsprobeException.INVALID_PARAM_ERROR, msg)
|
|
216
|
-
)
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
class RunUTConfig(BaseConfig):
|
|
220
|
-
WrapApi = get_ops()
|
|
221
|
-
|
|
222
|
-
def __init__(self, json_config):
|
|
223
|
-
super().__init__(json_config)
|
|
224
|
-
self.white_list = json_config.get("white_list", Const.DEFAULT_LIST)
|
|
225
|
-
self.black_list = json_config.get("black_list", Const.DEFAULT_LIST)
|
|
226
|
-
self.error_data_path = json_config.get("error_data_path", Const.DEFAULT_PATH)
|
|
227
|
-
|
|
228
|
-
self.check_run_ut_config()
|
|
229
|
-
|
|
230
|
-
@classmethod
|
|
231
|
-
def check_filter_list_config(cls, key, filter_list):
|
|
232
|
-
if not isinstance(filter_list, list):
|
|
233
|
-
raise Exception("%s must be a list type" % key)
|
|
234
|
-
if not all(isinstance(item, str) for item in filter_list):
|
|
235
|
-
raise Exception("All elements in %s must be string type" % key)
|
|
236
|
-
invalid_api = [item for item in filter_list if item not in cls.WrapApi]
|
|
237
|
-
if invalid_api:
|
|
238
|
-
raise Exception("Invalid api in %s: %s" % (key, invalid_api))
|
|
239
|
-
|
|
240
|
-
@classmethod
|
|
241
|
-
def check_error_data_path_config(cls, error_data_path):
|
|
242
|
-
if not os.path.exists(error_data_path):
|
|
243
|
-
raise Exception("error_data_path: %s does not exist" % error_data_path)
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
def check_run_ut_config(self):
|
|
247
|
-
RunUTConfig.check_filter_list_config(Const.WHITE_LIST, self.white_list)
|
|
248
|
-
RunUTConfig.check_filter_list_config(Const.BLACK_LIST, self.black_list)
|
|
249
|
-
RunUTConfig.check_error_data_path_config(self.error_data_path)
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
class GradToolConfig(BaseConfig):
|
|
253
|
-
def __init__(self, json_config):
|
|
254
|
-
super().__init__(json_config)
|
|
255
|
-
self.grad_level = json_config.get("grad_level", "L1")
|
|
256
|
-
self.param_list = json_config.get("param_list", [])
|
|
257
|
-
self.bounds = json_config.get("bounds", [-1, 0, 1])
|
|
258
|
-
self._check_config()
|
|
259
|
-
|
|
260
|
-
def _check_config(self):
|
|
261
|
-
if self.grad_level not in level_adp.keys():
|
|
262
|
-
raise Exception(f"grad_level must be one of {level_adp.keys()}")
|
|
263
|
-
if not isinstance(self.param_list, list):
|
|
264
|
-
raise Exception(f"param_list must be a list")
|
|
265
|
-
check_bounds(self.bounds)
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
class StructureConfig(BaseConfig):
|
|
269
|
-
def __init__(self, json_config):
|
|
270
|
-
super().__init__(json_config)
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
TaskDict = {
|
|
274
|
-
Const.TENSOR: TensorConfig,
|
|
275
|
-
Const.STATISTICS: StatisticsConfig,
|
|
276
|
-
Const.OVERFLOW_CHECK: OverflowCheckConfig,
|
|
277
|
-
Const.FREE_BENCHMARK: FreeBenchmarkCheckConfig,
|
|
278
|
-
Const.RUN_UT: RunUTConfig,
|
|
279
|
-
Const.GRAD_PROBE: GradToolConfig,
|
|
280
|
-
Const.STRUCTURE: StructureConfig
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
def parse_task_config(task, json_config):
|
|
285
|
-
task_map = json_config.get(task, dict())
|
|
286
|
-
return TaskDict.get(task)(task_map)
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
def parse_json_config(json_file_path, task):
|
|
290
|
-
if not json_file_path:
|
|
291
|
-
config_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
292
|
-
json_file_path = os.path.join(config_dir, "config.json")
|
|
293
|
-
json_config = load_json(json_file_path)
|
|
294
|
-
common_config = CommonConfig(json_config)
|
|
295
|
-
if task:
|
|
296
|
-
task_config = parse_task_config(task, json_config)
|
|
297
|
-
else:
|
|
298
|
-
task_config = parse_task_config(common_config.task, json_config)
|
|
299
|
-
return common_config, task_config
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|