Coverage for /home/jenkins/mindspore/testcases/testcases/tests/st/networks/large_models/resume/test_parallel_resume.py: 82%
28 statements
« prev ^ index » next coverage.py v7.5.4a0.dev2, created at 2025-08-13 15:26 +0800
html/ 0000755 0001750 0001750 00000000000 15047037337 011717 5 ustar jenkins jenkins html/z_7eb9929a84352c92_test_parallel_resume_py.html 0000644 0001750 0001750 00000054240 15047037077 022246 0 ustar jenkins jenkins
« prev ^ index » next coverage.py v7.5.4a0.dev2, created at 2025-08-13 15:26 +0800
1# Copyright 2025 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"""
16Test module for testing resume training from specified checkpoint.
17How to run this:
18 pytest tests/st/networks/large_models/resume/test_parallel_resume.py
19"""
21import os
22import shutil
24from tests.mark_utils import arg_mark
25from resume_train_utils import extract_loss_values
28def remove_folder(folder_path):
29 """
30 If the folder exists, delete it and all its contents.
32 Args:
33 folder_path: The path to the folder to delete.
34 """
35 if os.path.exists(folder_path): 35 ↛ 42line 35 didn't jump to line 42 because the condition on line 35 was always true
36 try:
37 shutil.rmtree(folder_path)
38 print(f"Directory '{folder_path}' has been removed.")
39 except OSError as e:
40 print(f"Remove directory '{folder_path}' failed: {e}")
41 else:
42 print(f"Directory '{folder_path}' is not exist.")
45class TestResumeTraining:
46 """A test class for testing pipeline."""
48 @arg_mark(plat_marks=['platform_ascend910b'], level_mark='level1', card_mark='allcards', essential_mark='essential')
49 def test_train(self):
50 """
51 Feature: Trainer.train()
52 Description: Test parallel trainer for train.
53 Expectation: AssertionError
54 """
55 ascend_home_path = os.getenv('ASCEND_HOME_PATH')
56 if not ascend_home_path: 56 ↛ 57line 56 didn't jump to line 57 because the condition on line 56 was never true
57 os.environ['ASCEND_HOME_PATH'] = "/usr/local/Ascend/latest"
59 sh_path = os.path.split(os.path.realpath(__file__))[0]
60 ret = os.system(f"export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 && "
61 f"bash {sh_path}/msrun_launch.sh 4")
63 os.system(f"grep -E 'ERROR|error' {sh_path}/msrun_log/worker_3.log -C 3")
64 assert ret == 0
66 loss = extract_loss_values("msrun_log/worker_3.log")
68 resume_start = 256
69 train_middle = 128
70 for i in range(0, 10):
71 assert abs(loss[resume_start + i] - loss[train_middle + i]) < 0.005
73 remove_folder("./output/test_resume_parallel/checkpoint")
« prev ^ index » next coverage.py v7.5.4a0.dev2, created at 2025-08-13 15:26 +0800
1import numpy as np
4def _generate_numpy_random_input(shape, dtype, name='', method='', *, low=None, high=None, seed=None):
5 """
6 Description: Generate numpy.ndarray with random seed.
7 Args:
8 shape(tuple[int]): The shape of numpy.ndarray.
9 dtype(np.dtype): The dtype of numpy.ndarray.
10 name(str): The name of numpy.ndarray will be used in test cases, eg: 'input', 'grad'.
11 method(str): Use np.random.'method' to generate numpy.ndarray.
12 low(number): Lowest number.
13 high(number): Highest number.
14 seed(number): Set random seed, will be used fo debugging.
15 Output:
16 numpy.ndarray
17 """
18 if seed is None:
19 seed = get_numpy_global_seed()
20 np.random.seed(seed)
21 print(f"random_generator: generate a numpy.ndarray(shape={shape}, dtype={dtype}, seed={seed}) by "
22 f"numpy.random.{method}, will be used as {name}")
23 if method == "randn":
24 return np.random.randn(*shape).astype(dtype)
25 if method == "randint":
26 return np.random.randint(low, high, shape, dtype=dtype)
27 if method == "uniform":
28 return np.random.uniform(low, high, shape).astype(dtype)
29 raise TypeError(f"numpy.random.{method} is not impl.")
32def get_numpy_global_seed():
33 return 1967515154
36def set_numpy_global_seed():
37 np.random.seed(get_numpy_global_seed())
40def get_numpy_random_seed():
41 ii32 = np.iinfo(np.int32)
42 seed = np.random.randint(0, ii32.max, size=1).astype(np.int32)
43 return seed
46def set_numpy_random_seed(seed=None):
47 if seed is None:
48 set_numpy_global_seed()
49 else:
50 print(f"random_generator: set random seed={seed} for numpy.random.method.")
51 np.random.seed(seed)
54def generate_numpy_ndarray_by_randn(shape, dtype, name='', seed=None):
55 return _generate_numpy_random_input(shape, dtype, name, "randn", seed=seed)
58def generate_numpy_ndarray_by_randint(shape, dtype, low, high=None, name='', seed=None):
59 return _generate_numpy_random_input(shape, dtype, name, "randint", low=low, high=high, seed=seed)
62def generate_numpy_ndarray_by_uniform(shape, dtype, low=0.0, high=1.0, name='', seed=None):
63 return _generate_numpy_random_input(shape, dtype, name, "uniform", low=low, high=high, seed=seed)
« prev ^ index » next coverage.py v7.5.4a0.dev2, created at 2025-08-13 15:26 +0800
coverage.py v7.5.4a0.dev2, created at 2025-08-13 15:26 +0800
No items found using the specified filter.
« prev ^ index » next coverage.py v7.5.4a0.dev2, created at 2025-08-13 15:26 +0800
« prev ^ index » next coverage.py v7.5.4a0.dev2, created at 2025-08-13 15:26 +0800