进入initialize_model_parallel函数,我们来看一下一些重要的参数: tensor_model_parallel_size:张量并行的维度,一个张量并行组内的GPU数量 pipeline_model_parallel_size:流水线并行的维度,流水线GPU组(pipeline group)的数量,stage的数量 virtual_pipeline_model_parallel_size:虚拟流水线并行的维度,每个pipeline group中...
4.2 initialize_model_parallel函数定义 initialize_model_parallel是模型初始化的重点,定义在megatron/core/parallel_state.py def initialize_model_parallel( tensor_model_parallel_size: int = 1, pipeline_model_parallel_size: int = 1, virtual_pipeline_model_parallel_size: Optional[int] = None, pipeline_m...
我们首先把 initialize_model_parallel 代码摘录出来。initialize_model_parallel 作用就是对模型进行分组,然后初始化进程组相关的各种全局变量。 代码语言:javascript 复制 def initialize_model_parallel(tensor_model_parallel_size_=1, pipeline_model_parallel_size_=1, virtual_pipeline_model_parallel_size_=None, pi...
我们首先把 initialize_model_parallel 代码摘录出来。initialize_model_parallel 作用就是对模型进行分组,然后初始化进程组相关的各种全局变量。 definitialize_model_parallel(tensor_model_parallel_size_=1, pipeline_model_parallel_size_=1, virtual_pipeline_model_parallel_size_=None, pipeline_model_parallel_split...
initialize_model_parallel 方法用来设置模型并行,所以我们接下来就具体分析。 2.1 全局变量 因为前文_initialize_distributed之中调用了torch.distributed.init_process_group 初始化分布式环境,所以我们知道,每个进程都有自己的 gloabl rank 和 local rank,都有自己的全局变量。
在实现这一策略时,主要代码位于Megatron-LM/megatron/training/initialize.py文件中的initialize_megatron函数,核心在于_initialize_distributed()函数。这个函数利用mpu.initialize_model_parallel方法来划分各个进程组。具体的组划分逻辑通过RankGenerator类实现。分组策略包括数据并行、张量+专家并行等多种方式。
回pretrain函数,它的第一行就通过initialize_megatron执行了分布式初始化: defpretrain( train_valid_test_dataset_provider, model_provider, forward_step_func, valid_forward_step_func=None, extra_args_provider=None, args_defaults={}, ):initialize_megatron( ...
在`_initialize_distributed`函数中,通过将`args.expert_model_parallel`参数传入`initialize_model_parallel`函数,进一步实现了MoE的并行化。在`megatron/core/parallel_state.py`文件中,可以看到一个名为`_TENSOR_AND_EXPERT_PARALLEL_GROUP`的变量,它与`_TENSOR_MODEL_PARALLEL_GROUP`类似,用于指定...
_initialize_distributed 代码位于 megatron/initialize.py,此方法会: 调用torch.distributed.init_process_group 初始化分布式环境。 调用mpu.initialize_model_parallel 来设置模型并行,数据并行等各种进程组,我们下文会重点讨论。 创建完worker进程之后,程序需要知道哪些进程在训练同一个模型,torch.distributed.init_process...
_initialize_distributed 代码位于 megatron/initialize.py,此方法会: 调用torch.distributed.init_process_group 初始化分布式环境。 调用mpu.initialize_model_parallel 来设置模型并行,数据并行等各种进程组,我们下文会重点讨论。 创建完worker进程之后,程序需要知道哪些进程在训练同一个模型,torch.distributed.init_process...