From f21611d93a39396bc394efb0707bb2081c45db7d Mon Sep 17 00:00:00 2001 From: sunyiming Date: Fri, 4 Aug 2023 10:01:00 +0000 Subject: [PATCH 1/8] update debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/run_ut/run_ut.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) 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 0c18da7d0e8..ad6fc6357ac 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 @@ -35,18 +35,28 @@ def generate_npu_params(cpu_args, cpu_kwargs, need_backward): npu_kwargs = {} if need_backward: for arg_in in cpu_args: - arg_in = arg_to_npu(arg_in) + if isinstance(arg_in, list): + arg_in = [arg_to_npu(item) for item in arg_in] + else: + arg_in = arg_to_npu(arg_in) npu_args.append(arg_in) for key, value in cpu_kwargs.items(): - value = arg_to_npu(value) + if isinstance(value, list): + value = [arg_to_npu(item) for item in value] + else: + value = arg_to_npu(value) npu_kwargs[key] = value else: for arg_in in cpu_args: - if isinstance(arg_in, torch.Tensor): + if isinstance(arg_in, list): + arg_in = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in arg_in] + elif isinstance(arg_in, torch.Tensor): arg_in = arg_in.clone().detach().to("npu") npu_args.append(arg_in) for key, value in cpu_kwargs.items(): - if isinstance(value, torch.Tensor): + if isinstance(value, list): + value = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in value] + elif isinstance(value, torch.Tensor): value = value.clone().detach().to("npu") npu_kwargs[key] = value return npu_args, npu_kwargs -- Gitee From 307750c019cc7cc47e38b28eac7dbc3c4debdb0e Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 5 Aug 2023 03:01:43 +0000 Subject: [PATCH 2/8] update debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/run_ut/run_ut.py | 37 +++++++------------ 1 file changed, 13 insertions(+), 24 deletions(-) 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 ad6fc6357ac..99d4036a265 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 @@ -30,35 +30,24 @@ def exec_api(api_type, api_name, args, kwargs): return out +def arg_to_npu_recursive(arg_in): + if isinstance(arg_in, list) or isinstance(arg_in, tuple): + return [arg_to_npu_recursive(item) for item in arg_in] + elif isinstance(arg_in, torch.Tensor): + return arg_to_npu(arg_in) + else: + return arg_in + + def generate_npu_params(cpu_args, cpu_kwargs, need_backward): npu_args = [] npu_kwargs = {} if need_backward: - for arg_in in cpu_args: - if isinstance(arg_in, list): - arg_in = [arg_to_npu(item) for item in arg_in] - else: - arg_in = arg_to_npu(arg_in) - npu_args.append(arg_in) - for key, value in cpu_kwargs.items(): - if isinstance(value, list): - value = [arg_to_npu(item) for item in value] - else: - value = arg_to_npu(value) - npu_kwargs[key] = value + npu_args = [arg_to_npu_recursive(arg_in) for arg_in in cpu_args] + npu_kwargs = {key: arg_to_npu_recursive(value) for key, value in cpu_kwargs.items()} else: - for arg_in in cpu_args: - if isinstance(arg_in, list): - arg_in = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in arg_in] - elif isinstance(arg_in, torch.Tensor): - arg_in = arg_in.clone().detach().to("npu") - npu_args.append(arg_in) - for key, value in cpu_kwargs.items(): - if isinstance(value, list): - value = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in value] - elif isinstance(value, torch.Tensor): - value = value.clone().detach().to("npu") - npu_kwargs[key] = value + npu_args = [arg_in.clone().detach().to("npu") if isinstance(arg_in, torch.Tensor) else arg_in for arg_in in cpu_args] + npu_kwargs = {key: value.clone().detach().to("npu") if isinstance(value, torch.Tensor) else value for key, value in cpu_kwargs.items()} return npu_args, npu_kwargs -- Gitee From 78408782932f2b3d68fa2e3192fa7f55bf0eb7b4 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 5 Aug 2023 03:27:59 +0000 Subject: [PATCH 3/8] Revert "update debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py." This reverts commit 307750c019cc7cc47e38b28eac7dbc3c4debdb0e. --- .../api_accuracy_checker/run_ut/run_ut.py | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) 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 99d4036a265..ad6fc6357ac 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 @@ -30,24 +30,35 @@ def exec_api(api_type, api_name, args, kwargs): return out -def arg_to_npu_recursive(arg_in): - if isinstance(arg_in, list) or isinstance(arg_in, tuple): - return [arg_to_npu_recursive(item) for item in arg_in] - elif isinstance(arg_in, torch.Tensor): - return arg_to_npu(arg_in) - else: - return arg_in - - def generate_npu_params(cpu_args, cpu_kwargs, need_backward): npu_args = [] npu_kwargs = {} if need_backward: - npu_args = [arg_to_npu_recursive(arg_in) for arg_in in cpu_args] - npu_kwargs = {key: arg_to_npu_recursive(value) for key, value in cpu_kwargs.items()} + for arg_in in cpu_args: + if isinstance(arg_in, list): + arg_in = [arg_to_npu(item) for item in arg_in] + else: + arg_in = arg_to_npu(arg_in) + npu_args.append(arg_in) + for key, value in cpu_kwargs.items(): + if isinstance(value, list): + value = [arg_to_npu(item) for item in value] + else: + value = arg_to_npu(value) + npu_kwargs[key] = value else: - npu_args = [arg_in.clone().detach().to("npu") if isinstance(arg_in, torch.Tensor) else arg_in for arg_in in cpu_args] - npu_kwargs = {key: value.clone().detach().to("npu") if isinstance(value, torch.Tensor) else value for key, value in cpu_kwargs.items()} + for arg_in in cpu_args: + if isinstance(arg_in, list): + arg_in = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in arg_in] + elif isinstance(arg_in, torch.Tensor): + arg_in = arg_in.clone().detach().to("npu") + npu_args.append(arg_in) + for key, value in cpu_kwargs.items(): + if isinstance(value, list): + value = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in value] + elif isinstance(value, torch.Tensor): + value = value.clone().detach().to("npu") + npu_kwargs[key] = value return npu_args, npu_kwargs -- Gitee From bb80c2a57259e1f871d9bc9998fb16f56e22c17f Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 5 Aug 2023 03:37:28 +0000 Subject: [PATCH 4/8] update debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/run_ut/run_ut.py | 40 ++++--------------- 1 file changed, 7 insertions(+), 33 deletions(-) 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 ad6fc6357ac..d18b3e33140 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 @@ -31,46 +31,20 @@ def exec_api(api_type, api_name, args, kwargs): def generate_npu_params(cpu_args, cpu_kwargs, need_backward): - npu_args = [] - npu_kwargs = {} - if need_backward: - for arg_in in cpu_args: - if isinstance(arg_in, list): - arg_in = [arg_to_npu(item) for item in arg_in] - else: - arg_in = arg_to_npu(arg_in) - npu_args.append(arg_in) - for key, value in cpu_kwargs.items(): - if isinstance(value, list): - value = [arg_to_npu(item) for item in value] - else: - value = arg_to_npu(value) - npu_kwargs[key] = value - else: - for arg_in in cpu_args: - if isinstance(arg_in, list): - arg_in = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in arg_in] - elif isinstance(arg_in, torch.Tensor): - arg_in = arg_in.clone().detach().to("npu") - npu_args.append(arg_in) - for key, value in cpu_kwargs.items(): - if isinstance(value, list): - value = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in value] - elif isinstance(value, torch.Tensor): - value = value.clone().detach().to("npu") - npu_kwargs[key] = value + npu_args = [arg_to_npu(arg_in) for arg_in in cpu_args] + npu_kwargs = {key: arg_to_npu(value) for key, value in cpu_kwargs.items()} return npu_args, npu_kwargs def arg_to_npu(arg_in): - if isinstance(arg_in, torch.Tensor) and arg_in.dtype in [torch.float, torch.float16, - torch.float64] and arg_in.requires_grad: - arg_in = arg_in.clone().detach().to("npu").requires_grad_() - elif isinstance(arg_in, torch.Tensor): + if isinstance(arg_in, torch.Tensor): arg_in = arg_in.clone().detach().to("npu") + if arg_in.dtype in [torch.float, torch.float16, torch.float64] and arg_in.requires_grad: + arg_in.requires_grad_() + elif isinstance(arg_in, (list, tuple)): + arg_in = type(arg_in)([arg_to_npu(item) for item in arg_in]) return arg_in - def run_ut(forward_file, backward_file, out_path, save_error_data): print_info_log("start UT test") forward_content = get_json_contents(forward_file) -- Gitee From 4c8a89f5d393b04cf1390df12f1e844040c2dc97 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 5 Aug 2023 03:43:24 +0000 Subject: [PATCH 5/8] Revert "update debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py." This reverts commit bb80c2a57259e1f871d9bc9998fb16f56e22c17f. --- .../api_accuracy_checker/run_ut/run_ut.py | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) 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 d18b3e33140..ad6fc6357ac 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 @@ -31,20 +31,46 @@ def exec_api(api_type, api_name, args, kwargs): def generate_npu_params(cpu_args, cpu_kwargs, need_backward): - npu_args = [arg_to_npu(arg_in) for arg_in in cpu_args] - npu_kwargs = {key: arg_to_npu(value) for key, value in cpu_kwargs.items()} + npu_args = [] + npu_kwargs = {} + if need_backward: + for arg_in in cpu_args: + if isinstance(arg_in, list): + arg_in = [arg_to_npu(item) for item in arg_in] + else: + arg_in = arg_to_npu(arg_in) + npu_args.append(arg_in) + for key, value in cpu_kwargs.items(): + if isinstance(value, list): + value = [arg_to_npu(item) for item in value] + else: + value = arg_to_npu(value) + npu_kwargs[key] = value + else: + for arg_in in cpu_args: + if isinstance(arg_in, list): + arg_in = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in arg_in] + elif isinstance(arg_in, torch.Tensor): + arg_in = arg_in.clone().detach().to("npu") + npu_args.append(arg_in) + for key, value in cpu_kwargs.items(): + if isinstance(value, list): + value = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in value] + elif isinstance(value, torch.Tensor): + value = value.clone().detach().to("npu") + npu_kwargs[key] = value return npu_args, npu_kwargs def arg_to_npu(arg_in): - if isinstance(arg_in, torch.Tensor): + if isinstance(arg_in, torch.Tensor) and arg_in.dtype in [torch.float, torch.float16, + torch.float64] and arg_in.requires_grad: + arg_in = arg_in.clone().detach().to("npu").requires_grad_() + elif isinstance(arg_in, torch.Tensor): arg_in = arg_in.clone().detach().to("npu") - if arg_in.dtype in [torch.float, torch.float16, torch.float64] and arg_in.requires_grad: - arg_in.requires_grad_() - elif isinstance(arg_in, (list, tuple)): - arg_in = type(arg_in)([arg_to_npu(item) for item in arg_in]) return arg_in + def run_ut(forward_file, backward_file, out_path, save_error_data): print_info_log("start UT test") forward_content = get_json_contents(forward_file) -- Gitee From bb79717c12c26c2c4d72ce266721cd805cb1c121 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 5 Aug 2023 03:49:09 +0000 Subject: [PATCH 6/8] update debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/run_ut/run_ut.py | 48 +++++-------------- 1 file changed, 12 insertions(+), 36 deletions(-) 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 ad6fc6357ac..b27488b44d7 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 @@ -31,44 +31,20 @@ def exec_api(api_type, api_name, args, kwargs): def generate_npu_params(cpu_args, cpu_kwargs, need_backward): - npu_args = [] - npu_kwargs = {} - if need_backward: - for arg_in in cpu_args: - if isinstance(arg_in, list): - arg_in = [arg_to_npu(item) for item in arg_in] - else: - arg_in = arg_to_npu(arg_in) - npu_args.append(arg_in) - for key, value in cpu_kwargs.items(): - if isinstance(value, list): - value = [arg_to_npu(item) for item in value] + def recursive_arg_to_npu(arg_in): + if isinstance(arg_in, (list, tuple)): + return type(arg_in)(recursive_arg_to_npu(arg) for arg in arg_in) + elif isinstance(arg_in, torch.Tensor): + if arg_in.dtype in [torch.float, torch.float16, torch.float64] and need_backward: + return arg_in.clone().detach().to("npu").requires_grad_() else: - value = arg_to_npu(value) - npu_kwargs[key] = value - else: - for arg_in in cpu_args: - if isinstance(arg_in, list): - arg_in = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in arg_in] - elif isinstance(arg_in, torch.Tensor): - arg_in = arg_in.clone().detach().to("npu") - npu_args.append(arg_in) - for key, value in cpu_kwargs.items(): - if isinstance(value, list): - value = [item.clone().detach().to("npu") if isinstance(item, torch.Tensor) else item for item in value] - elif isinstance(value, torch.Tensor): - value = value.clone().detach().to("npu") - npu_kwargs[key] = value - return npu_args, npu_kwargs - + return arg_in.clone().detach().to("npu") + else: + return arg_in -def arg_to_npu(arg_in): - if isinstance(arg_in, torch.Tensor) and arg_in.dtype in [torch.float, torch.float16, - torch.float64] and arg_in.requires_grad: - arg_in = arg_in.clone().detach().to("npu").requires_grad_() - elif isinstance(arg_in, torch.Tensor): - arg_in = arg_in.clone().detach().to("npu") - return arg_in + npu_args = recursive_arg_to_npu(cpu_args) + npu_kwargs = {key: recursive_arg_to_npu(value) for key, value in cpu_kwargs.items()} + return npu_args, npu_kwargs def run_ut(forward_file, backward_file, out_path, save_error_data): -- Gitee From b4ae0f2dbe1f434838c7e5ff7c541ed5ea01f8db Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 5 Aug 2023 04:28:52 +0000 Subject: [PATCH 7/8] update debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py. Signed-off-by: sunyiming --- debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b27488b44d7..9192b86b369 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 @@ -35,7 +35,7 @@ def generate_npu_params(cpu_args, cpu_kwargs, need_backward): if isinstance(arg_in, (list, tuple)): return type(arg_in)(recursive_arg_to_npu(arg) for arg in arg_in) elif isinstance(arg_in, torch.Tensor): - if arg_in.dtype in [torch.float, torch.float16, torch.float64] and need_backward: + if arg_in.dtype in [torch.float, torch.float16, torch.float64] and need_backward and arg_in.requires_grad: return arg_in.clone().detach().to("npu").requires_grad_() else: return arg_in.clone().detach().to("npu") -- Gitee From 4cfb3e43ffc2fd5b30df66d65910c9dde0f7752e Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 5 Aug 2023 04:44:23 +0000 Subject: [PATCH 8/8] update debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py. Signed-off-by: sunyiming --- debug/accuracy_tools/api_accuracy_checker/run_ut/run_ut.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 9192b86b369..350f436b380 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 @@ -35,7 +35,7 @@ def generate_npu_params(cpu_args, cpu_kwargs, need_backward): if isinstance(arg_in, (list, tuple)): return type(arg_in)(recursive_arg_to_npu(arg) for arg in arg_in) elif isinstance(arg_in, torch.Tensor): - if arg_in.dtype in [torch.float, torch.float16, torch.float64] and need_backward and arg_in.requires_grad: + if need_backward and arg_in.requires_grad: return arg_in.clone().detach().to("npu").requires_grad_() else: return arg_in.clone().detach().to("npu") -- Gitee