From aeb3c568d121f1506cadc5a8ecacbf1aec8c72ab Mon Sep 17 00:00:00 2001 From: sunyiming Date: Tue, 31 Oct 2023 02:30:21 +0000 Subject: [PATCH 01/15] support save real data in rank fold Signed-off-by: sunyiming --- .../api_accuracy_checker/common/base_api.py | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py index 2c3086184c..83096974a2 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py @@ -54,12 +54,18 @@ class BaseAPIInfo: else: api_args = self.api_name + '.' + str(self.args_num) + rank = self.get_tensor_rank(arg) + if rank is not None: + rank = "rank"+str(rank) if self.is_forward: - forward_real_data_path = os.path.join(self.save_path, self.forward_path) - + forward_real_data_path = os.path.join(self.save_path, self.forward_path, rank) if rank else os.path.join(self.save_path, self.forward_path) + if not os.path.exists(forward_real_data_path): + os.makedirs(forward_real_data_path) file_path = os.path.join(forward_real_data_path, f'{api_args}.pt') else: - backward_real_data_path = os.path.join(self.save_path, self.backward_path) + backward_real_data_path = os.path.join(self.save_path, self.backward_path, rank) if rank else os.path.join(self.save_path, self.backward_path) + if not os.path.exists(backward_real_data_path): + os.makedirs(backward_real_data_path) file_path = os.path.join(backward_real_data_path, f'{api_args}.pt') self.args_num += 1 pt_path = write_pt(file_path, arg.contiguous().cpu().detach()) @@ -68,6 +74,24 @@ class BaseAPIInfo: single_arg.update({'requires_grad': arg.requires_grad}) return single_arg + def get_tensor_rank(self, arg): + def get_tensor_rank_single(x): + if isinstance(x, (list, tuple)): + if len(x) > 0: + return get_tensor_rank_single(x[0]) + return None + elif isinstance(x, torch.Tensor): + device = x.device + if device.type == 'cpu': + return None + else: + return device.index + return None + rank = get_tensor_rank_single(arg) + if rank is None: + return None + return rank + def analyze_builtin(self, arg): single_arg = {} if self.is_save_data: -- Gitee From 1195a0fd2db12a423f67a7b49b9bc08262e19377 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Tue, 31 Oct 2023 02:36:31 +0000 Subject: [PATCH 02/15] Revert "change ut assert" This reverts commit 58c6b789f2d52bf8553b4bf46c93c9ba58440bc8. --- debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py b/debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py index 82f3d8dfed..7874d3c2fa 100644 --- a/debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py +++ b/debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py @@ -17,7 +17,7 @@ class TestUtilsMethods(unittest.TestCase): self.assertTrue(dump_util.dump_init_enable) self.assertEqual(dump_util.dump_switch_scope, []) self.assertEqual(dump_util.dump_api_list, []) - self.assertEqual(dump_util.dump_filter_switch, "OFF") + self.assertEqual(dump_util.dump_filter_switch, switch_on) self.assertEqual(dump_count, 0) def test_set_dump_switch_mode_is_list(self): -- Gitee From b2d5f43e96ae5e20bf4c3414205a0916096e0120 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Tue, 31 Oct 2023 02:36:42 +0000 Subject: [PATCH 03/15] Revert "change filter switch default to off" This reverts commit f735168eafe7970ddcaf2c04eeaf21a6d1e30c91. --- .../src/python/ptdbg_ascend/debugger/precision_debugger.py | 2 +- .../ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/debugger/precision_debugger.py b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/debugger/precision_debugger.py index b305769cf2..de1ff96b26 100644 --- a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/debugger/precision_debugger.py +++ b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/debugger/precision_debugger.py @@ -40,7 +40,7 @@ class PrecisionDebugger: hook_dict = {"dump": self.configure_full_dump, "overflow_check": self.configure_overflow_dump} return hook_dict.get(hook_name, lambda: ValueError("hook name {} is not in ['dump', 'overflow_check']".format(hook_name))) - def configure_full_dump(self, mode='api_stack', scope=[], api_list=[], filter_switch=Const.OFF, + def configure_full_dump(self, mode='api_stack', scope=[], api_list=[], filter_switch=Const.ON, input_output_mode=[Const.ALL], acl_config=None, backward_input=[], summary_only=False): set_dump_switch_config(mode=mode, scope=scope, api_list=api_list, filter_switch=filter_switch, dump_mode=input_output_mode, summary_only=summary_only) diff --git a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py index 7fd8b4e9b0..e6cfa1f444 100644 --- a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py +++ b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py @@ -195,7 +195,7 @@ def generate_dump_path_str(): return dump_path -def set_dump_switch(switch, mode=Const.ALL, scope=[], api_list=[], filter_switch=Const.OFF, dump_mode=[Const.ALL], summary_only=False): +def set_dump_switch(switch, mode=Const.ALL, scope=[], api_list=[], filter_switch=Const.ON, dump_mode=[Const.ALL], summary_only=False): check_switch_valid(switch) if not DumpUtil.dump_path: set_dump_path() @@ -209,7 +209,7 @@ def set_dump_switch(switch, mode=Const.ALL, scope=[], api_list=[], filter_switch set_dump_switch_config(mode=mode, scope=scope, api_list=api_list, filter_switch=filter_switch, dump_mode=dump_mode,summary_only=summary_only) -def set_dump_switch_config(mode=Const.ALL, scope=[], api_list=[], filter_switch=Const.OFF, dump_mode=[Const.ALL], summary_only=False): +def set_dump_switch_config(mode=Const.ALL, scope=[], api_list=[], filter_switch=Const.ON, dump_mode=[Const.ALL], summary_only=False): try: check_mode_valid(mode, scope, api_list) check_switch_valid(filter_switch) -- Gitee From f96844fbec58d14e29886df422967d5373b6e960 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Tue, 31 Oct 2023 03:04:14 +0000 Subject: [PATCH 04/15] update debug/accuracy_tools/api_accuracy_checker/test/ut/common/test_config.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/test/ut/common/test_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/test/ut/common/test_config.py b/debug/accuracy_tools/api_accuracy_checker/test/ut/common/test_config.py index ed764987d5..a68057dfb4 100644 --- a/debug/accuracy_tools/api_accuracy_checker/test/ut/common/test_config.py +++ b/debug/accuracy_tools/api_accuracy_checker/test/ut/common/test_config.py @@ -17,5 +17,5 @@ class TestConfig(unittest.TestCase): def test_update_config(self): - self.config.update_config(dump_path='/new/path/to/dump', enable_dataloader=False) + self.config.update_config(dump_path='/new/path/to/dump') self.assertEqual(self.config.dump_path, '/new/path/to/dump') -- Gitee From d51a80cafaa328bb0234d5ae994f367cd05890e9 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Tue, 31 Oct 2023 03:04:35 +0000 Subject: [PATCH 05/15] update debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump_scopr.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/test/ut/dump/test_dump_scopr.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump_scopr.py b/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump_scopr.py index addba38e38..b892a6077a 100644 --- a/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump_scopr.py +++ b/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump_scopr.py @@ -10,12 +10,12 @@ class TestDumpScope(unittest.TestCase): wrapped_func = iter_tracer(dummy_func) result = wrapped_func() - self.assertEqual(DumpUtil.dump_switch, "ON") + self.assertEqual(DumpUtil.dump_switch, "OFF") self.assertEqual(result, "Hello, World!") def another_dummy_func(): return 123 wrapped_func = iter_tracer(another_dummy_func) result = wrapped_func() - self.assertEqual(DumpUtil.dump_switch, "ON") + self.assertEqual(DumpUtil.dump_switch, "OFF") self.assertEqual(result, 123) -- Gitee From 40a699790fbec9ac9e1c9c6fd245fe786f0ddd4e Mon Sep 17 00:00:00 2001 From: sunyiming Date: Wed, 1 Nov 2023 02:26:13 +0000 Subject: [PATCH 06/15] clearcode Signed-off-by: sunyiming --- debug/accuracy_tools/api_accuracy_checker/common/base_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py index 83096974a2..49fd004c06 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py @@ -56,7 +56,7 @@ class BaseAPIInfo: api_args = self.api_name + '.' + str(self.args_num) rank = self.get_tensor_rank(arg) if rank is not None: - rank = "rank"+str(rank) + rank = "rank" + str(rank) if self.is_forward: forward_real_data_path = os.path.join(self.save_path, self.forward_path, rank) if rank else os.path.join(self.save_path, self.forward_path) if not os.path.exists(forward_real_data_path): -- Gitee From 8ec883dfec632a9d419e9f14162faebb15d37fbc Mon Sep 17 00:00:00 2001 From: sunyiming Date: Wed, 1 Nov 2023 02:39:32 +0000 Subject: [PATCH 07/15] update debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py. Signed-off-by: sunyiming --- debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py b/debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py index 7874d3c2fa..82f3d8dfed 100644 --- a/debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py +++ b/debug/accuracy_tools/ptdbg_ascend/test/ut/test_hooks.py @@ -17,7 +17,7 @@ class TestUtilsMethods(unittest.TestCase): self.assertTrue(dump_util.dump_init_enable) self.assertEqual(dump_util.dump_switch_scope, []) self.assertEqual(dump_util.dump_api_list, []) - self.assertEqual(dump_util.dump_filter_switch, switch_on) + self.assertEqual(dump_util.dump_filter_switch, "OFF") self.assertEqual(dump_count, 0) def test_set_dump_switch_mode_is_list(self): -- Gitee From 06e6fef1a5b2ad19b72dfb03987e0b69361dec5a Mon Sep 17 00:00:00 2001 From: sunyiming Date: Wed, 1 Nov 2023 02:40:34 +0000 Subject: [PATCH 08/15] update debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py. Signed-off-by: sunyiming --- .../ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py index 35f5ad4a90..b4148f65ff 100644 --- a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py +++ b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/utils.py @@ -196,7 +196,7 @@ def generate_dump_path_str(): return dump_path -def set_dump_switch(switch, mode=Const.ALL, scope=[], api_list=[], filter_switch=Const.ON, dump_mode=[Const.ALL], summary_only=False): +def set_dump_switch(switch, mode=Const.ALL, scope=[], api_list=[], filter_switch=Const.OFF, dump_mode=[Const.ALL], summary_only=False): check_switch_valid(switch) if not DumpUtil.dump_path: set_dump_path() @@ -210,7 +210,7 @@ def set_dump_switch(switch, mode=Const.ALL, scope=[], api_list=[], filter_switch set_dump_switch_config(mode=mode, scope=scope, api_list=api_list, filter_switch=filter_switch, dump_mode=dump_mode,summary_only=summary_only) -def set_dump_switch_config(mode=Const.ALL, scope=[], api_list=[], filter_switch=Const.ON, dump_mode=[Const.ALL], summary_only=False): +def set_dump_switch_config(mode=Const.ALL, scope=[], api_list=[], filter_switch=Const.OFF, dump_mode=[Const.ALL], summary_only=False): try: check_mode_valid(mode, scope, api_list) check_switch_valid(filter_switch) -- Gitee From 2f80648f68fe1a936ed7ed57367a70c43d7d59c6 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Thu, 2 Nov 2023 03:57:14 +0000 Subject: [PATCH 09/15] update debug/accuracy_tools/api_accuracy_checker/common/base_api.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/common/base_api.py | 25 ++----------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py index 49fd004c06..f3f6740db9 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py @@ -54,16 +54,13 @@ class BaseAPIInfo: else: api_args = self.api_name + '.' + str(self.args_num) - rank = self.get_tensor_rank(arg) - if rank is not None: - rank = "rank" + str(rank) if self.is_forward: - forward_real_data_path = os.path.join(self.save_path, self.forward_path, rank) if rank else os.path.join(self.save_path, self.forward_path) + forward_real_data_path = os.path.join(self.save_path, self.forward_path, self.rank) if not os.path.exists(forward_real_data_path): os.makedirs(forward_real_data_path) file_path = os.path.join(forward_real_data_path, f'{api_args}.pt') else: - backward_real_data_path = os.path.join(self.save_path, self.backward_path, rank) if rank else os.path.join(self.save_path, self.backward_path) + backward_real_data_path = os.path.join(self.save_path, self.backward_path, self.rank) if not os.path.exists(backward_real_data_path): os.makedirs(backward_real_data_path) file_path = os.path.join(backward_real_data_path, f'{api_args}.pt') @@ -74,24 +71,6 @@ class BaseAPIInfo: single_arg.update({'requires_grad': arg.requires_grad}) return single_arg - def get_tensor_rank(self, arg): - def get_tensor_rank_single(x): - if isinstance(x, (list, tuple)): - if len(x) > 0: - return get_tensor_rank_single(x[0]) - return None - elif isinstance(x, torch.Tensor): - device = x.device - if device.type == 'cpu': - return None - else: - return device.index - return None - rank = get_tensor_rank_single(arg) - if rank is None: - return None - return rank - def analyze_builtin(self, arg): single_arg = {} if self.is_save_data: -- Gitee From 2103dd9f6468634623685b497a0924f04fbc5d29 Mon Sep 17 00:00:00 2001 From: s30048155 Date: Thu, 2 Nov 2023 15:00:48 +0800 Subject: [PATCH 10/15] update --- debug/accuracy_tools/api_accuracy_checker/common/base_api.py | 4 ++-- debug/accuracy_tools/api_accuracy_checker/common/utils.py | 2 +- debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py index f3f6740db9..1423008e73 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py @@ -55,12 +55,12 @@ class BaseAPIInfo: else: api_args = self.api_name + '.' + str(self.args_num) if self.is_forward: - forward_real_data_path = os.path.join(self.save_path, self.forward_path, self.rank) + forward_real_data_path = os.path.join(self.save_path, self.forward_path, "rank"+str(self.rank)) if not os.path.exists(forward_real_data_path): os.makedirs(forward_real_data_path) file_path = os.path.join(forward_real_data_path, f'{api_args}.pt') else: - backward_real_data_path = os.path.join(self.save_path, self.backward_path, self.rank) + backward_real_data_path = os.path.join(self.save_path, self.backward_path, "rank"+str(self.rank)) if not os.path.exists(backward_real_data_path): os.makedirs(backward_real_data_path) file_path = os.path.join(backward_real_data_path, f'{api_args}.pt') diff --git a/debug/accuracy_tools/api_accuracy_checker/common/utils.py b/debug/accuracy_tools/api_accuracy_checker/common/utils.py index b031b92a18..812d1ccf21 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/utils.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/utils.py @@ -606,7 +606,7 @@ def cross_entropy_process(api_info_dict): def initialize_save_path(save_path, dir_name): data_path = os.path.join(save_path, dir_name) if os.path.exists(data_path): - raise ValueError(f"file {data_path} already exists, please remove it first") + print_warn_log(f"{data_path} already exists, it will be overwritten") else: os.mkdir(data_path, mode=FileCheckConst.DATA_DIR_AUTHORITY) data_path_checker = FileChecker(data_path, FileCheckConst.DIR) diff --git a/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py b/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py index 536d607dd6..af444b1078 100644 --- a/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py +++ b/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py @@ -213,7 +213,7 @@ def initialize_save_error_data(): error_data_path_checker = FileChecker(msCheckerConfig.error_data_path, FileCheckConst.DIR, ability=FileCheckConst.WRITE_ABLE) error_data_path = error_data_path_checker.common_check() - initialize_save_path(error_data_path, 'ut_error_data') + initialize_save_path(error_data_path, 'ut_error_data'+str(os.getpid())) def _run_ut_parser(parser): -- Gitee From f704beecf13d4ee2292bc29f02aecdf959653a93 Mon Sep 17 00:00:00 2001 From: s30048155 Date: Thu, 2 Nov 2023 15:42:53 +0800 Subject: [PATCH 11/15] cleancode --- debug/accuracy_tools/api_accuracy_checker/common/base_api.py | 4 ++-- debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py index 1423008e73..cb75d7ff57 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py @@ -55,12 +55,12 @@ class BaseAPIInfo: else: api_args = self.api_name + '.' + str(self.args_num) if self.is_forward: - forward_real_data_path = os.path.join(self.save_path, self.forward_path, "rank"+str(self.rank)) + forward_real_data_path = os.path.join(self.save_path, self.forward_path, "rank" + str(self.rank)) if not os.path.exists(forward_real_data_path): os.makedirs(forward_real_data_path) file_path = os.path.join(forward_real_data_path, f'{api_args}.pt') else: - backward_real_data_path = os.path.join(self.save_path, self.backward_path, "rank"+str(self.rank)) + backward_real_data_path = os.path.join(self.save_path, self.backward_path, "rank" + str(self.rank)) if not os.path.exists(backward_real_data_path): os.makedirs(backward_real_data_path) file_path = os.path.join(backward_real_data_path, f'{api_args}.pt') diff --git a/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py b/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py index af444b1078..2225d4c5e7 100644 --- a/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py +++ b/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py @@ -213,7 +213,7 @@ def initialize_save_error_data(): error_data_path_checker = FileChecker(msCheckerConfig.error_data_path, FileCheckConst.DIR, ability=FileCheckConst.WRITE_ABLE) error_data_path = error_data_path_checker.common_check() - initialize_save_path(error_data_path, 'ut_error_data'+str(os.getpid())) + initialize_save_path(error_data_path, 'ut_error_data' + str(os.getpid())) def _run_ut_parser(parser): -- Gitee From adc5fa78fcf867397ba9afc95de2f9d7736d37e1 Mon Sep 17 00:00:00 2001 From: s30048155 Date: Thu, 2 Nov 2023 16:10:52 +0800 Subject: [PATCH 12/15] add timestamp --- debug/accuracy_tools/api_accuracy_checker/compare/compare.py | 5 +++-- debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/compare/compare.py b/debug/accuracy_tools/api_accuracy_checker/compare/compare.py index f3e8a4cf49..e5e5097940 100644 --- a/debug/accuracy_tools/api_accuracy_checker/compare/compare.py +++ b/debug/accuracy_tools/api_accuracy_checker/compare/compare.py @@ -1,5 +1,6 @@ # 进行比对及结果展示 import os +import time from rich.table import Table from rich.console import Console from api_accuracy_checker.compare.algorithm import compare_core, cosine_sim, cosine_standard, get_max_rel_err, get_max_abs_err, \ @@ -9,8 +10,8 @@ from api_accuracy_checker.compare.compare_utils import CompareConst from api_accuracy_checker.common.config import msCheckerConfig class Comparator: - TEST_FILE_NAME = "accuracy_checking_result.csv" - DETAIL_TEST_FILE_NAME = "accuracy_checking_details.csv" + TEST_FILE_NAME = "accuracy_checking_result_" + time.strftime("%Y%m%d%H%M%S") + ".csv" + DETAIL_TEST_FILE_NAME = "accuracy_checking_details_" + time.strftime("%Y%m%d%H%M%S") + ".csv" # consts for result csv COLUMN_API_NAME = "API name" diff --git a/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py b/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py index 2225d4c5e7..bff827ac07 100644 --- a/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py +++ b/debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py @@ -2,6 +2,7 @@ import argparse import os import copy import sys +import time import torch_npu import yaml import torch @@ -213,7 +214,7 @@ def initialize_save_error_data(): error_data_path_checker = FileChecker(msCheckerConfig.error_data_path, FileCheckConst.DIR, ability=FileCheckConst.WRITE_ABLE) error_data_path = error_data_path_checker.common_check() - initialize_save_path(error_data_path, 'ut_error_data' + str(os.getpid())) + initialize_save_path(error_data_path, 'ut_error_data' + time.strftime("%Y%m%d%H%M%S")) def _run_ut_parser(parser): -- Gitee From 883e25560cc5f1c1c19962ba695858c7dacbe406 Mon Sep 17 00:00:00 2001 From: s30048155 Date: Fri, 3 Nov 2023 08:48:53 +0800 Subject: [PATCH 13/15] check_path_before_create --- .../api_accuracy_checker/common/base_api.py | 10 +++++----- .../api_accuracy_checker/common/utils.py | 11 +++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py index cb75d7ff57..5a04f79fd7 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py @@ -1,6 +1,6 @@ import os import torch -from api_accuracy_checker.common.utils import print_error_log, write_pt +from api_accuracy_checker.common.utils import print_error_log, write_pt, check_path_before_create, create_directory class BaseAPIInfo: @@ -56,13 +56,13 @@ class BaseAPIInfo: api_args = self.api_name + '.' + str(self.args_num) if self.is_forward: forward_real_data_path = os.path.join(self.save_path, self.forward_path, "rank" + str(self.rank)) - if not os.path.exists(forward_real_data_path): - os.makedirs(forward_real_data_path) + check_path_before_create(forward_real_data_path) + create_directory(forward_real_data_path) file_path = os.path.join(forward_real_data_path, f'{api_args}.pt') else: backward_real_data_path = os.path.join(self.save_path, self.backward_path, "rank" + str(self.rank)) - if not os.path.exists(backward_real_data_path): - os.makedirs(backward_real_data_path) + check_path_before_create(backward_real_data_path) + create_directory(backward_real_data_path) file_path = os.path.join(backward_real_data_path, f'{api_args}.pt') self.args_num += 1 pt_path = write_pt(file_path, arg.contiguous().cpu().detach()) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/utils.py b/debug/accuracy_tools/api_accuracy_checker/common/utils.py index 812d1ccf21..480f46a82d 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/utils.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/utils.py @@ -620,3 +620,14 @@ def write_pt(file_path, tensor): full_path = os.path.realpath(file_path) file_check_util.change_mode(full_path, FileCheckConst.DATA_FILE_AUTHORITY) return full_path + + +def check_path_before_create(path): + if len(os.path.realpath(path)) > Const.DIRECTORY_LENGTH or len(os.path.basename(path)) > \ + Const.FILE_NAME_LENGTH: + print_error_log('The file path length exceeds limit.') + raise CompareException(CompareException.INVALID_PATH_ERROR) + + if not re.match(Const.FILE_PATTERN, os.path.realpath(path)): + print_error_log('The file path {} contains special characters.'.format(path)) + raise CompareException(CompareException.INVALID_PATH_ERROR) -- Gitee From ec73aea52fab0aa06e8d74f9c502caf541f58188 Mon Sep 17 00:00:00 2001 From: s30048155 Date: Fri, 3 Nov 2023 09:01:30 +0800 Subject: [PATCH 14/15] update --- debug/accuracy_tools/api_accuracy_checker/common/utils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/utils.py b/debug/accuracy_tools/api_accuracy_checker/common/utils.py index 480f46a82d..7caaccbda7 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/utils.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/utils.py @@ -56,6 +56,9 @@ class Const: """ Class for const """ + DIRECTORY_LENGTH = 4096 + FILE_NAME_LENGTH = 255 + FILE_PATTERN = r'^[a-zA-Z0-9_./-]+$' MODEL_TYPE = ['.onnx', '.pb', '.om'] DIM_PATTERN = r"^(-?[0-9]+)(,-?[0-9]+)*" SEMICOLON = ";" -- Gitee From 50a47ed44ed57a8e7a26a94ccd0a3bdf3079900a Mon Sep 17 00:00:00 2001 From: s30048155 Date: Fri, 3 Nov 2023 11:59:39 +0800 Subject: [PATCH 15/15] update --- .../api_accuracy_checker/common/base_api.py | 3 ++- .../api_accuracy_checker/common/utils.py | 11 ----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py index 5a04f79fd7..66c489c463 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/base_api.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/base_api.py @@ -1,6 +1,7 @@ import os import torch -from api_accuracy_checker.common.utils import print_error_log, write_pt, check_path_before_create, create_directory +from api_accuracy_checker.common.utils import print_error_log, write_pt, create_directory +from ptdbg_ascend.src.python.ptdbg_ascend.common.utils import check_path_before_create class BaseAPIInfo: diff --git a/debug/accuracy_tools/api_accuracy_checker/common/utils.py b/debug/accuracy_tools/api_accuracy_checker/common/utils.py index 7caaccbda7..98499c5998 100644 --- a/debug/accuracy_tools/api_accuracy_checker/common/utils.py +++ b/debug/accuracy_tools/api_accuracy_checker/common/utils.py @@ -623,14 +623,3 @@ def write_pt(file_path, tensor): full_path = os.path.realpath(file_path) file_check_util.change_mode(full_path, FileCheckConst.DATA_FILE_AUTHORITY) return full_path - - -def check_path_before_create(path): - if len(os.path.realpath(path)) > Const.DIRECTORY_LENGTH or len(os.path.basename(path)) > \ - Const.FILE_NAME_LENGTH: - print_error_log('The file path length exceeds limit.') - raise CompareException(CompareException.INVALID_PATH_ERROR) - - if not re.match(Const.FILE_PATTERN, os.path.realpath(path)): - print_error_log('The file path {} contains special characters.'.format(path)) - raise CompareException(CompareException.INVALID_PATH_ERROR) -- Gitee