"scripts/vscode:/vscode.git/clone" did not exist on "afdee7b1a9d2ec2faec2f2d895df6a631e6ef573"
test_groups.py 1.26 KB
Newer Older
aiss's avatar
aiss committed
1
2
3
4
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0

# DeepSpeed Team
aiss's avatar
aiss committed
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

from deepspeed.utils.groups import _get_expert_parallel_ranks


def test_get_expert_parallel_ranks():
    """
    Example - E + M + D parallel
    world_size = 16
    model_degree = 2
    expert_degree = 4 # number of experts in same group
    mp_group = [0, 1], [2,3], [4,5] ...
    data_parallel_group =[0,2,4,6,8,10, 12,14],                 [1,3,5,7,9,11,13,15]
    expert_parallel_group = [0,2,4,6], [8,10,12,14]             [1,3,5,7], [9,11,13,15]
    expert_data_parallel_group = [0,8],[2,10],[4,12],[6,14],    [1,9],[3,11],[5,13],[7,15]
    """
aiss's avatar
aiss committed
20
21
22
    expert_parallel_groups, expert_data_parallel_groups = _get_expert_parallel_ranks(world_size=16,
                                                                                     model_parallel_size_=2,
                                                                                     expert_parallel_size_=4)
aiss's avatar
aiss committed
23
    assert expert_parallel_groups == [
aiss's avatar
aiss committed
24
25
26
27
        [0, 2, 4, 6],
        [8, 10, 12, 14],
        [1, 3, 5, 7],
        [9, 11, 13, 15],
aiss's avatar
aiss committed
28
29
    ]
    assert expert_data_parallel_groups == [
aiss's avatar
aiss committed
30
31
32
33
34
35
36
37
        [0, 8],
        [2, 10],
        [4, 12],
        [6, 14],
        [1, 9],
        [3, 11],
        [5, 13],
        [7, 15],
aiss's avatar
aiss committed
38
    ]