From 52ac43890c8d90612eca6ddb5b963c155f6c042a Mon Sep 17 00:00:00 2001 From: sunyiming Date: Tue, 7 Nov 2023 02:00:24 +0000 Subject: [PATCH 1/6] =?UTF-8?q?update=20debug/accuracy=5Ftools/api=5Faccur?= =?UTF-8?q?acy=5Fchecker/test/ut/run=5Fut/test=5Frun=5Fut.py.=20=E9=80=9A?= =?UTF-8?q?=E8=BF=87mock=E6=A8=A1=E6=8B=9F=E8=A7=A3=E9=99=A4npu=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: sunyiming --- .../test/ut/run_ut/test_run_ut.py | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py b/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py index 9f464cab4fe..8de83b3e4e0 100644 --- a/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py +++ b/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py @@ -1,11 +1,12 @@ # coding=utf-8 -from api_accuracy_checker.run_ut.run_ut import generate_cpu_params, get_api_info, UtDataInfo -import unittest -import numpy as np import os import copy +import numpy as np +import unittest +from unittest.mock import MagicMock, patch from api_accuracy_checker.run_ut.run_ut import * from api_accuracy_checker.common.utils import get_json_contents +from api_accuracy_checker.run_ut.run_ut import generate_cpu_params, get_api_info, UtDataInfo base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) forward_file = os.path.join(base_dir, "../resources/forward.json") @@ -24,14 +25,27 @@ class TestRunUtMethods(unittest.TestCase): self.assertEqual(out.dtype, torch.float32) self.assertEqual(out.requires_grad, True) self.assertEqual(out.shape, torch.Size([2, 2560, 24, 24])) - - def test_generate_npu_params(self): - api_info = copy.deepcopy(api_info_dict) - [api_type, api_name, _] = api_full_name.split("*") - args, kwargs, need_grad = get_api_info(api_info, api_name) - npu_args, npu_kwargs = generate_npu_params(args, kwargs, True) + + @patch('torch.Tensor.to') + @patch('torch.Tensor.clone') + @patch('torch.Tensor.detach') + @patch('torch.Tensor.requires_grad_') + @patch('torch.Tensor.type_as') + @patch('torch.Tensor.retain_grad') + def test_generate_npu_params(self, mock_retain_grad, mock_type_as, mock_requires_grad, mock_detach, mock_clone, mock_to): + mock_tensor = MagicMock() + mock_tensor.requires_grad = True + mock_tensor.dtype = torch.float32 + mock_tensor.shape = torch.Size([2, 2560, 24, 24]) + mock_clone.return_value = mock_tensor + mock_detach.return_value = mock_tensor + mock_requires_grad.return_value = mock_tensor + mock_type_as.return_value = mock_tensor + mock_retain_grad.return_value = None + mock_to.return_value = mock_tensor + npu_args, npu_kwargs = generate_npu_params([mock_tensor], {'inplace': False}, True) self.assertEqual(len(npu_args), 1) - self.assertEqual(npu_args[0].dtype, torch.float16) + self.assertEqual(npu_args[0].dtype, torch.float32) self.assertEqual(npu_args[0].requires_grad, True) self.assertEqual(npu_args[0].shape, torch.Size([2, 2560, 24, 24])) self.assertEqual(npu_kwargs, {'inplace': False}) -- Gitee From 842f9c7880c79a3c1f17ce633930c08968b0cf7f Mon Sep 17 00:00:00 2001 From: sunyiming Date: Tue, 7 Nov 2023 02:07:11 +0000 Subject: [PATCH 2/6] update debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/test/ut/run_ut/test_run_ut.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py b/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py index 8de83b3e4e0..1ad9b0d225b 100644 --- a/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py +++ b/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py @@ -35,7 +35,7 @@ class TestRunUtMethods(unittest.TestCase): def test_generate_npu_params(self, mock_retain_grad, mock_type_as, mock_requires_grad, mock_detach, mock_clone, mock_to): mock_tensor = MagicMock() mock_tensor.requires_grad = True - mock_tensor.dtype = torch.float32 + mock_tensor.dtype = torch.float16 mock_tensor.shape = torch.Size([2, 2560, 24, 24]) mock_clone.return_value = mock_tensor mock_detach.return_value = mock_tensor @@ -45,7 +45,7 @@ class TestRunUtMethods(unittest.TestCase): mock_to.return_value = mock_tensor npu_args, npu_kwargs = generate_npu_params([mock_tensor], {'inplace': False}, True) self.assertEqual(len(npu_args), 1) - self.assertEqual(npu_args[0].dtype, torch.float32) + self.assertEqual(npu_args[0].dtype, torch.float16) self.assertEqual(npu_args[0].requires_grad, True) self.assertEqual(npu_args[0].shape, torch.Size([2, 2560, 24, 24])) self.assertEqual(npu_kwargs, {'inplace': False}) -- Gitee From 33d435a5c0be2cd5948db4cb0195cacf993349c5 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Tue, 7 Nov 2023 07:10:51 +0000 Subject: [PATCH 3/6] update debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py. Signed-off-by: sunyiming --- .../test/ut/run_ut/test_run_ut.py | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py b/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py index 1ad9b0d225b..e67ee1d5ae1 100644 --- a/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py +++ b/debug/accuracy_tools/api_accuracy_checker/test/ut/run_ut/test_run_ut.py @@ -3,7 +3,7 @@ import os import copy import numpy as np import unittest -from unittest.mock import MagicMock, patch +from unittest.mock import patch from api_accuracy_checker.run_ut.run_ut import * from api_accuracy_checker.common.utils import get_json_contents from api_accuracy_checker.run_ut.run_ut import generate_cpu_params, get_api_info, UtDataInfo @@ -26,29 +26,30 @@ class TestRunUtMethods(unittest.TestCase): self.assertEqual(out.requires_grad, True) self.assertEqual(out.shape, torch.Size([2, 2560, 24, 24])) - @patch('torch.Tensor.to') - @patch('torch.Tensor.clone') - @patch('torch.Tensor.detach') - @patch('torch.Tensor.requires_grad_') - @patch('torch.Tensor.type_as') - @patch('torch.Tensor.retain_grad') - def test_generate_npu_params(self, mock_retain_grad, mock_type_as, mock_requires_grad, mock_detach, mock_clone, mock_to): - mock_tensor = MagicMock() - mock_tensor.requires_grad = True - mock_tensor.dtype = torch.float16 - mock_tensor.shape = torch.Size([2, 2560, 24, 24]) - mock_clone.return_value = mock_tensor - mock_detach.return_value = mock_tensor - mock_requires_grad.return_value = mock_tensor - mock_type_as.return_value = mock_tensor - mock_retain_grad.return_value = None - mock_to.return_value = mock_tensor - npu_args, npu_kwargs = generate_npu_params([mock_tensor], {'inplace': False}, True) - self.assertEqual(len(npu_args), 1) - self.assertEqual(npu_args[0].dtype, torch.float16) - self.assertEqual(npu_args[0].requires_grad, True) - self.assertEqual(npu_args[0].shape, torch.Size([2, 2560, 24, 24])) - self.assertEqual(npu_kwargs, {'inplace': False}) + def test_generate_npu_params(self): + MockTensor = namedtuple('MockTensor', ['requires_grad', 'dtype', 'shape']) + mock_tensor = MockTensor(True, torch.float16, torch.Size([2, 2560, 24, 24])) + + with patch.multiple('torch.Tensor', + to=DEFAULT, + clone=DEFAULT, + detach=DEFAULT, + requires_grad_=DEFAULT, + type_as=DEFAULT, + retain_grad=DEFAULT) as mocks: + mocks['clone'].return_value = mock_tensor + mocks['detach'].return_value = mock_tensor + mocks['requires_grad_'].return_value = mock_tensor + mocks['type_as'].return_value = mock_tensor + mocks['retain_grad'].return_value = None + mocks['to'].return_value = mock_tensor + + npu_args, npu_kwargs = generate_npu_params([mock_tensor], {'inplace': False}, True) + self.assertEqual(len(npu_args), 1) + self.assertEqual(npu_args[0].dtype, torch.float16) + self.assertEqual(npu_args[0].requires_grad, True) + self.assertEqual(npu_args[0].shape, torch.Size([2, 2560, 24, 24])) + self.assertEqual(npu_kwargs, {'inplace': False}) def test_generate_cpu_params(self): api_info = copy.deepcopy(api_info_dict) -- Gitee From 743d453a9518981ac4e6a25ce00215149af5ec12 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 25 Nov 2023 01:00:48 +0000 Subject: [PATCH 4/6] update debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/test/ut/dump/test_dump.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump.py b/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump.py index 4b543c52764..655e624e809 100644 --- a/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump.py +++ b/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_dump.py @@ -15,7 +15,7 @@ class TestDumpUtil(unittest.TestCase): self.assertFalse(DumpUtil.get_dump_switch()) def test_incr_iter_num_maybe_exit(self): - msCheckerConfig.target_iter = 5 + msCheckerConfig.target_iter = [5] msCheckerConfig.enable_dataloader = True DumpUtil.call_num = 6 -- Gitee From 80df998d5c0a011f73f1d70a699466d074679a7b Mon Sep 17 00:00:00 2001 From: sunyiming Date: Sat, 25 Nov 2023 01:01:17 +0000 Subject: [PATCH 5/6] update debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_info_dump.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/test/ut/dump/test_info_dump.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_info_dump.py b/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_info_dump.py index 27efdf02ac3..2574716c408 100644 --- a/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_info_dump.py +++ b/debug/accuracy_tools/api_accuracy_checker/test/ut/dump/test_info_dump.py @@ -13,7 +13,7 @@ class TestInfoDump(unittest.TestCase): with patch('api_accuracy_checker.dump.info_dump.write_json') as mock_write_json: write_api_info_json(api_info) rank = os.getpid() - mock_write_json.assert_called_with(f'./backward_info_{rank}.json', api_info.grad_info_struct) + mock_write_json.assert_called_with(f'./step1/backward_info_{rank}.json', api_info.grad_info_struct) def test_write_api_info_json_invalid_type(self): api_info = APIInfo("test_api", True, True, "save_path") @@ -22,7 +22,7 @@ class TestInfoDump(unittest.TestCase): def tearDown(self): rank = os.getpid() - files = [f'./backward_info_{rank}.json'] + files = [f'./step1/backward_info_{rank}.json'] for file in files: if os.path.exists(file): os.remove(file) -- Gitee From 6ed9cb723b897968bd7ee6bccbf71e7e6118ff49 Mon Sep 17 00:00:00 2001 From: sunyiming Date: Fri, 1 Dec 2023 07:55:44 +0000 Subject: [PATCH 6/6] update debug/accuracy_tools/api_accuracy_checker/test/ut/compare/test_algorithm.py. Signed-off-by: sunyiming --- .../api_accuracy_checker/test/ut/compare/test_algorithm.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/api_accuracy_checker/test/ut/compare/test_algorithm.py b/debug/accuracy_tools/api_accuracy_checker/test/ut/compare/test_algorithm.py index 54d452ed01a..ab0f146e496 100644 --- a/debug/accuracy_tools/api_accuracy_checker/test/ut/compare/test_algorithm.py +++ b/debug/accuracy_tools/api_accuracy_checker/test/ut/compare/test_algorithm.py @@ -1,12 +1,13 @@ import unittest +import torch import numpy as np from api_accuracy_checker.compare import algorithm as alg class TestAlgorithmMethods(unittest.TestCase): def test_compare_torch_tensor(self): - cpu_output = np.array([1, 2, 3]) - npu_output = np.array([1, 2, 3]) + cpu_output = torch.Tensor([1, 2, 3]) + npu_output = torch.Tensor([1, 2, 3]) compare_alg = alg.get_max_rel_err self.assertEqual(alg.compare_torch_tensor(cpu_output, npu_output, compare_alg), (0.0, 'pass', '')) -- Gitee