2021-10-28 16:21:23 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# -*- encoding: utf-8 -*-
|
|
|
|
|
|
|
|
from abc import ABC, abstractmethod
|
|
|
|
|
|
|
|
from colossalai.context import Config
|
|
|
|
|
|
|
|
|
|
|
|
class ProcessGroupInitializer(ABC):
|
2022-01-21 02:44:30 +00:00
|
|
|
"""An object, knowing the parallelism configuration, that initializes parallel groups.
|
|
|
|
|
2022-03-25 05:02:39 +00:00
|
|
|
Args:
|
|
|
|
rank (int): The rank of current process.
|
|
|
|
world_size (int): Size of whole communication world.
|
|
|
|
config (Config): Running configuration.
|
|
|
|
data_parallel_size (int): Size of data parallel.
|
|
|
|
pipeline_parallel_size (int): Size of pipeline parallel.
|
|
|
|
tensor_parallel_size (int): Size of tensor parallel.
|
2022-01-21 02:44:30 +00:00
|
|
|
"""
|
2021-10-28 16:21:23 +00:00
|
|
|
def __init__(self,
|
|
|
|
rank: int,
|
|
|
|
world_size: int,
|
|
|
|
config: Config,
|
|
|
|
data_parallel_size: int,
|
2022-01-21 02:44:30 +00:00
|
|
|
pipeline_parallel_size: int,
|
2021-10-28 16:21:23 +00:00
|
|
|
tensor_parallel_size: int
|
|
|
|
):
|
|
|
|
self.rank = rank
|
|
|
|
self.world_size = world_size
|
|
|
|
self.data_parallel_size = data_parallel_size
|
|
|
|
self.config = config
|
2022-01-21 02:44:30 +00:00
|
|
|
self.pipeline_parallel_size = pipeline_parallel_size
|
2021-10-28 16:21:23 +00:00
|
|
|
self.tensor_parallel_size = tensor_parallel_size
|
|
|
|
super().__init__()
|
|
|
|
|
|
|
|
@abstractmethod
|
|
|
|
def init_dist_group(self):
|
|
|
|
pass
|