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
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2024, 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 math
|
|
17
|
-
from abc import ABC, abstractmethod
|
|
18
|
-
from typing import Any, Optional, Tuple
|
|
19
|
-
|
|
20
|
-
import numpy as np
|
|
21
|
-
import torch
|
|
22
|
-
from msprobe.core.common.const import Const
|
|
23
|
-
from msprobe.core.common.exceptions import FreeBenchmarkException
|
|
24
|
-
from msprobe.pytorch.free_benchmark import logger
|
|
25
|
-
from msprobe.pytorch.free_benchmark.common.constant import ThresholdConfig
|
|
26
|
-
from msprobe.pytorch.free_benchmark.common.enums import (
|
|
27
|
-
FuzzThreshold,
|
|
28
|
-
NormType,
|
|
29
|
-
PerturbationMode,
|
|
30
|
-
)
|
|
31
|
-
from msprobe.pytorch.free_benchmark.common.params import (
|
|
32
|
-
DataParams,
|
|
33
|
-
HandlerParams,
|
|
34
|
-
make_unequal_row,
|
|
35
|
-
)
|
|
36
|
-
from msprobe.pytorch.free_benchmark.common.utils import Tools, TorchC
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class FuzzHandler(ABC):
|
|
40
|
-
def __init__(self, params: HandlerParams) -> None:
|
|
41
|
-
self.params = params
|
|
42
|
-
self.unequal_rows = []
|
|
43
|
-
|
|
44
|
-
@staticmethod
|
|
45
|
-
def pre_process(origin_ouput, perturbed_output):
|
|
46
|
-
if (
|
|
47
|
-
isinstance(origin_ouput, tuple)
|
|
48
|
-
and hasattr(origin_ouput, "values")
|
|
49
|
-
and hasattr(origin_ouput, "indices")
|
|
50
|
-
):
|
|
51
|
-
origin_ouput = origin_ouput.values
|
|
52
|
-
perturbed_output = perturbed_output.values
|
|
53
|
-
if hasattr(perturbed_output, "dtype"):
|
|
54
|
-
abs_tol = ThresholdConfig.ABS_TOL_VALUE_DICT.get(
|
|
55
|
-
perturbed_output.dtype, FuzzThreshold.F32_THD
|
|
56
|
-
)
|
|
57
|
-
else:
|
|
58
|
-
abs_tol = FuzzThreshold.F32_THD
|
|
59
|
-
return (
|
|
60
|
-
origin_ouput.to(perturbed_output.dtype).to(perturbed_output.device),
|
|
61
|
-
perturbed_output,
|
|
62
|
-
abs_tol,
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
@staticmethod
|
|
66
|
-
def tensor_split_for_error_calculate(origin_output, perturbed_output):
|
|
67
|
-
"""
|
|
68
|
-
对将投入误差值计算的扰动前后输出张量进行分块
|
|
69
|
-
:param origin_output: 原始输出
|
|
70
|
-
:param perturbed_output: 扰动后输出
|
|
71
|
-
:return origin_output_chunks: 切块后原始输出列表
|
|
72
|
-
:return perturbed_output_chunks: 切块后扰动后输出列表
|
|
73
|
-
"""
|
|
74
|
-
single_output_mem = (
|
|
75
|
-
origin_output.element_size() * origin_output.nelement() / Const.ONE_MB
|
|
76
|
-
)
|
|
77
|
-
if single_output_mem == 0 or origin_output.ndim == 0:
|
|
78
|
-
return [origin_output], [perturbed_output]
|
|
79
|
-
# 张量大小和批数之间的关系:chunks_exp=math.log(M,2)-4, chunks=2**chunks_exp (M为对比张量数据大小[Mb])
|
|
80
|
-
chunks_exp = int(math.log(single_output_mem, 2)) - 4
|
|
81
|
-
chunks = 2**chunks_exp
|
|
82
|
-
chunks = max(chunks, 1)
|
|
83
|
-
chunks = min(chunks, ThresholdConfig.TENSOR_SPLIT_MAX_CHUNK)
|
|
84
|
-
origin_output_chunks = TorchC.tensor_split(
|
|
85
|
-
TorchC.reshape(origin_output, (-1,)), chunks
|
|
86
|
-
)
|
|
87
|
-
perturbed_output_chunks = TorchC.tensor_split(
|
|
88
|
-
TorchC.reshape(perturbed_output, (-1,)), chunks
|
|
89
|
-
)
|
|
90
|
-
return origin_output_chunks, perturbed_output_chunks
|
|
91
|
-
|
|
92
|
-
@abstractmethod
|
|
93
|
-
def get_threshold(self, dtype):
|
|
94
|
-
pass
|
|
95
|
-
|
|
96
|
-
@abstractmethod
|
|
97
|
-
def handle(self, data_params: DataParams) -> Any:
|
|
98
|
-
pass
|
|
99
|
-
|
|
100
|
-
def get_ratio_from_specific_norm(
|
|
101
|
-
self, origin_output, perturbed_output, norm_type, abs_tol
|
|
102
|
-
):
|
|
103
|
-
if norm_type == NormType.ENDLESS_NORM:
|
|
104
|
-
return self.calculate_max_ratio(origin_output, perturbed_output, abs_tol)
|
|
105
|
-
return ThresholdConfig.COMP_CONSISTENT
|
|
106
|
-
|
|
107
|
-
def calculate_max_ratio(self, origin_output, perturbed_output, abs_tol):
|
|
108
|
-
origin_output_chunks, perturbed_output_chunks = (
|
|
109
|
-
self.tensor_split_for_error_calculate(origin_output, perturbed_output)
|
|
110
|
-
)
|
|
111
|
-
if len(origin_output_chunks) != len(perturbed_output_chunks):
|
|
112
|
-
err_msg = (
|
|
113
|
-
f"For {self.params.api_name}, the number of compare tensor chunks is different: "
|
|
114
|
-
f"{len(origin_output_chunks)} != {len(perturbed_output_chunks)}. please check!"
|
|
115
|
-
)
|
|
116
|
-
raise FreeBenchmarkException(
|
|
117
|
-
FreeBenchmarkException.OutputIndexError, err_msg
|
|
118
|
-
)
|
|
119
|
-
|
|
120
|
-
max_ratio = ThresholdConfig.COMP_CONSISTENT
|
|
121
|
-
for i, chunk_origin in enumerate(origin_output_chunks):
|
|
122
|
-
if chunk_origin.nelement() == 0:
|
|
123
|
-
break
|
|
124
|
-
chunk_perturbed = perturbed_output_chunks[i]
|
|
125
|
-
# 如果乘积最小值 < 极小值乘积的负值,认为存在非极小值符号相反的情况
|
|
126
|
-
if TorchC.lt(
|
|
127
|
-
TorchC.min(TorchC.mul(chunk_origin, chunk_perturbed)), -(abs_tol**2)
|
|
128
|
-
):
|
|
129
|
-
return ThresholdConfig.SYMBOL_FLIPPING
|
|
130
|
-
# 求A/B B/A的比值前,将值限制在大于极小值范围内
|
|
131
|
-
clamp_origin = TorchC.clamp(TorchC.abs(chunk_origin), min=abs_tol)
|
|
132
|
-
clamp_perturbed = TorchC.clamp(TorchC.abs(chunk_perturbed), min=abs_tol)
|
|
133
|
-
# 对于计算结果为nan的情况,认为两者没有差异
|
|
134
|
-
ratio_tensor = TorchC.nan_to_num(
|
|
135
|
-
TorchC.div(clamp_origin, clamp_perturbed),
|
|
136
|
-
nan=ThresholdConfig.COMP_CONSISTENT,
|
|
137
|
-
)
|
|
138
|
-
# 求A/B 和 B/A比值最大值,其中 B/A的最大值为 A/B的最小值的倒数
|
|
139
|
-
min_ratio, max_ratio = TorchC.stack([*TorchC.aminmax(ratio_tensor)]).tolist()
|
|
140
|
-
min_ratio_reciprocal = np.inf if min_ratio == 0 else 1 / min_ratio
|
|
141
|
-
max_ratio = max(max_ratio, min_ratio_reciprocal)
|
|
142
|
-
return max_ratio
|
|
143
|
-
|
|
144
|
-
def ratio_calculate(self, origin_output, perturbed_output, norm_type) -> float:
|
|
145
|
-
try:
|
|
146
|
-
origin_output, perturbed_output, abs_tol = self.pre_process(
|
|
147
|
-
origin_output, perturbed_output
|
|
148
|
-
)
|
|
149
|
-
except Exception as e:
|
|
150
|
-
logger.warning_on_rank_0(
|
|
151
|
-
f"[msprobe] Free Benchmark: For {self.params.api_name}, "
|
|
152
|
-
f"when computing ratio,"
|
|
153
|
-
f" y1 or y2 dtype is not supported {e}"
|
|
154
|
-
)
|
|
155
|
-
return ThresholdConfig.COMP_NAN
|
|
156
|
-
if self.params.fuzz_stage == Const.BACKWARD:
|
|
157
|
-
abs_tol = ThresholdConfig.BACKWARD_OUTPUT_LOWER_BOUND
|
|
158
|
-
else:
|
|
159
|
-
abs_tol = abs_tol**0.5
|
|
160
|
-
return self.get_ratio_from_specific_norm(
|
|
161
|
-
origin_output, perturbed_output, norm_type, abs_tol
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
def npu_compare(
|
|
165
|
-
self, origin_output, perturbed_output
|
|
166
|
-
) -> Tuple[bool, Optional[float]]:
|
|
167
|
-
|
|
168
|
-
if isinstance(perturbed_output, int):
|
|
169
|
-
return origin_output == perturbed_output, None
|
|
170
|
-
elif isinstance(perturbed_output, float):
|
|
171
|
-
if perturbed_output == 0:
|
|
172
|
-
origin_output += FuzzThreshold.F32_THD
|
|
173
|
-
perturbed_output += FuzzThreshold.F32_THD
|
|
174
|
-
return (
|
|
175
|
-
math.isclose(origin_output, perturbed_output),
|
|
176
|
-
origin_output / perturbed_output,
|
|
177
|
-
)
|
|
178
|
-
elif not isinstance(perturbed_output, torch.Tensor):
|
|
179
|
-
logger.warning_on_rank_0(
|
|
180
|
-
f"[msprobe] Free Benchmark: For {self.params.api_name} "
|
|
181
|
-
f"The compare for output type {type(perturbed_output)} is not supported"
|
|
182
|
-
)
|
|
183
|
-
return True, 1
|
|
184
|
-
|
|
185
|
-
threshold = self.get_threshold(Tools.get_first_tensor_dtype(origin_output))
|
|
186
|
-
ratio = self.ratio_calculate(
|
|
187
|
-
origin_output, perturbed_output, norm_type=NormType.ENDLESS_NORM
|
|
188
|
-
)
|
|
189
|
-
if threshold == 0:
|
|
190
|
-
raise ValueError("Threshold cannot be zero. Check `get_threshold` implementation.")
|
|
191
|
-
if ratio == ThresholdConfig.SYMBOL_FLIPPING:
|
|
192
|
-
is_consistent = False
|
|
193
|
-
else:
|
|
194
|
-
is_consistent = threshold >= ratio >= 1 / threshold
|
|
195
|
-
return is_consistent, ratio
|
|
196
|
-
|
|
197
|
-
def cmp_output_npu(self, data_params: DataParams):
|
|
198
|
-
npu_consistent = True
|
|
199
|
-
max_fuzz_ratio = 0
|
|
200
|
-
try:
|
|
201
|
-
if isinstance(data_params.original_result, torch.Tensor):
|
|
202
|
-
is_consistent, ratio = self.npu_compare(
|
|
203
|
-
data_params.original_result, data_params.perturbed_result
|
|
204
|
-
)
|
|
205
|
-
npu_consistent = is_consistent
|
|
206
|
-
max_fuzz_ratio = (
|
|
207
|
-
max_fuzz_ratio
|
|
208
|
-
if not isinstance(ratio, (int, float))
|
|
209
|
-
else max(max_fuzz_ratio, ratio)
|
|
210
|
-
)
|
|
211
|
-
data_params.is_consistent = is_consistent
|
|
212
|
-
if not is_consistent:
|
|
213
|
-
self.unequal_rows.append(
|
|
214
|
-
make_unequal_row(data_params, self.params, ratio=ratio)
|
|
215
|
-
)
|
|
216
|
-
|
|
217
|
-
elif isinstance(data_params.original_result, (list, tuple)):
|
|
218
|
-
for index_, origin_item in enumerate(data_params.original_result):
|
|
219
|
-
is_consistent, ratio = self.npu_compare(
|
|
220
|
-
origin_item, data_params.perturbed_result[index_]
|
|
221
|
-
)
|
|
222
|
-
npu_consistent = npu_consistent and is_consistent
|
|
223
|
-
max_fuzz_ratio = (
|
|
224
|
-
max_fuzz_ratio
|
|
225
|
-
if not isinstance(ratio, (int, float))
|
|
226
|
-
else max(max_fuzz_ratio, ratio)
|
|
227
|
-
)
|
|
228
|
-
data_params.is_consistent = is_consistent
|
|
229
|
-
if not is_consistent:
|
|
230
|
-
self.unequal_rows.append(
|
|
231
|
-
make_unequal_row(
|
|
232
|
-
data_params, self.params, ratio=ratio, index=index_
|
|
233
|
-
)
|
|
234
|
-
)
|
|
235
|
-
except Exception as e:
|
|
236
|
-
logger.warning_on_rank_0(
|
|
237
|
-
f"[msprobe] Free Benchmark: For {self.params.api_name}, "
|
|
238
|
-
f"when campare the result exception raise {e}"
|
|
239
|
-
)
|
|
240
|
-
return npu_consistent, max_fuzz_ratio
|
|
241
|
-
|
|
242
|
-
def get_unequal_rows(self):
|
|
243
|
-
return self.unequal_rows
|
|
244
|
-
|
|
245
|
-
def _get_default_threshold(self, dtype):
|
|
246
|
-
if self.params.pert_mode == PerturbationMode.NO_CHANGE:
|
|
247
|
-
threshold = ThresholdConfig.COMP_CONSISTENT
|
|
248
|
-
else:
|
|
249
|
-
threshold = ThresholdConfig.DTYPE_PER_THD.get(
|
|
250
|
-
dtype, ThresholdConfig.DTYPE_PER_THD.get(torch.float32)
|
|
251
|
-
)
|
|
252
|
-
return threshold
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2024, 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
|
-
from typing import Any
|
|
17
|
-
|
|
18
|
-
from msprobe.pytorch.free_benchmark import logger
|
|
19
|
-
from msprobe.pytorch.free_benchmark.common.enums import DeviceType
|
|
20
|
-
from msprobe.pytorch.free_benchmark.common.params import DataParams, make_unequal_row
|
|
21
|
-
from msprobe.pytorch.free_benchmark.common.utils import Tools
|
|
22
|
-
from msprobe.pytorch.free_benchmark.compare.single_benchmark import SingleCompare
|
|
23
|
-
from msprobe.pytorch.free_benchmark.result_handlers.base_handler import FuzzHandler
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class CheckerHandler(FuzzHandler):
|
|
27
|
-
def other_compare(self, data_params: DataParams) -> bool:
|
|
28
|
-
is_consistent = SingleCompare().compare_seq(
|
|
29
|
-
data_params.original_result, data_params.perturbed_result
|
|
30
|
-
)
|
|
31
|
-
if not is_consistent:
|
|
32
|
-
self.unequal_rows.append(
|
|
33
|
-
make_unequal_row(data_params, self.params)
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
def get_threshold(self, dtype):
|
|
37
|
-
return self._get_default_threshold(dtype)
|
|
38
|
-
|
|
39
|
-
def handle(self, data_params: DataParams) -> Any:
|
|
40
|
-
if isinstance(data_params.perturbed_result, bool) or not Tools.is_float_tensor(
|
|
41
|
-
data_params.perturbed_result
|
|
42
|
-
):
|
|
43
|
-
return data_params.original_result
|
|
44
|
-
try:
|
|
45
|
-
if self.params.fuzz_device == DeviceType.NPU:
|
|
46
|
-
self.cmp_output_npu(data_params)
|
|
47
|
-
else:
|
|
48
|
-
self.other_compare(data_params)
|
|
49
|
-
except Exception as e:
|
|
50
|
-
logger.warning_on_rank_0(
|
|
51
|
-
f"[msprobe] Free Benchmark: For {self.params.api_name}, "
|
|
52
|
-
f"when comparing the results, an exception is raised: {e}"
|
|
53
|
-
)
|
|
54
|
-
return data_params.original_result
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2024, 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
|
-
from typing import Any
|
|
17
|
-
|
|
18
|
-
from msprobe.core.common.exceptions import FreeBenchmarkException
|
|
19
|
-
from msprobe.pytorch.free_benchmark import logger
|
|
20
|
-
from msprobe.pytorch.free_benchmark.common.params import DataParams
|
|
21
|
-
from msprobe.pytorch.free_benchmark.common.utils import Tools
|
|
22
|
-
from msprobe.pytorch.free_benchmark.result_handlers.base_handler import FuzzHandler
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class FixHandler(FuzzHandler):
|
|
26
|
-
|
|
27
|
-
def get_threshold(self, dtype):
|
|
28
|
-
return self._get_default_threshold(dtype)
|
|
29
|
-
|
|
30
|
-
def handle(self, data_params: DataParams) -> Any:
|
|
31
|
-
try:
|
|
32
|
-
return Tools.convert_fuzz_output_to_origin(
|
|
33
|
-
data_params.original_result, data_params.perturbed_result
|
|
34
|
-
)
|
|
35
|
-
except FreeBenchmarkException as e:
|
|
36
|
-
logger.warning(
|
|
37
|
-
f"[msprobe] Free Benchmark: For {self.params.api_name} "
|
|
38
|
-
f"Fix output failed because of: \n{e}"
|
|
39
|
-
)
|
|
40
|
-
return data_params.original_result
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2024, 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
|
-
from msprobe.pytorch.free_benchmark import FreeBenchmarkException
|
|
17
|
-
from msprobe.pytorch.free_benchmark.common.constant import PreheatConfig
|
|
18
|
-
from msprobe.pytorch.free_benchmark.common.enums import HandlerType
|
|
19
|
-
from msprobe.pytorch.free_benchmark.common.params import HandlerParams
|
|
20
|
-
from msprobe.pytorch.free_benchmark.result_handlers.check_handler import CheckerHandler
|
|
21
|
-
from msprobe.pytorch.free_benchmark.result_handlers.preheat_handler import PreheatHandler
|
|
22
|
-
from msprobe.pytorch.free_benchmark.result_handlers.fix_handler import FixHandler
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class FuzzHandlerFactory:
|
|
26
|
-
|
|
27
|
-
result_handlers = {
|
|
28
|
-
HandlerType.CHECK: CheckerHandler,
|
|
29
|
-
HandlerType.FIX: FixHandler,
|
|
30
|
-
HandlerType.PREHEAT: PreheatHandler,
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
@staticmethod
|
|
34
|
-
def create(params: HandlerParams):
|
|
35
|
-
if_preheat = params.preheat_config.get(PreheatConfig.IF_PREHEAT)
|
|
36
|
-
if not if_preheat:
|
|
37
|
-
handler = FuzzHandlerFactory.result_handlers.get(params.handler_type)
|
|
38
|
-
else:
|
|
39
|
-
handler = FuzzHandlerFactory.result_handlers.get(HandlerType.PREHEAT)
|
|
40
|
-
if not handler:
|
|
41
|
-
raise FreeBenchmarkException(
|
|
42
|
-
FreeBenchmarkException.UnsupportedType,
|
|
43
|
-
f"无标杆工具支持 [ {HandlerType.CHECK}、{HandlerType.FIX}] 形式",
|
|
44
|
-
)
|
|
45
|
-
return handler(params)
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2024, 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 math
|
|
17
|
-
from typing import Any
|
|
18
|
-
|
|
19
|
-
from msprobe.pytorch.free_benchmark import logger
|
|
20
|
-
from msprobe.pytorch.free_benchmark.common.constant import ThresholdConfig
|
|
21
|
-
from msprobe.pytorch.free_benchmark.common.counter import preheat_counter
|
|
22
|
-
from msprobe.pytorch.free_benchmark.common.enums import DeviceType
|
|
23
|
-
from msprobe.pytorch.free_benchmark.common.params import DataParams, HandlerParams
|
|
24
|
-
from msprobe.pytorch.free_benchmark.common.utils import Tools
|
|
25
|
-
from msprobe.pytorch.free_benchmark.compare.single_benchmark import SingleCompare
|
|
26
|
-
from msprobe.pytorch.free_benchmark.result_handlers.base_handler import FuzzHandler
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class PreheatHandler(FuzzHandler):
|
|
30
|
-
|
|
31
|
-
def __init__(self, params: HandlerParams) -> None:
|
|
32
|
-
super().__init__(params)
|
|
33
|
-
self.pure_name = Tools.get_pure_api_name(self.params.api_name)
|
|
34
|
-
|
|
35
|
-
def get_threshold(self, dtype):
|
|
36
|
-
return preheat_counter.get_api_thd(self.pure_name, dtype)
|
|
37
|
-
|
|
38
|
-
def compare_npu_and_cpu(self, data_params: DataParams):
|
|
39
|
-
args = Tools.convert_device_and_dtype(
|
|
40
|
-
data_params.args, DeviceType.CPU, change_dtype=True
|
|
41
|
-
)
|
|
42
|
-
kwargs = Tools.convert_device_and_dtype(
|
|
43
|
-
data_params.kwargs, DeviceType.CPU, change_dtype=True
|
|
44
|
-
)
|
|
45
|
-
cpu_result = data_params.origin_func(*args, **kwargs)
|
|
46
|
-
return SingleCompare().compare_seq(data_params.original_result, cpu_result)
|
|
47
|
-
|
|
48
|
-
def preheat(self, max_fuzz_ratio, cpu_consistent, first_dtype):
|
|
49
|
-
# 存储当前step所有输出比值和对应npu\cpu比对结果
|
|
50
|
-
preheat_counter.update_preheat_record(
|
|
51
|
-
self.pure_name,
|
|
52
|
-
first_dtype,
|
|
53
|
-
(max_fuzz_ratio, cpu_consistent),
|
|
54
|
-
)
|
|
55
|
-
if self._need_adjust_threshold():
|
|
56
|
-
self._adjust_threshold()
|
|
57
|
-
|
|
58
|
-
def handle(self, data_params: DataParams) -> Any:
|
|
59
|
-
|
|
60
|
-
if isinstance(data_params.perturbed_result, bool) or not Tools.is_float_tensor(
|
|
61
|
-
data_params.perturbed_result
|
|
62
|
-
):
|
|
63
|
-
return data_params.original_result
|
|
64
|
-
|
|
65
|
-
if self.params.step == 0:
|
|
66
|
-
preheat_counter.add_one_step_used_api(self.pure_name)
|
|
67
|
-
return data_params.original_result
|
|
68
|
-
|
|
69
|
-
# 如果当前api,step需要预热
|
|
70
|
-
npu_consistent, max_fuzz_ratio = self.cmp_output_npu(data_params)
|
|
71
|
-
data_params.is_consistent = npu_consistent
|
|
72
|
-
|
|
73
|
-
preheat_counter.check_step(self.params.step)
|
|
74
|
-
|
|
75
|
-
if self.params.preheat_config.get("preheat_step") <= self.params.step:
|
|
76
|
-
return data_params.original_result
|
|
77
|
-
|
|
78
|
-
preheat_counter.add_api_called_time(self.pure_name)
|
|
79
|
-
|
|
80
|
-
if not self._is_take_a_sample():
|
|
81
|
-
return data_params.original_result
|
|
82
|
-
|
|
83
|
-
cpu_consistent = True
|
|
84
|
-
try:
|
|
85
|
-
cpu_consistent = self.compare_npu_and_cpu(data_params)
|
|
86
|
-
except Exception as e:
|
|
87
|
-
logger.warning_on_rank_0(
|
|
88
|
-
f"[msprobe] Free Benchmark: For {self.params.api_name}, "
|
|
89
|
-
f"when campare to cpu exception raise {e}"
|
|
90
|
-
)
|
|
91
|
-
try:
|
|
92
|
-
first_dtype = Tools.get_first_tensor_dtype(data_params.original_result)
|
|
93
|
-
except RuntimeError:
|
|
94
|
-
logger.warning_on_rank_0(
|
|
95
|
-
f"[msprobe] Free Benchmark: For {self.params.api_name}, "
|
|
96
|
-
f"the output sequence does not contain tensors."
|
|
97
|
-
)
|
|
98
|
-
if preheat_counter.get_api_preheat(self.pure_name, str(first_dtype)):
|
|
99
|
-
self.preheat(max_fuzz_ratio, cpu_consistent, first_dtype)
|
|
100
|
-
|
|
101
|
-
return data_params.original_result
|
|
102
|
-
|
|
103
|
-
def _is_take_a_sample(self) -> bool:
|
|
104
|
-
need_sample_set = self._get_need_sample_set()
|
|
105
|
-
curr_called_seq = preheat_counter.get_api_called_time(self.pure_name)
|
|
106
|
-
res = curr_called_seq in need_sample_set
|
|
107
|
-
if res:
|
|
108
|
-
total_count = preheat_counter.get_one_step_used_api(self.pure_name)
|
|
109
|
-
logger.info_on_rank_0(
|
|
110
|
-
f"[msprobe] Free benchmark: preheat sample in step{self.params.step}"
|
|
111
|
-
f"api_name {self.params.api_name}, "
|
|
112
|
-
f"curr_called_seq: {curr_called_seq}/{total_count}"
|
|
113
|
-
)
|
|
114
|
-
preheat_counter.add_api_sample_time(self.pure_name)
|
|
115
|
-
return res
|
|
116
|
-
|
|
117
|
-
def _get_sample_count_per_step(self) -> set:
|
|
118
|
-
"""
|
|
119
|
-
每一个step中应该采集的样本数
|
|
120
|
-
"""
|
|
121
|
-
total_count = preheat_counter.get_one_step_used_api(self.pure_name)
|
|
122
|
-
preheat_step = self.params.preheat_config.get("preheat_step")
|
|
123
|
-
max_sample = self.params.preheat_config.get("max_sample")
|
|
124
|
-
return min(math.ceil(total_count / preheat_step), max_sample)
|
|
125
|
-
|
|
126
|
-
def _get_need_sample_set(self):
|
|
127
|
-
"""
|
|
128
|
-
需要采集的api集合
|
|
129
|
-
"""
|
|
130
|
-
# 每一步样本数
|
|
131
|
-
total_count = preheat_counter.get_one_step_used_api(self.pure_name)
|
|
132
|
-
need_sample_set = set()
|
|
133
|
-
if total_count == 0:
|
|
134
|
-
return need_sample_set
|
|
135
|
-
sample_count_per_step = self._get_sample_count_per_step()
|
|
136
|
-
prehead_step = self.params.preheat_config.get("preheat_step")
|
|
137
|
-
for i in range(1, sample_count_per_step + 1):
|
|
138
|
-
count = (prehead_step * (i - 1) + self.params.step) % total_count
|
|
139
|
-
if count == 0:
|
|
140
|
-
count = total_count
|
|
141
|
-
need_sample_set.add(count)
|
|
142
|
-
return need_sample_set
|
|
143
|
-
|
|
144
|
-
def _need_adjust_threshold(self) -> bool:
|
|
145
|
-
sample_count_per_step = self._get_sample_count_per_step()
|
|
146
|
-
sampled_time = preheat_counter.get_api_sample_time(self.pure_name)
|
|
147
|
-
res = sampled_time >= sample_count_per_step
|
|
148
|
-
return res
|
|
149
|
-
|
|
150
|
-
def _adjust_threshold_for_dtype(self, dtype_str, compare_result):
|
|
151
|
-
con_ratio = [ratio for ratio, is_consistent in compare_result if is_consistent]
|
|
152
|
-
incon_ratio = [ratio for ratio, is_consistent in compare_result if not is_consistent]
|
|
153
|
-
old_thd = preheat_counter.get_api_thd(self.pure_name, dtype_str)
|
|
154
|
-
new_thd = old_thd
|
|
155
|
-
# 正例负例都存在
|
|
156
|
-
if con_ratio and incon_ratio:
|
|
157
|
-
if min(incon_ratio) > max(con_ratio):
|
|
158
|
-
new_thd = min(min(incon_ratio), old_thd)
|
|
159
|
-
preheat_counter.set_api_preheat(self.pure_name, dtype_str, is_preheat=False)
|
|
160
|
-
elif con_ratio:
|
|
161
|
-
# 存在漏报
|
|
162
|
-
if max(con_ratio) > old_thd:
|
|
163
|
-
new_thd = 1 + ((old_thd - 1) * ThresholdConfig.API_THD_STEP)
|
|
164
|
-
else:
|
|
165
|
-
new_thd = 1 + ((old_thd - 1) / ThresholdConfig.API_THD_STEP)
|
|
166
|
-
else:
|
|
167
|
-
new_thd = min(min(incon_ratio), old_thd)
|
|
168
|
-
preheat_counter.set_api_preheat(self.pure_name, dtype_str, is_preheat=False)
|
|
169
|
-
return new_thd
|
|
170
|
-
|
|
171
|
-
def _adjust_threshold(self):
|
|
172
|
-
for dtype_str, compare_result in preheat_counter.preheat_record[
|
|
173
|
-
self.pure_name
|
|
174
|
-
].items():
|
|
175
|
-
new_thd = self._adjust_threshold_for_dtype(dtype_str, compare_result)
|
|
176
|
-
threshold = self._get_default_threshold(
|
|
177
|
-
preheat_counter.dtype_map.get(dtype_str)
|
|
178
|
-
)
|
|
179
|
-
preheat_counter.update_api_thd(
|
|
180
|
-
self.pure_name, dtype_str, new_thd, threshold
|
|
181
|
-
)
|
|
File without changes
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2024-2024, 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
|
-
from collections import defaultdict
|
|
18
|
-
|
|
19
|
-
import torch
|
|
20
|
-
from msprobe.core.common.file_utils import remove_path, save_npy, write_csv, create_directory
|
|
21
|
-
from msprobe.core.grad_probe.constant import level_adp
|
|
22
|
-
from msprobe.core.grad_probe.utils import check_numeral_list_ascend, data_in_list_target
|
|
23
|
-
from msprobe.pytorch.common.log import logger
|
|
24
|
-
from msprobe.pytorch.common.utils import get_rank_id, print_rank_0
|
|
25
|
-
from msprobe.pytorch.grad_probe.grad_stat_csv import GradStatCsv
|
|
26
|
-
|
|
27
|
-
if int(torch.__version__.split('.')[0]) >= 2:
|
|
28
|
-
from torch.optim.optimizer import register_optimizer_step_pre_hook
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class GradientMonitor:
|
|
32
|
-
|
|
33
|
-
def __init__(self, common_config, task_config):
|
|
34
|
-
level = task_config.grad_level
|
|
35
|
-
if level not in level_adp:
|
|
36
|
-
raise Exception(f"level is valid, not in {level_adp.keys()}")
|
|
37
|
-
self._level_adp = level_adp[level]
|
|
38
|
-
self._param_list = task_config.param_list
|
|
39
|
-
self._target_ranks = common_config.rank
|
|
40
|
-
logger.info(f"target rank {self._target_ranks}")
|
|
41
|
-
self._target_step = common_config.step
|
|
42
|
-
logger.info(f"target step {self._target_step}")
|
|
43
|
-
self._bounds = task_config.bounds
|
|
44
|
-
check_numeral_list_ascend(self._bounds)
|
|
45
|
-
self._output_path = common_config.dump_path
|
|
46
|
-
if not os.path.exists(self._output_path):
|
|
47
|
-
create_directory(self._output_path)
|
|
48
|
-
else:
|
|
49
|
-
logger.warning(f"the file in {self._output_path} will be deleted")
|
|
50
|
-
self._step = -1
|
|
51
|
-
self._param2name = defaultdict(str)
|
|
52
|
-
|
|
53
|
-
@property
|
|
54
|
-
def output_path(self):
|
|
55
|
-
return self._output_path
|
|
56
|
-
|
|
57
|
-
@staticmethod
|
|
58
|
-
def save_grad_direction(param_name, grad, save_path):
|
|
59
|
-
if not os.path.exists(save_path):
|
|
60
|
-
create_directory(save_path)
|
|
61
|
-
param_grad = grad.clone().detach()
|
|
62
|
-
is_positive = param_grad > 0
|
|
63
|
-
save_filepath = os.path.join(save_path, f"{param_name}.npy")
|
|
64
|
-
save_npy(is_positive.cpu().numpy(), save_filepath)
|
|
65
|
-
|
|
66
|
-
def monitor(self, model):
|
|
67
|
-
print_rank_0("> parameter names:")
|
|
68
|
-
for name, param in model.named_parameters():
|
|
69
|
-
self._param2name[param] = name
|
|
70
|
-
print_rank_0(f"\t{name}")
|
|
71
|
-
setattr(self, "_rank", get_rank_id())
|
|
72
|
-
if torch.distributed.is_initialized() and not data_in_list_target(getattr(self, "_rank"), self._target_ranks):
|
|
73
|
-
return
|
|
74
|
-
self._hook_optimizer()
|
|
75
|
-
|
|
76
|
-
def _hook_optimizer(self):
|
|
77
|
-
def optimizer_pre_step_hook(optimizer, args, kargs):
|
|
78
|
-
self._step += 1
|
|
79
|
-
logger.info(f"grad_probe: optimizer step {self._step}")
|
|
80
|
-
if not data_in_list_target(self._step, self._target_step):
|
|
81
|
-
return
|
|
82
|
-
output_lines = []
|
|
83
|
-
for param, param_name in self._param2name.items():
|
|
84
|
-
if not data_in_list_target(param_name, self._param_list):
|
|
85
|
-
continue
|
|
86
|
-
grad = param.main_grad if hasattr(param, "main_grad") else param.grad
|
|
87
|
-
if grad is None:
|
|
88
|
-
logger.info(f"grad is None: {param_name}")
|
|
89
|
-
continue
|
|
90
|
-
grad_info = GradStatCsv.generate_csv_line(param_name, self._level_adp, grad, self._bounds)
|
|
91
|
-
output_lines.append(grad_info)
|
|
92
|
-
if self._level_adp["have_grad_direction"]:
|
|
93
|
-
GradientMonitor.save_grad_direction(param_name, grad,
|
|
94
|
-
f'{self._output_path}/rank{self._rank}/step{self._step}')
|
|
95
|
-
output_dirpath = os.path.join(self._output_path, f"rank{getattr(self, '_rank')}")
|
|
96
|
-
if not os.path.isdir(output_dirpath):
|
|
97
|
-
create_directory(output_dirpath)
|
|
98
|
-
output_path = os.path.join(output_dirpath, f"grad_summary_{self._step}.csv")
|
|
99
|
-
if os.path.exists(output_path):
|
|
100
|
-
logger.warning(f"{output_path} will be deleted")
|
|
101
|
-
remove_path(output_path)
|
|
102
|
-
header_result = GradStatCsv.generate_csv_header(self._level_adp, self._bounds)
|
|
103
|
-
output_lines.insert(0, header_result)
|
|
104
|
-
write_csv(output_lines, output_path)
|
|
105
|
-
logger.info(f"write grad data to {output_path}")
|
|
106
|
-
|
|
107
|
-
if int(torch.__version__.split('.')[0]) >= 2:
|
|
108
|
-
register_optimizer_step_pre_hook(optimizer_pre_step_hook)
|