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,28 +1,37 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# -------------------------------------------------------------------------
|
|
4
|
+
# This file is part of the MindStudio project.
|
|
5
|
+
# Copyright (c) 2025 Huawei Technologies Co.,Ltd.
|
|
5
6
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
# You may obtain a copy of
|
|
7
|
+
# MindStudio is licensed under Mulan PSL v2.
|
|
8
|
+
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
9
|
+
# You may obtain a copy of Mulan PSL v2 at:
|
|
9
10
|
#
|
|
10
|
-
#
|
|
11
|
+
# http://license.coscl.org.cn/MulanPSL2
|
|
11
12
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# See the
|
|
16
|
-
#
|
|
13
|
+
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
14
|
+
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
15
|
+
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
16
|
+
# See the Mulan PSL v2 for more details.
|
|
17
|
+
# -------------------------------------------------------------------------
|
|
17
18
|
|
|
18
19
|
import os
|
|
19
20
|
import math
|
|
20
21
|
import torch
|
|
21
22
|
import numpy
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
try:
|
|
25
|
+
import torch_npu
|
|
26
|
+
except ImportError:
|
|
27
|
+
IS_GPU = True
|
|
28
|
+
else:
|
|
29
|
+
IS_GPU = False
|
|
30
|
+
|
|
31
|
+
from msprobe.pytorch.api_accuracy_checker.acc_check.acc_check_utils import hf_32_standard_api
|
|
24
32
|
from msprobe.pytorch.api_accuracy_checker.common.utils import check_object_type, get_full_data_path, \
|
|
25
|
-
CompareException, get_module_and_atttribute_name, get_attribute
|
|
33
|
+
CompareException, get_module_and_atttribute_name, get_attribute, is_dtype_fp8, is_dtype_hif8, is_hifloat8_tensor, \
|
|
34
|
+
is_dtype_fp8_or_hif8
|
|
26
35
|
from msprobe.core.common.file_utils import FileChecker, load_npy
|
|
27
36
|
from msprobe.pytorch.common.log import logger
|
|
28
37
|
from msprobe.pytorch.common.utils import load_pt
|
|
@@ -38,7 +47,10 @@ FLOAT_TYPE = [
|
|
|
38
47
|
'torch.double',
|
|
39
48
|
'torch.float16',
|
|
40
49
|
'torch.half',
|
|
41
|
-
'torch.bfloat16'
|
|
50
|
+
'torch.bfloat16',
|
|
51
|
+
'torch.float8_e4m3fn',
|
|
52
|
+
'torch.float8_e5m2',
|
|
53
|
+
'torch_npu.HiFloat8Tensor'
|
|
42
54
|
]
|
|
43
55
|
NUMPY_TYPE = [
|
|
44
56
|
"numpy.int8", "numpy.int16", "numpy.int32", "numpy.int64", "numpy.uint8", "numpy.uint16", "numpy.uint32",
|
|
@@ -61,6 +73,9 @@ def gen_data(info, api_name, need_grad, convert_type, real_data_path=None):
|
|
|
61
73
|
data_type = info.get('type')
|
|
62
74
|
data_path = info.get('datapath', info.get('data_name'))
|
|
63
75
|
data_path = get_full_data_path(data_path, real_data_path)
|
|
76
|
+
dtype = info.get('dtype')
|
|
77
|
+
if is_dtype_fp8_or_hif8(dtype) and IS_GPU:
|
|
78
|
+
raise CompareException("GPU does not need to support float8 data type")
|
|
64
79
|
if data_type in TENSOR_DATA_LIST:
|
|
65
80
|
if data_path:
|
|
66
81
|
data = gen_real_tensor(data_path, convert_type)
|
|
@@ -69,10 +84,20 @@ def gen_data(info, api_name, need_grad, convert_type, real_data_path=None):
|
|
|
69
84
|
if api_name in hf_32_standard_api and data.dtype == torch.float32:
|
|
70
85
|
data = fp32_to_hf32_to_fp32(data)
|
|
71
86
|
if info.get('requires_grad') and need_grad:
|
|
87
|
+
if is_hifloat8_tensor(data):
|
|
88
|
+
origin_dtype = info.get('dtype')
|
|
89
|
+
else:
|
|
90
|
+
origin_dtype = data.dtype
|
|
91
|
+
if is_dtype_fp8(origin_dtype):
|
|
92
|
+
data = data.to(torch.float32)
|
|
72
93
|
data.requires_grad_(True)
|
|
73
94
|
temp_data = data * 1
|
|
74
95
|
data = temp_data.type_as(data)
|
|
75
96
|
data.retain_grad()
|
|
97
|
+
if is_dtype_fp8(origin_dtype):
|
|
98
|
+
data = data.to(origin_dtype)
|
|
99
|
+
if is_dtype_hif8(origin_dtype):
|
|
100
|
+
data = torch_npu.HiFloat8Tensor.to_hifloat8(data)
|
|
76
101
|
elif data_type.startswith("numpy"):
|
|
77
102
|
if data_type not in NUMPY_TYPE:
|
|
78
103
|
raise Exception("{} is not supported now".format(data_type))
|
|
@@ -196,8 +221,13 @@ def gen_common_tensor(low_info, high_info, shape, data_dtype, convert_type):
|
|
|
196
221
|
tensor = torch.full(shape, high, dtype=dtype)
|
|
197
222
|
tensor[-1] = low
|
|
198
223
|
return tensor
|
|
224
|
+
|
|
199
225
|
low_scale, high_scale = low, high
|
|
200
|
-
|
|
226
|
+
if is_dtype_hif8(dtype):
|
|
227
|
+
finfo_dtype = torch.float32
|
|
228
|
+
else:
|
|
229
|
+
finfo_dtype = dtype
|
|
230
|
+
dtype_finfo = torch.finfo(finfo_dtype)
|
|
201
231
|
#适配老版json high和low为inf或-inf的情况,取dtype的最大值或最小值进行放缩
|
|
202
232
|
if high == float(CompareConst.INF):
|
|
203
233
|
high_scale = dtype_finfo.max
|
|
@@ -209,7 +239,11 @@ def gen_common_tensor(low_info, high_info, shape, data_dtype, convert_type):
|
|
|
209
239
|
low_scale = dtype_finfo.min
|
|
210
240
|
|
|
211
241
|
scale = high_scale - low_scale
|
|
212
|
-
|
|
242
|
+
if is_dtype_fp8(dtype) or is_dtype_hif8(dtype):
|
|
243
|
+
generate_dtype = torch.float32
|
|
244
|
+
else:
|
|
245
|
+
generate_dtype = dtype
|
|
246
|
+
rand01 = torch.rand(shape, dtype=generate_dtype)
|
|
213
247
|
tensor = rand01 * scale + low_scale
|
|
214
248
|
elif 'int' in data_dtype or 'long' in data_dtype:
|
|
215
249
|
low, high = int(low), int(high)
|
|
@@ -236,6 +270,12 @@ def gen_common_tensor(low_info, high_info, shape, data_dtype, convert_type):
|
|
|
236
270
|
if low_origin in [float(CompareConst.INF), float(CompareConst.NEG_INF)]:
|
|
237
271
|
tmp_tensor[0] = low_origin
|
|
238
272
|
data = tmp_tensor.reshape(shape)
|
|
273
|
+
if is_dtype_fp8(dtype):
|
|
274
|
+
data = data.to(dtype)
|
|
275
|
+
if is_dtype_hif8(dtype):
|
|
276
|
+
if IS_GPU:
|
|
277
|
+
raise CompareException("GPU does not support torch_npu.HiFloat8Tensor")
|
|
278
|
+
data = torch_npu.HiFloat8Tensor.to_hifloat8(data)
|
|
239
279
|
return data
|
|
240
280
|
|
|
241
281
|
|
msprobe/pytorch/api_accuracy_checker/{run_ut/multi_run_ut.py → acc_check/multi_acc_check.py}
RENAMED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# -------------------------------------------------------------------------
|
|
4
|
+
# This file is part of the MindStudio project.
|
|
5
|
+
# Copyright (c) 2025 Huawei Technologies Co.,Ltd.
|
|
5
6
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
# You may obtain a copy of
|
|
7
|
+
# MindStudio is licensed under Mulan PSL v2.
|
|
8
|
+
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
9
|
+
# You may obtain a copy of Mulan PSL v2 at:
|
|
9
10
|
#
|
|
10
|
-
#
|
|
11
|
+
# http://license.coscl.org.cn/MulanPSL2
|
|
11
12
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# See the
|
|
16
|
-
#
|
|
13
|
+
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
14
|
+
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
15
|
+
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
16
|
+
# See the Mulan PSL v2 for more details.
|
|
17
|
+
# -------------------------------------------------------------------------
|
|
17
18
|
|
|
18
19
|
import subprocess
|
|
19
20
|
import json
|
|
@@ -26,8 +27,8 @@ import threading
|
|
|
26
27
|
from collections import namedtuple
|
|
27
28
|
from itertools import cycle
|
|
28
29
|
from tqdm import tqdm
|
|
29
|
-
from msprobe.pytorch.api_accuracy_checker.
|
|
30
|
-
from msprobe.pytorch.api_accuracy_checker.
|
|
30
|
+
from msprobe.pytorch.api_accuracy_checker.acc_check.acc_check import _acc_check_parser, preprocess_forward_content
|
|
31
|
+
from msprobe.pytorch.api_accuracy_checker.acc_check.acc_check_utils import get_validated_result_csv_path, \
|
|
31
32
|
get_validated_details_csv_path
|
|
32
33
|
from msprobe.pytorch.api_accuracy_checker.compare.compare import Comparator
|
|
33
34
|
from msprobe.pytorch.common import parse_json_info_forward_backward
|
|
@@ -39,12 +40,7 @@ from msprobe.core.common.const import FileCheckConst, Const
|
|
|
39
40
|
from msprobe.core.common.utils import CompareException
|
|
40
41
|
|
|
41
42
|
|
|
42
|
-
def split_json_file(input_file, num_splits, filter_api
|
|
43
|
-
max_processes = len(device_id) * 8
|
|
44
|
-
if num_splits > max_processes:
|
|
45
|
-
logger.warning(f"A device supports a maximum of 8 processes. "
|
|
46
|
-
f"The total number of processes exceeds the limit, and it is set to {max_processes}.")
|
|
47
|
-
num_splits = max_processes
|
|
43
|
+
def split_json_file(input_file, num_splits, filter_api):
|
|
48
44
|
forward_data, backward_data, real_data_path = parse_json_info_forward_backward(input_file)
|
|
49
45
|
input_dir = os.path.dirname(os.path.abspath(input_file))
|
|
50
46
|
if filter_api:
|
|
@@ -81,19 +77,10 @@ def split_json_file(input_file, num_splits, filter_api, device_id):
|
|
|
81
77
|
}
|
|
82
78
|
}
|
|
83
79
|
split_filename = os.path.join(input_dir, f"temp_part{i}.json")
|
|
80
|
+
save_json(split_filename, temp_data)
|
|
84
81
|
split_files.append(split_filename)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
except Exception as e:
|
|
88
|
-
logger.error(f"An error occurred while saving split file: {e}")
|
|
89
|
-
for file in split_files:
|
|
90
|
-
try:
|
|
91
|
-
remove_path(file)
|
|
92
|
-
except Exception:
|
|
93
|
-
logger.error(f"File not found or could not be deleted: {file}")
|
|
94
|
-
msg = 'ERROR: Split json file failed, please check the input file and try again.'
|
|
95
|
-
raise CompareException(CompareException.PARSE_FILE_ERROR, msg) from e
|
|
96
|
-
return split_files, total_items, num_splits
|
|
82
|
+
|
|
83
|
+
return split_files, total_items
|
|
97
84
|
|
|
98
85
|
|
|
99
86
|
def signal_handler(signum, frame):
|
|
@@ -110,15 +97,15 @@ def run_parallel_ut(config):
|
|
|
110
97
|
processes = []
|
|
111
98
|
device_id_cycle = cycle(config.device_id)
|
|
112
99
|
if config.save_error_data_flag:
|
|
113
|
-
logger.info("
|
|
114
|
-
logger.info(f"Starting parallel
|
|
100
|
+
logger.info("acc_check task error data will be saved")
|
|
101
|
+
logger.info(f"Starting parallel acc_check with {config.num_splits} processes")
|
|
115
102
|
progress_bar = tqdm(total=config.total_items, desc="Total items", unit="items")
|
|
116
103
|
|
|
117
104
|
def create_cmd(api_info, dev_id):
|
|
118
105
|
dirname, filename = os.path.split(os.path.abspath(__file__))
|
|
119
|
-
|
|
106
|
+
acc_check_path = os.path.join(dirname, "acc_check.py")
|
|
120
107
|
cmd = [
|
|
121
|
-
sys.executable,
|
|
108
|
+
sys.executable, acc_check_path,
|
|
122
109
|
'-api_info', api_info,
|
|
123
110
|
*(['-o', config.out_path] if config.out_path else []),
|
|
124
111
|
'-d', str(dev_id),
|
|
@@ -132,8 +119,7 @@ def run_parallel_ut(config):
|
|
|
132
119
|
def read_process_output(process):
|
|
133
120
|
try:
|
|
134
121
|
while True:
|
|
135
|
-
|
|
136
|
-
if process.poll() is not None or process.stdout is None:
|
|
122
|
+
if process.poll() is not None:
|
|
137
123
|
break
|
|
138
124
|
output = process.stdout.readline()
|
|
139
125
|
if output == '':
|
|
@@ -181,7 +167,7 @@ def run_parallel_ut(config):
|
|
|
181
167
|
|
|
182
168
|
try:
|
|
183
169
|
for process in processes:
|
|
184
|
-
process.
|
|
170
|
+
process.communicate(timeout=None)
|
|
185
171
|
except KeyboardInterrupt:
|
|
186
172
|
logger.warning("Interrupted by user, terminating processes and cleaning up...")
|
|
187
173
|
except Exception as e:
|
|
@@ -193,8 +179,9 @@ def run_parallel_ut(config):
|
|
|
193
179
|
completed_items = len(result_file)
|
|
194
180
|
progress_bar.update(completed_items - progress_bar.n)
|
|
195
181
|
if progress_bar.n < config.total_items:
|
|
196
|
-
logger.warning("The
|
|
197
|
-
"
|
|
182
|
+
logger.warning("The acc_check task has not been completed. The parameter '-csv_path' along with the "
|
|
183
|
+
"path to "
|
|
184
|
+
"the result CSV file will be utilized to resume the acc_check task.")
|
|
198
185
|
clean_up()
|
|
199
186
|
progress_bar_thread.join()
|
|
200
187
|
try:
|
|
@@ -230,9 +217,7 @@ def prepare_config(args):
|
|
|
230
217
|
create_directory(out_path)
|
|
231
218
|
out_path_checker = FileChecker(out_path, FileCheckConst.DIR, ability=FileCheckConst.WRITE_ABLE)
|
|
232
219
|
out_path = out_path_checker.common_check()
|
|
233
|
-
split_files, total_items
|
|
234
|
-
args.filter_api, args.device_id)
|
|
235
|
-
args.num_splits = modified_num_splits
|
|
220
|
+
split_files, total_items = split_json_file(api_info, args.num_splits, args.filter_api)
|
|
236
221
|
config_path = args.config_path if args.config_path else None
|
|
237
222
|
if config_path:
|
|
238
223
|
config_path_checker = FileChecker(config_path, FileCheckConst.FILE,
|
|
@@ -246,8 +231,8 @@ def prepare_config(args):
|
|
|
246
231
|
else:
|
|
247
232
|
result_csv_path = get_validated_result_csv_path(args.result_csv_path, 'result')
|
|
248
233
|
details_csv_path = get_validated_details_csv_path(result_csv_path)
|
|
249
|
-
logger.info(f"
|
|
250
|
-
logger.info(f"
|
|
234
|
+
logger.info(f"acc_check task result will be saved in {result_csv_path}")
|
|
235
|
+
logger.info(f"acc_check task details will be saved in {details_csv_path}")
|
|
251
236
|
return ParallelUTConfig(split_files, out_path, args.num_splits, args.save_error_data,
|
|
252
237
|
args.jit_compile, args.device_id, result_csv_path,
|
|
253
238
|
total_items, config_path)
|
|
@@ -256,8 +241,8 @@ def prepare_config(args):
|
|
|
256
241
|
def main():
|
|
257
242
|
signal.signal(signal.SIGINT, signal_handler)
|
|
258
243
|
signal.signal(signal.SIGTERM, signal_handler)
|
|
259
|
-
parser = argparse.ArgumentParser(description='Run
|
|
260
|
-
|
|
244
|
+
parser = argparse.ArgumentParser(description='Run acc_check in parallel')
|
|
245
|
+
_acc_check_parser(parser)
|
|
261
246
|
parser.add_argument('-n', '--num_splits', type=int, choices=range(1, 65), default=8,
|
|
262
247
|
help='Number of splits for parallel processing. Range: 1-64')
|
|
263
248
|
args = parser.parse_args()
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# -------------------------------------------------------------------------
|
|
4
|
+
# This file is part of the MindStudio project.
|
|
5
|
+
# Copyright (c) 2025 Huawei Technologies Co.,Ltd.
|
|
5
6
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
# You may obtain a copy of
|
|
7
|
+
# MindStudio is licensed under Mulan PSL v2.
|
|
8
|
+
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
9
|
+
# You may obtain a copy of Mulan PSL v2 at:
|
|
9
10
|
#
|
|
10
|
-
#
|
|
11
|
+
# http://license.coscl.org.cn/MulanPSL2
|
|
11
12
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# See the
|
|
16
|
-
#
|
|
13
|
+
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
14
|
+
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
15
|
+
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
16
|
+
# See the Mulan PSL v2 for more details.
|
|
17
|
+
# -------------------------------------------------------------------------
|
|
17
18
|
|
|
18
19
|
import argparse
|
|
19
20
|
import os
|
|
@@ -29,8 +30,8 @@ else:
|
|
|
29
30
|
current_device = "npu"
|
|
30
31
|
import torch
|
|
31
32
|
from tqdm import tqdm
|
|
32
|
-
from msprobe.pytorch.api_accuracy_checker.
|
|
33
|
-
from msprobe.pytorch.api_accuracy_checker.
|
|
33
|
+
from msprobe.pytorch.api_accuracy_checker.acc_check.acc_check import generate_device_params, get_api_info
|
|
34
|
+
from msprobe.pytorch.api_accuracy_checker.acc_check.acc_check_utils import exec_api, is_unsupported_api, ExecParams
|
|
34
35
|
from msprobe.core.common.file_utils import check_link, FileChecker
|
|
35
36
|
from msprobe.pytorch.api_accuracy_checker.common.utils import extract_basic_api_segments
|
|
36
37
|
from msprobe.core.common.const import FileCheckConst, Const
|
|
@@ -89,7 +90,7 @@ def is_bool_output(x):
|
|
|
89
90
|
|
|
90
91
|
|
|
91
92
|
def run_overflow_check(forward_file):
|
|
92
|
-
logger.info("start
|
|
93
|
+
logger.info("start acc_check test")
|
|
93
94
|
forward_content, _, real_data_path = parse_json_info_forward_backward(forward_file)
|
|
94
95
|
if real_data_path:
|
|
95
96
|
dump_path = os.path.dirname(forward_file)
|
|
@@ -112,7 +113,7 @@ def run_overflow_check(forward_file):
|
|
|
112
113
|
logger.warning(f"API {api_name} not support matmul primitive in CPU due to pytorch bug, "
|
|
113
114
|
"so it will be skipped.")
|
|
114
115
|
else:
|
|
115
|
-
logger.error(f"Run {api_full_name}
|
|
116
|
+
logger.error(f"Run {api_full_name} acc_check Error: %s" % str(err))
|
|
116
117
|
|
|
117
118
|
|
|
118
119
|
def run_torch_api(api_full_name, api_info_dict, real_data_path):
|
|
@@ -125,7 +126,7 @@ def run_torch_api(api_full_name, api_info_dict, real_data_path):
|
|
|
125
126
|
device_info_kwargs = kwargs.get(Const.DEVICE)
|
|
126
127
|
if device_info_kwargs and device_info_kwargs.get(Const.VALUE):
|
|
127
128
|
kwargs[Const.DEVICE] = current_device
|
|
128
|
-
npu_args, npu_kwargs = generate_device_params(args, kwargs, False, api_name)
|
|
129
|
+
npu_args, npu_kwargs, _ = generate_device_params(args, kwargs, False, api_name)
|
|
129
130
|
if kwargs.get(Const.DEVICE):
|
|
130
131
|
del kwargs[Const.DEVICE]
|
|
131
132
|
cpu_exec_params = ExecParams(api_type, api_name, Const.CPU_LOWERCASE, args, kwargs, False, None)
|
|
@@ -156,7 +157,7 @@ def _run_overflow_check_parser(parser):
|
|
|
156
157
|
required=True)
|
|
157
158
|
parser.add_argument("-j", "--jit_compile", dest="jit_compile", help="<optional> whether to turn on jit compile",
|
|
158
159
|
default=False, required=False)
|
|
159
|
-
parser.add_argument("-d", "--device", dest="device_id", type=int, help="<optional> set NPU device id to
|
|
160
|
+
parser.add_argument("-d", "--device", dest="device_id", type=int, help="<optional> set NPU device id to acc_check",
|
|
160
161
|
default=0, required=False)
|
|
161
162
|
|
|
162
163
|
|
|
@@ -166,7 +167,7 @@ def _run_overflow_check(parser=None):
|
|
|
166
167
|
_run_overflow_check_parser(parser)
|
|
167
168
|
args = parser.parse_args(sys.argv[1:])
|
|
168
169
|
_run_overflow_check_command(args)
|
|
169
|
-
logger.info("
|
|
170
|
+
logger.info("acc_check task completed.")
|
|
170
171
|
|
|
171
172
|
|
|
172
173
|
def _run_overflow_check_command(args):
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# -------------------------------------------------------------------------
|
|
4
|
+
# This file is part of the MindStudio project.
|
|
5
|
+
# Copyright (c) 2025 Huawei Technologies Co.,Ltd.
|
|
5
6
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
# You may obtain a copy of
|
|
7
|
+
# MindStudio is licensed under Mulan PSL v2.
|
|
8
|
+
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
9
|
+
# You may obtain a copy of Mulan PSL v2 at:
|
|
9
10
|
#
|
|
10
|
-
#
|
|
11
|
+
# http://license.coscl.org.cn/MulanPSL2
|
|
11
12
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# See the
|
|
16
|
-
#
|
|
13
|
+
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
14
|
+
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
15
|
+
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
16
|
+
# See the Mulan PSL v2 for more details.
|
|
17
|
+
# -------------------------------------------------------------------------
|
|
17
18
|
|
|
18
19
|
import os
|
|
19
20
|
from collections import namedtuple
|
|
20
21
|
from msprobe.core.common.file_utils import load_yaml, check_file_or_directory_path
|
|
21
22
|
from msprobe.core.common.utils import is_int
|
|
22
|
-
from msprobe.pytorch.pt_config import
|
|
23
|
+
from msprobe.pytorch.dump.pt_config import ACCCheckConfig
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
AccCheckConfig = namedtuple('AccCheckConfig', ['forward_content', 'backward_content',
|
|
27
|
+
'result_csv_path', 'details_csv_path',
|
|
28
|
+
'save_error_data', 'is_continue_acc_check', 'real_data_path', 'white_list',
|
|
27
29
|
'black_list', 'error_data_path'])
|
|
28
30
|
|
|
29
31
|
|
|
@@ -56,11 +58,11 @@ class Config:
|
|
|
56
58
|
if key == 'precision' and (value < 0 or value > 20):
|
|
57
59
|
raise ValueError("precision must be greater than or equal to 0 and less than 21")
|
|
58
60
|
if key == 'white_list':
|
|
59
|
-
|
|
61
|
+
ACCCheckConfig.check_filter_list_config(key, value)
|
|
60
62
|
if key == 'black_list':
|
|
61
|
-
|
|
63
|
+
ACCCheckConfig.check_filter_list_config(key, value)
|
|
62
64
|
if key == 'error_data_path':
|
|
63
|
-
|
|
65
|
+
ACCCheckConfig.check_error_data_path_config(value)
|
|
64
66
|
return value
|
|
65
67
|
|
|
66
68
|
|
|
@@ -84,14 +86,14 @@ class CheckerConfig:
|
|
|
84
86
|
self.error_data_path = task_config.error_data_path
|
|
85
87
|
|
|
86
88
|
|
|
87
|
-
def
|
|
88
|
-
return
|
|
89
|
+
def get_acc_check_config(self, **config_params):
|
|
90
|
+
return AccCheckConfig(
|
|
89
91
|
forward_content=config_params.get('forward_content'),
|
|
90
92
|
backward_content=config_params.get('backward_content'),
|
|
91
93
|
result_csv_path=config_params.get('result_csv_path'),
|
|
92
94
|
details_csv_path=config_params.get('details_csv_path'),
|
|
93
95
|
save_error_data=config_params.get('save_error_data'),
|
|
94
|
-
|
|
96
|
+
is_continue_acc_check=config_params.get('is_continue_acc_check'),
|
|
95
97
|
real_data_path=config_params.get('real_data_path'),
|
|
96
98
|
white_list=self.white_list.copy() if self.white_list else [],
|
|
97
99
|
black_list=self.black_list.copy() if self.black_list else [],
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# -------------------------------------------------------------------------
|
|
4
|
+
# This file is part of the MindStudio project.
|
|
5
|
+
# Copyright (c) 2025 Huawei Technologies Co.,Ltd.
|
|
5
6
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
# You may obtain a copy of
|
|
7
|
+
# MindStudio is licensed under Mulan PSL v2.
|
|
8
|
+
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
9
|
+
# You may obtain a copy of Mulan PSL v2 at:
|
|
9
10
|
#
|
|
10
|
-
#
|
|
11
|
+
# http://license.coscl.org.cn/MulanPSL2
|
|
11
12
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# See the
|
|
16
|
-
#
|
|
13
|
+
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
14
|
+
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
15
|
+
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
16
|
+
# See the Mulan PSL v2 for more details.
|
|
17
|
+
# -------------------------------------------------------------------------
|
|
17
18
|
|
|
18
19
|
import os
|
|
19
20
|
import re
|
|
@@ -162,10 +163,10 @@ class UtDataProcessor:
|
|
|
162
163
|
self.index += 1
|
|
163
164
|
elif isinstance(element, (list, tuple)):
|
|
164
165
|
for item in element:
|
|
165
|
-
self._save_recursive(api_name, item, depth=depth+1)
|
|
166
|
+
self._save_recursive(api_name, item, depth=depth + 1)
|
|
166
167
|
elif isinstance(element, dict):
|
|
167
168
|
for value in element.values():
|
|
168
|
-
self._save_recursive(api_name, value, depth=depth+1)
|
|
169
|
+
self._save_recursive(api_name, value, depth=depth + 1)
|
|
169
170
|
else:
|
|
170
171
|
self.index += 1
|
|
171
172
|
|
|
@@ -259,3 +260,61 @@ def get_attribute(module_name, attribute_name):
|
|
|
259
260
|
logger.error(f"Failed to get attribute {attribute_name} from module {module_name}: {e}")
|
|
260
261
|
raise CompareException(CompareException.INVALID_ATTRIBUTE_ERROR) from e
|
|
261
262
|
return attribute
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def is_dtype_fp8(dtype):
|
|
266
|
+
"""
|
|
267
|
+
Function Description:
|
|
268
|
+
Check if the data type is float8.
|
|
269
|
+
Parameter:
|
|
270
|
+
dtype: Data type (torch.dtype or string).
|
|
271
|
+
Return:
|
|
272
|
+
True or False.
|
|
273
|
+
"""
|
|
274
|
+
# 处理字符串类型的 dtype
|
|
275
|
+
if isinstance(dtype, str):
|
|
276
|
+
return dtype in ["torch.float8_e4m3fn", "torch.float8_e5m2"]
|
|
277
|
+
|
|
278
|
+
# 处理 torch.dtype 类型
|
|
279
|
+
return dtype in [torch.float8_e4m3fn, torch.float8_e5m2]
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
def is_dtype_hif8(dtype):
|
|
283
|
+
"""
|
|
284
|
+
Function Description:
|
|
285
|
+
Check if the data type is HiFloat8Tensor.
|
|
286
|
+
Parameter:
|
|
287
|
+
dtype: Data type (string).
|
|
288
|
+
Return:
|
|
289
|
+
True or False.
|
|
290
|
+
"""
|
|
291
|
+
# 处理字符串类型的 dtype
|
|
292
|
+
if isinstance(dtype, str):
|
|
293
|
+
dtype_str = dtype
|
|
294
|
+
# 处理类对象或 dtype 对象
|
|
295
|
+
else:
|
|
296
|
+
dtype_str = str(dtype)
|
|
297
|
+
|
|
298
|
+
# 检查是否匹配 HiFloat8Tensor 的字符串表示
|
|
299
|
+
return (
|
|
300
|
+
dtype_str == "<class 'torch_npu.utils.hif8_tensor.HiFloat8Tensor'>" or
|
|
301
|
+
dtype_str == "torch_npu.HiFloat8Tensor"
|
|
302
|
+
)
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
def is_dtype_fp8_or_hif8(dtype):
|
|
306
|
+
"""
|
|
307
|
+
Function Description:
|
|
308
|
+
Check if the data type is FP8 (native or HiFloat8 variant).
|
|
309
|
+
Parameters:
|
|
310
|
+
dtype: Data type (torch.dtype, class, or string).
|
|
311
|
+
Returns:
|
|
312
|
+
True if dtype is FP8 or HiFloat8, False otherwise.
|
|
313
|
+
"""
|
|
314
|
+
return is_dtype_fp8(dtype) or is_dtype_hif8(dtype)
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
def is_hifloat8_tensor(tensor):
|
|
318
|
+
if not IS_GPU and hasattr(torch_npu, "HiFloat8Tensor") and isinstance(tensor, torch_npu.HiFloat8Tensor):
|
|
319
|
+
return True
|
|
320
|
+
return False
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# -------------------------------------------------------------------------
|
|
4
|
+
# This file is part of the MindStudio project.
|
|
5
|
+
# Copyright (c) 2025 Huawei Technologies Co.,Ltd.
|
|
5
6
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
# You may obtain a copy of
|
|
7
|
+
# MindStudio is licensed under Mulan PSL v2.
|
|
8
|
+
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
9
|
+
# You may obtain a copy of Mulan PSL v2 at:
|
|
9
10
|
#
|
|
10
|
-
#
|
|
11
|
+
# http://license.coscl.org.cn/MulanPSL2
|
|
11
12
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# See the
|
|
16
|
-
#
|
|
13
|
+
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
14
|
+
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
15
|
+
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
16
|
+
# See the Mulan PSL v2 for more details.
|
|
17
|
+
# -------------------------------------------------------------------------
|
|
17
18
|
|
|
18
19
|
# 定义比对算法及比对标准
|
|
19
20
|
import math
|
|
@@ -22,6 +23,7 @@ import numpy as np
|
|
|
22
23
|
|
|
23
24
|
from msprobe.pytorch.api_accuracy_checker.compare.compare_utils import ULP_PARAMETERS
|
|
24
25
|
from msprobe.pytorch.api_accuracy_checker.precision_standard.standard_config import StandardConfig
|
|
26
|
+
from msprobe.pytorch.api_accuracy_checker.common.utils import is_dtype_fp8
|
|
25
27
|
from msprobe.core.common.const import CompareConst
|
|
26
28
|
|
|
27
29
|
|
|
@@ -212,6 +214,8 @@ def check_norm_value(normal_value_mask, rel_err, rtol):
|
|
|
212
214
|
|
|
213
215
|
|
|
214
216
|
def get_ulp_err(bench_output, device_output, dtype):
|
|
217
|
+
if is_dtype_fp8(dtype):
|
|
218
|
+
return calc_ulp_err_fp8(bench_output, device_output)
|
|
215
219
|
parameters = ULP_PARAMETERS.get(dtype)
|
|
216
220
|
min_eb = parameters.get('min_eb')[0]
|
|
217
221
|
exponent_num = parameters.get('exponent_num')[0]
|
|
@@ -227,6 +231,32 @@ def get_ulp_err(bench_output, device_output, dtype):
|
|
|
227
231
|
return ulp_err
|
|
228
232
|
|
|
229
233
|
|
|
234
|
+
def calc_ulp_err_fp8(bench_output, device_output):
|
|
235
|
+
# compute ulp error of FP8
|
|
236
|
+
x = np.float64(bench_output)
|
|
237
|
+
hi_fp8 = np.float64(device_output)
|
|
238
|
+
|
|
239
|
+
ex = np.log2(abs(x) + 2**(-1000))
|
|
240
|
+
ex[ex < -22] = -22
|
|
241
|
+
exponent = np.floor(ex) # Exponent
|
|
242
|
+
|
|
243
|
+
eabs = np.abs(exponent)
|
|
244
|
+
wm = np.zeros_like(x) # Mantissa width Init
|
|
245
|
+
wm[eabs <= 15] = 1
|
|
246
|
+
wm[eabs <= 7] = 2
|
|
247
|
+
wm[eabs <= 3] = 3
|
|
248
|
+
ulp_err = (hi_fp8 - x) * 2 ** (-exponent + wm) # for wm = 1~3
|
|
249
|
+
|
|
250
|
+
s_ex = ex * np.where(x >= 0, 1, -1)
|
|
251
|
+
eh = np.log2(abs(hi_fp8) + 2**(-1000))
|
|
252
|
+
|
|
253
|
+
s_eh = eh * np.where(hi_fp8 >= 0, 1, -1)
|
|
254
|
+
ulp_err1 = s_eh - s_ex # for wm = 0
|
|
255
|
+
|
|
256
|
+
ulp_err[wm == 0] = ulp_err1[wm == 0] # Merge 2 cases
|
|
257
|
+
return ulp_err
|
|
258
|
+
|
|
259
|
+
|
|
230
260
|
def calc_ulp_err(bench_output, device_output, eb, exponent_num, data_type):
|
|
231
261
|
return (device_output.astype(data_type) - bench_output).astype(data_type) * \
|
|
232
262
|
np.exp2(-eb + exponent_num).astype(data_type)
|