mindstudio-probe 1.0.3__py3-none-any.whl → 1.0.4__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-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/LICENSE +201 -201
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/METADATA +36 -34
- mindstudio_probe-1.0.4.dist-info/RECORD +276 -0
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/WHEEL +1 -1
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/entry_points.txt +1 -0
- msprobe/README.md +101 -237
- msprobe/{config/config.json → config.json} +49 -49
- msprobe/core/advisor/advisor.py +124 -124
- msprobe/core/advisor/advisor_const.py +59 -59
- msprobe/core/advisor/advisor_result.py +58 -58
- msprobe/core/common/const.py +341 -318
- msprobe/core/common/exceptions.py +99 -99
- msprobe/core/common/{file_check.py → file_utils.py} +478 -283
- msprobe/core/common/log.py +76 -69
- msprobe/core/common/utils.py +385 -616
- msprobe/core/common_config.py +85 -71
- msprobe/core/compare/acc_compare.py +299 -298
- msprobe/core/compare/check.py +95 -95
- msprobe/core/compare/compare_cli.py +49 -49
- msprobe/core/compare/highlight.py +223 -222
- msprobe/core/compare/multiprocessing_compute.py +149 -149
- msprobe/core/compare/npy_compare.py +295 -295
- msprobe/core/compare/utils.py +430 -429
- msprobe/core/data_dump/data_collector.py +154 -144
- msprobe/core/data_dump/data_processor/base.py +314 -293
- msprobe/core/data_dump/data_processor/factory.py +59 -59
- msprobe/core/data_dump/data_processor/mindspore_processor.py +186 -198
- msprobe/core/data_dump/data_processor/pytorch_processor.py +366 -389
- msprobe/core/data_dump/json_writer.py +96 -116
- msprobe/core/data_dump/scope.py +178 -178
- msprobe/core/grad_probe/constant.py +70 -70
- msprobe/core/grad_probe/grad_compare.py +171 -175
- msprobe/core/grad_probe/utils.py +64 -52
- msprobe/docs/01.installation.md +89 -0
- msprobe/docs/02.config_introduction.md +165 -0
- msprobe/docs/03.config_examples.md +247 -0
- msprobe/docs/04.acl_config_examples.md +76 -0
- msprobe/docs/05.data_dump_PyTorch.md +198 -0
- msprobe/docs/06.data_dump_MindSpore.md +243 -0
- msprobe/docs/07.accuracy_checker_PyTorch.md +274 -0
- msprobe/docs/08.accuracy_checker_online_PyTorch.md +198 -0
- msprobe/docs/09.accuracy_checker_MindSpore.md +68 -0
- msprobe/docs/10.accuracy_compare_PyTorch.md +245 -0
- msprobe/docs/11.accuracy_compare_MindSpore.md +202 -0
- msprobe/docs/12.overflow_check_PyTorch.md +79 -0
- msprobe/docs/13.overflow_check_MindSpore.md +31 -0
- msprobe/{pytorch/doc/parse_tool.md → docs/14.data_parse_PyTorch.md} +283 -286
- msprobe/docs/15.free_benchmarking_PyTorch.md +164 -0
- msprobe/{doc/grad_probe/grad_probe.md → docs/17.grad_probe.md} +207 -207
- msprobe/docs/FAQ_PyTorch.md +177 -0
- msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +146 -0
- msprobe/docs/img/free_benchmark_framework.png +0 -0
- msprobe/mindspore/__init__.py +1 -1
- msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +254 -245
- msprobe/mindspore/api_accuracy_checker/api_info.py +69 -69
- msprobe/mindspore/api_accuracy_checker/api_runner.py +155 -151
- msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +196 -196
- msprobe/mindspore/api_accuracy_checker/cmd_parser.py +6 -0
- msprobe/mindspore/api_accuracy_checker/compute_element.py +238 -223
- msprobe/mindspore/api_accuracy_checker/main.py +8 -15
- msprobe/mindspore/api_accuracy_checker/type_mapping.py +113 -113
- msprobe/mindspore/api_accuracy_checker/utils.py +79 -62
- msprobe/mindspore/cell_processor.py +34 -34
- msprobe/mindspore/common/const.py +106 -87
- msprobe/mindspore/common/log.py +37 -37
- msprobe/mindspore/common/utils.py +81 -57
- msprobe/mindspore/compare/distributed_compare.py +75 -75
- msprobe/mindspore/compare/ms_compare.py +219 -117
- msprobe/mindspore/compare/ms_graph_compare.py +348 -317
- msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -399
- msprobe/mindspore/debugger/debugger_config.py +66 -74
- msprobe/mindspore/debugger/precision_debugger.py +126 -107
- msprobe/mindspore/dump/dump_tool_factory.py +35 -35
- msprobe/mindspore/dump/hook_cell/api_registry.py +118 -104
- msprobe/mindspore/dump/hook_cell/hook_cell.py +55 -53
- msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +922 -925
- msprobe/mindspore/dump/hook_cell/wrap_api.py +113 -0
- msprobe/mindspore/dump/jit_dump.py +72 -56
- msprobe/mindspore/dump/kernel_graph_dump.py +59 -60
- msprobe/mindspore/dump/kernel_kbyk_dump.py +64 -65
- msprobe/mindspore/free_benchmark/api_pynative_self_check.py +116 -116
- msprobe/mindspore/free_benchmark/common/config.py +12 -12
- msprobe/mindspore/free_benchmark/common/handler_params.py +17 -17
- msprobe/mindspore/free_benchmark/common/utils.py +71 -71
- msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -842
- msprobe/mindspore/free_benchmark/decorator/dec_forward.py +43 -42
- msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +107 -107
- msprobe/mindspore/free_benchmark/handler/base_handler.py +90 -90
- msprobe/mindspore/free_benchmark/handler/check_handler.py +41 -41
- msprobe/mindspore/free_benchmark/handler/fix_handler.py +36 -36
- msprobe/mindspore/free_benchmark/handler/handler_factory.py +21 -21
- msprobe/mindspore/free_benchmark/perturbation/add_noise.py +67 -67
- msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +21 -21
- msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +63 -63
- msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +51 -0
- msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +35 -34
- msprobe/mindspore/free_benchmark/perturbation/no_change.py +12 -12
- msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +29 -27
- msprobe/mindspore/free_benchmark/self_check_tool_factory.py +33 -33
- msprobe/mindspore/grad_probe/global_context.py +90 -91
- msprobe/mindspore/grad_probe/grad_analyzer.py +231 -231
- msprobe/mindspore/grad_probe/grad_monitor.py +27 -27
- msprobe/mindspore/grad_probe/grad_stat_csv.py +131 -131
- msprobe/mindspore/grad_probe/hook.py +94 -92
- msprobe/mindspore/grad_probe/utils.py +29 -28
- msprobe/mindspore/ms_config.py +128 -126
- msprobe/mindspore/overflow_check/kernel_graph_overflow_check.py +44 -45
- msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +34 -34
- msprobe/mindspore/runtime.py +4 -4
- msprobe/mindspore/service.py +378 -354
- msprobe/mindspore/task_handler_factory.py +24 -24
- msprobe/msprobe.py +105 -107
- msprobe/pytorch/__init__.py +3 -3
- msprobe/pytorch/api_accuracy_checker/common/config.py +53 -55
- msprobe/pytorch/api_accuracy_checker/common/utils.py +214 -165
- msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +213 -213
- msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +606 -581
- msprobe/pytorch/api_accuracy_checker/compare/api_precision_standard.yaml +132 -132
- msprobe/pytorch/api_accuracy_checker/compare/api_precision_threshold.yaml +390 -390
- msprobe/pytorch/api_accuracy_checker/compare/compare.py +386 -381
- msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +73 -73
- msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +245 -244
- msprobe/pytorch/api_accuracy_checker/config.yaml +10 -10
- msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +335 -332
- msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +200 -199
- msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +133 -134
- msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +592 -581
- msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +70 -74
- msprobe/pytorch/api_accuracy_checker/run_ut/torch_ut_setting.json +7 -4
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +197 -202
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +325 -324
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +204 -204
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +219 -218
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +10 -10
- msprobe/pytorch/bench_functions/__init__.py +15 -15
- msprobe/pytorch/bench_functions/apply_adam_w.py +28 -28
- msprobe/pytorch/bench_functions/confusion_transpose.py +19 -19
- msprobe/pytorch/bench_functions/fast_gelu.py +55 -55
- msprobe/pytorch/bench_functions/layer_norm_eval.py +6 -6
- msprobe/pytorch/bench_functions/linear.py +12 -12
- msprobe/pytorch/bench_functions/matmul_backward.py +48 -48
- msprobe/pytorch/bench_functions/npu_fusion_attention.py +509 -421
- msprobe/pytorch/bench_functions/rms_norm.py +15 -15
- msprobe/pytorch/bench_functions/rotary_mul.py +52 -52
- msprobe/pytorch/bench_functions/scaled_mask_softmax.py +26 -26
- msprobe/pytorch/bench_functions/swiglu.py +55 -55
- msprobe/pytorch/common/__init__.py +2 -2
- msprobe/pytorch/common/compare_script.template +14 -14
- msprobe/pytorch/common/log.py +20 -31
- msprobe/pytorch/common/parse_json.py +39 -39
- msprobe/pytorch/common/utils.py +305 -300
- msprobe/pytorch/compare/distributed_compare.py +66 -66
- msprobe/pytorch/compare/mapping.yaml +607 -607
- msprobe/pytorch/compare/match.py +34 -33
- msprobe/pytorch/compare/pt_compare.py +50 -40
- msprobe/pytorch/debugger/debugger_config.py +95 -95
- msprobe/pytorch/debugger/precision_debugger.py +125 -125
- msprobe/pytorch/free_benchmark/__init__.py +8 -8
- msprobe/pytorch/free_benchmark/common/constant.py +70 -70
- msprobe/pytorch/free_benchmark/common/counter.py +71 -71
- msprobe/pytorch/free_benchmark/common/enums.py +37 -37
- msprobe/pytorch/free_benchmark/common/params.py +129 -129
- msprobe/pytorch/free_benchmark/common/utils.py +102 -102
- msprobe/pytorch/free_benchmark/compare/grad_saver.py +179 -179
- msprobe/pytorch/free_benchmark/compare/single_benchmark.py +104 -104
- msprobe/pytorch/free_benchmark/main.py +105 -105
- msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +13 -13
- msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +41 -41
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +90 -90
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +104 -104
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +63 -63
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +68 -68
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +28 -28
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +45 -45
- msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +19 -19
- msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +217 -217
- msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +39 -39
- msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +23 -23
- msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +30 -30
- msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +170 -170
- msprobe/pytorch/function_factory.py +76 -75
- msprobe/pytorch/functional/dump_module.py +39 -39
- msprobe/pytorch/grad_probe/grad_monitor.py +91 -90
- msprobe/pytorch/grad_probe/grad_stat_csv.py +128 -128
- msprobe/pytorch/hook_module/api_registry.py +161 -161
- msprobe/pytorch/hook_module/hook_module.py +120 -120
- msprobe/pytorch/hook_module/support_wrap_ops.yaml +1879 -1877
- msprobe/pytorch/hook_module/utils.py +30 -29
- msprobe/pytorch/hook_module/wrap_aten.py +110 -110
- msprobe/pytorch/hook_module/wrap_distributed.py +78 -78
- msprobe/pytorch/hook_module/wrap_functional.py +105 -105
- msprobe/pytorch/hook_module/wrap_npu_custom.py +93 -84
- msprobe/pytorch/hook_module/wrap_tensor.py +71 -71
- msprobe/pytorch/hook_module/wrap_torch.py +86 -86
- msprobe/pytorch/hook_module/wrap_vf.py +62 -62
- msprobe/pytorch/module_processer.py +138 -138
- msprobe/pytorch/online_dispatch/__init__.py +20 -20
- msprobe/pytorch/online_dispatch/compare.py +236 -236
- msprobe/pytorch/online_dispatch/dispatch.py +271 -271
- msprobe/pytorch/online_dispatch/dump_compare.py +155 -156
- msprobe/pytorch/online_dispatch/single_compare.py +391 -391
- msprobe/pytorch/online_dispatch/torch_ops_config.yaml +49 -49
- msprobe/pytorch/online_dispatch/utils.py +130 -146
- msprobe/pytorch/parse.py +4 -4
- msprobe/pytorch/parse_tool/cli.py +32 -32
- msprobe/pytorch/parse_tool/lib/compare.py +260 -271
- msprobe/pytorch/parse_tool/lib/config.py +52 -52
- msprobe/pytorch/parse_tool/lib/file_desc.py +31 -31
- msprobe/pytorch/parse_tool/lib/interactive_cli.py +102 -102
- msprobe/pytorch/parse_tool/lib/parse_exception.py +54 -54
- msprobe/pytorch/parse_tool/lib/parse_tool.py +158 -158
- msprobe/pytorch/parse_tool/lib/utils.py +316 -321
- msprobe/pytorch/parse_tool/lib/visualization.py +85 -91
- msprobe/pytorch/pt_config.py +188 -187
- msprobe/pytorch/service.py +246 -252
- mindstudio_probe-1.0.3.dist-info/RECORD +0 -272
- msprobe/config/README.md +0 -539
- msprobe/mindspore/doc/compare.md +0 -58
- msprobe/mindspore/doc/dump.md +0 -217
- msprobe/mindspore/dump/hook_cell/wrap_functional.py +0 -91
- msprobe/mindspore/dump/hook_cell/wrap_tensor.py +0 -63
- msprobe/pytorch/doc/FAQ.md +0 -193
- msprobe/pytorch/doc/api_accuracy_checker.md +0 -313
- msprobe/pytorch/doc/api_accuracy_checker_online.md +0 -187
- msprobe/pytorch/doc/dump.md +0 -260
- msprobe/pytorch/doc/msprobe/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/206/320/245/342/226/221/321/206/320/235/320/276dump/321/206/320/260/320/227/321/205/320/227/320/226/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -182
- msprobe/pytorch/doc/ptdbg_ascend_compare.md +0 -240
- msprobe/pytorch/doc/ptdbg_ascend_overview.md +0 -68
- msprobe/pytorch/doc/ptdbg_ascend_quickstart.md +0 -381
- msprobe/pytorch/doc/run_overflow_check.md +0 -25
- msprobe/pytorch/doc//321/205/320/254/320/270/321/207/342/225/221/342/224/220/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/206/320/277/320/244/321/205/320/277/342/225/243.md +0 -90
- msprobe/pytorch/doc//321/206/320/247/320/260/321/206/320/260/320/227/321/206/320/255/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/205/320/254/342/225/221/321/206/320/251/320/277/321/211/320/272/320/234/321/210/320/277/320/221/321/205/320/242/320/234/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -151
- {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.0.4.dist-info}/top_level.txt +0 -0
- /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_1.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_2.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_3.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_4.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_1.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_2.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_3.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_4.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_5.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_6.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_7.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/GPT-3_8.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/YOLOV5S_1.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/YOLOV5S_2.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/accuracy_checking_details.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/accuracy_checking_result.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/api_precision_compare_details.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/api_precision_compare_result.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/auto_analyze_log.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/compare_result_pkl.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/compare_result_pkl_md5.png.png +0 -0
- /msprobe/{pytorch/doc → docs}/img/cpu_info.png +0 -0
- /msprobe/{config → docs}/img/free_benchmark.png +0 -0
- /msprobe/{doc/grad_probe/img/image-1.png → docs/img/grad_probe_image-1.png} +0 -0
- /msprobe/{doc/grad_probe/img/image-2.png → docs/img/grad_probe_image-2.png} +0 -0
- /msprobe/{doc/grad_probe/img/image-3.png → docs/img/grad_probe_image-3.png} +0 -0
- /msprobe/{doc/grad_probe/img/image-4.png → docs/img/grad_probe_image-4.png} +0 -0
- /msprobe/{doc/grad_probe/img/image.png → docs/img/grad_probe_image.png} +0 -0
- /msprobe/{pytorch/doc → docs}/img/module_compare.png +0 -0
msprobe/mindspore/common/log.py
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
# Copyright 2024 Huawei Technologies Co., Ltd
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
# ============================================================================
|
|
15
|
-
|
|
16
|
-
import os
|
|
17
|
-
import time
|
|
18
|
-
import sys
|
|
19
|
-
|
|
20
|
-
from msprobe.mindspore.common.utils import get_rank_if_initialized
|
|
21
|
-
from msprobe.core.common.log import BaseLogger
|
|
22
|
-
from msprobe.core.common.exceptions import DistributedNotInitializedError
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class MindsporeLogger(BaseLogger):
|
|
26
|
-
def __init__(self):
|
|
27
|
-
super().__init__()
|
|
28
|
-
|
|
29
|
-
def get_rank(self):
|
|
30
|
-
try:
|
|
31
|
-
current_rank = get_rank_if_initialized()
|
|
32
|
-
except DistributedNotInitializedError:
|
|
33
|
-
current_rank = None
|
|
34
|
-
|
|
35
|
-
return current_rank
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
# Copyright 2024 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ============================================================================
|
|
15
|
+
|
|
16
|
+
import os
|
|
17
|
+
import time
|
|
18
|
+
import sys
|
|
19
|
+
|
|
20
|
+
from msprobe.mindspore.common.utils import get_rank_if_initialized
|
|
21
|
+
from msprobe.core.common.log import BaseLogger
|
|
22
|
+
from msprobe.core.common.exceptions import DistributedNotInitializedError
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class MindsporeLogger(BaseLogger):
|
|
26
|
+
def __init__(self):
|
|
27
|
+
super().__init__()
|
|
28
|
+
|
|
29
|
+
def get_rank(self):
|
|
30
|
+
try:
|
|
31
|
+
current_rank = get_rank_if_initialized()
|
|
32
|
+
except DistributedNotInitializedError:
|
|
33
|
+
current_rank = None
|
|
34
|
+
|
|
35
|
+
return current_rank
|
|
36
|
+
|
|
37
|
+
|
|
38
38
|
logger = MindsporeLogger()
|
|
@@ -1,57 +1,81 @@
|
|
|
1
|
-
# Copyright 2024 Huawei Technologies Co., Ltd
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
# ============================================================================
|
|
15
|
-
|
|
16
|
-
import mindspore as ms
|
|
17
|
-
|
|
18
|
-
from msprobe.core.common.exceptions import DistributedNotInitializedError
|
|
19
|
-
from msprobe.core.common.
|
|
20
|
-
from msprobe.core.common.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
saved_tensor
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
# Copyright 2024 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ============================================================================
|
|
15
|
+
import os
|
|
16
|
+
import mindspore as ms
|
|
17
|
+
|
|
18
|
+
from msprobe.core.common.exceptions import DistributedNotInitializedError
|
|
19
|
+
from msprobe.core.common.file_utils import path_len_exceeds_limit, check_path_exists, save_npy
|
|
20
|
+
from msprobe.core.common.log import logger
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def get_rank_if_initialized():
|
|
24
|
+
if ms.communication.GlobalComm.INITED:
|
|
25
|
+
return ms.communication.get_rank()
|
|
26
|
+
else:
|
|
27
|
+
raise DistributedNotInitializedError("mindspore distributed environment is not initialized")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def convert_bf16_to_fp32(tensor):
|
|
31
|
+
if tensor.dtype == ms.bfloat16:
|
|
32
|
+
tensor = tensor.to(ms.float32)
|
|
33
|
+
return tensor
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def save_tensor_as_npy(tensor, file_path):
|
|
37
|
+
if not path_len_exceeds_limit(file_path):
|
|
38
|
+
tensor = convert_bf16_to_fp32(tensor)
|
|
39
|
+
saved_tensor = tensor.asnumpy()
|
|
40
|
+
save_npy(saved_tensor, file_path)
|
|
41
|
+
else:
|
|
42
|
+
logger.warning(f'The file path {file_path} length exceeds limit.')
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def convert_to_int(value):
|
|
46
|
+
try:
|
|
47
|
+
return int(value)
|
|
48
|
+
except Exception:
|
|
49
|
+
return -1
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def list_lowest_level_directories(root_dir):
|
|
53
|
+
check_path_exists(root_dir)
|
|
54
|
+
lowest_level_dirs = []
|
|
55
|
+
|
|
56
|
+
def recurse_dirs(current_dir):
|
|
57
|
+
for entry in os.listdir(current_dir):
|
|
58
|
+
full_path = os.path.join(current_dir, entry)
|
|
59
|
+
if os.path.isdir(full_path):
|
|
60
|
+
if any(os.path.isdir(os.path.join(full_path, subentry)) for subentry in os.listdir(full_path)):
|
|
61
|
+
recurse_dirs(full_path)
|
|
62
|
+
else:
|
|
63
|
+
lowest_level_dirs.append(full_path)
|
|
64
|
+
|
|
65
|
+
recurse_dirs(root_dir)
|
|
66
|
+
return lowest_level_dirs
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class MsprobeStep(ms.train.Callback):
|
|
71
|
+
|
|
72
|
+
def __init__(self, debugger):
|
|
73
|
+
super(MsprobeStep, self).__init__()
|
|
74
|
+
self.debugger = debugger
|
|
75
|
+
|
|
76
|
+
def on_train_step_begin(self, run_context):
|
|
77
|
+
self.debugger.start()
|
|
78
|
+
|
|
79
|
+
def on_train_step_end(self, run_context):
|
|
80
|
+
self.debugger.stop()
|
|
81
|
+
self.debugger.step()
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
"""
|
|
4
|
-
# Copyright (C) 2019-2024. Huawei Technologies Co., Ltd. All rights reserved.
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
"""
|
|
17
|
-
import os
|
|
18
|
-
from msprobe.core.common.utils import CompareException, check_compare_param, \
|
|
19
|
-
check_configuration_param, task_dumppath_get
|
|
20
|
-
from msprobe.core.common.
|
|
21
|
-
from msprobe.core.common.exceptions import FileCheckException
|
|
22
|
-
from msprobe.
|
|
23
|
-
from msprobe.mindspore.compare.ms_compare import MSComparator
|
|
24
|
-
from msprobe.core.compare.utils import check_and_return_dir_contents, extract_json
|
|
25
|
-
from msprobe.mindspore.compare.ms_graph_compare import GraphMSComparator
|
|
26
|
-
|
|
27
|
-
def ms_compare_distributed(npu_dump_dir, bench_dump_dir, output_path, **kwargs):
|
|
28
|
-
if kwargs.get('suffix'):
|
|
29
|
-
logger.error("Argument 'suffix' is not supported for compare_distributed.")
|
|
30
|
-
raise CompareException(CompareException.INVALID_PARAM_ERROR)
|
|
31
|
-
stack_mode = kwargs.get('stack_mode', False)
|
|
32
|
-
auto_analyze = kwargs.get('auto_analyze', True)
|
|
33
|
-
fuzzy_match = kwargs.get('fuzzy_match', False)
|
|
34
|
-
# get the ranks and match by order
|
|
35
|
-
npu_ranks = sorted(check_and_return_dir_contents(npu_dump_dir, 'rank'))
|
|
36
|
-
bench_ranks = sorted(check_and_return_dir_contents(bench_dump_dir, 'rank'))
|
|
37
|
-
if len(npu_ranks) != len(bench_ranks):
|
|
38
|
-
logger.error('The number of ranks in the two runs are different. '
|
|
39
|
-
'Unable to match the ranks. Please use another folder to compare '
|
|
40
|
-
'or use compare() api and manually match the ranks.')
|
|
41
|
-
raise CompareException(CompareException.INVALID_PATH_ERROR)
|
|
42
|
-
for nr, br in zip(npu_ranks, bench_ranks):
|
|
43
|
-
npu_data_dir = os.path.join(npu_dump_dir, nr)
|
|
44
|
-
bench_data_dir = os.path.join(bench_dump_dir, br)
|
|
45
|
-
npu_path = extract_json(npu_data_dir, stack_json=False)
|
|
46
|
-
bench_path = extract_json(bench_data_dir, stack_json=False)
|
|
47
|
-
stack_path = extract_json(npu_data_dir, stack_json=True)
|
|
48
|
-
|
|
49
|
-
dump_result_param = {
|
|
50
|
-
'npu_json_path': npu_path,
|
|
51
|
-
'bench_json_path': bench_path,
|
|
52
|
-
'stack_json_path': stack_path,
|
|
53
|
-
'is_print_compare_log': True
|
|
54
|
-
}
|
|
55
|
-
try:
|
|
56
|
-
summary_compare, md5_compare = task_dumppath_get(dump_result_param)
|
|
57
|
-
check_configuration_param(stack_mode, auto_analyze, fuzzy_match)
|
|
58
|
-
create_directory(output_path)
|
|
59
|
-
check_compare_param(dump_result_param, output_path, summary_compare=summary_compare, md5_compare=md5_compare)
|
|
60
|
-
except (CompareException, FileCheckException) as error:
|
|
61
|
-
logger.error('Compare failed. Please check the arguments and do it again!')
|
|
62
|
-
raise CompareException(error.code) from error
|
|
63
|
-
ms_comparator = MSComparator()
|
|
64
|
-
ms_comparator.compare_core(dump_result_param, output_path, suffix=f'_{nr}-{br}', summary_compare=summary_compare,
|
|
65
|
-
md5_compare=md5_compare, **kwargs)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def ms_graph_compare(inputs, outputs):
|
|
69
|
-
try:
|
|
70
|
-
create_directory(outputs)
|
|
71
|
-
except (CompareException, FileCheckException) as error:
|
|
72
|
-
logger.error('Compare failed. Please check the arguments and do it again!')
|
|
73
|
-
return
|
|
74
|
-
msComparator = GraphMSComparator(inputs, outputs)
|
|
75
|
-
msComparator.compare_core()
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
# Copyright (C) 2019-2024. Huawei Technologies Co., Ltd. All rights reserved.
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
"""
|
|
17
|
+
import os
|
|
18
|
+
from msprobe.core.common.utils import CompareException, check_compare_param, \
|
|
19
|
+
check_configuration_param, task_dumppath_get
|
|
20
|
+
from msprobe.core.common.file_utils import create_directory
|
|
21
|
+
from msprobe.core.common.exceptions import FileCheckException
|
|
22
|
+
from msprobe.mindspore.common.log import logger
|
|
23
|
+
from msprobe.mindspore.compare.ms_compare import MSComparator
|
|
24
|
+
from msprobe.core.compare.utils import check_and_return_dir_contents, extract_json
|
|
25
|
+
from msprobe.mindspore.compare.ms_graph_compare import GraphMSComparator
|
|
26
|
+
|
|
27
|
+
def ms_compare_distributed(npu_dump_dir, bench_dump_dir, output_path, **kwargs):
|
|
28
|
+
if kwargs.get('suffix'):
|
|
29
|
+
logger.error("Argument 'suffix' is not supported for compare_distributed.")
|
|
30
|
+
raise CompareException(CompareException.INVALID_PARAM_ERROR)
|
|
31
|
+
stack_mode = kwargs.get('stack_mode', False)
|
|
32
|
+
auto_analyze = kwargs.get('auto_analyze', True)
|
|
33
|
+
fuzzy_match = kwargs.get('fuzzy_match', False)
|
|
34
|
+
# get the ranks and match by order
|
|
35
|
+
npu_ranks = sorted(check_and_return_dir_contents(npu_dump_dir, 'rank'))
|
|
36
|
+
bench_ranks = sorted(check_and_return_dir_contents(bench_dump_dir, 'rank'))
|
|
37
|
+
if len(npu_ranks) != len(bench_ranks):
|
|
38
|
+
logger.error('The number of ranks in the two runs are different. '
|
|
39
|
+
'Unable to match the ranks. Please use another folder to compare '
|
|
40
|
+
'or use compare() api and manually match the ranks.')
|
|
41
|
+
raise CompareException(CompareException.INVALID_PATH_ERROR)
|
|
42
|
+
for nr, br in zip(npu_ranks, bench_ranks):
|
|
43
|
+
npu_data_dir = os.path.join(npu_dump_dir, nr)
|
|
44
|
+
bench_data_dir = os.path.join(bench_dump_dir, br)
|
|
45
|
+
npu_path = extract_json(npu_data_dir, stack_json=False)
|
|
46
|
+
bench_path = extract_json(bench_data_dir, stack_json=False)
|
|
47
|
+
stack_path = extract_json(npu_data_dir, stack_json=True)
|
|
48
|
+
|
|
49
|
+
dump_result_param = {
|
|
50
|
+
'npu_json_path': npu_path,
|
|
51
|
+
'bench_json_path': bench_path,
|
|
52
|
+
'stack_json_path': stack_path,
|
|
53
|
+
'is_print_compare_log': True
|
|
54
|
+
}
|
|
55
|
+
try:
|
|
56
|
+
summary_compare, md5_compare = task_dumppath_get(dump_result_param)
|
|
57
|
+
check_configuration_param(stack_mode, auto_analyze, fuzzy_match)
|
|
58
|
+
create_directory(output_path)
|
|
59
|
+
check_compare_param(dump_result_param, output_path, summary_compare=summary_compare, md5_compare=md5_compare)
|
|
60
|
+
except (CompareException, FileCheckException) as error:
|
|
61
|
+
logger.error('Compare failed. Please check the arguments and do it again!')
|
|
62
|
+
raise CompareException(error.code) from error
|
|
63
|
+
ms_comparator = MSComparator()
|
|
64
|
+
ms_comparator.compare_core(dump_result_param, output_path, suffix=f'_{nr}-{br}', summary_compare=summary_compare,
|
|
65
|
+
md5_compare=md5_compare, **kwargs)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def ms_graph_compare(inputs, outputs):
|
|
69
|
+
try:
|
|
70
|
+
create_directory(outputs)
|
|
71
|
+
except (CompareException, FileCheckException) as error:
|
|
72
|
+
logger.error('Compare failed. Please check the arguments and do it again!')
|
|
73
|
+
return
|
|
74
|
+
msComparator = GraphMSComparator(inputs, outputs)
|
|
75
|
+
msComparator.compare_core()
|