我们首先把 initialize_model_parallel 代码摘录出来。initialize_model_parallel 作用就是对模型进行分组,然后初始化进程组相关的各种全局变量。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 def initialize_model_parallel(tensor_model_parallel_size_=1, p
在_initialize_distributed()里,它会调用mpu.initialize_model_parallel()来设定并行策略: mpu.initialize_model_parallel(args.tensor_model_parallel_size,args.pipeline_model_parallel_size,args.virtual_pipeline_model_parallel_size,args.pipeline_model_parallel_split_rank,...) 你可以把initialize_megatron()看作...
初始化好了整个分布式环境后,开始创建tensor parallel, pipeline parallel和data parallel的各种并行通讯组: initialize_model_parallel函数 mpu.initialize_model_parallel( args.tensor_model_parallel_size, args.pipeline_model_parallel_size, args.virtual_pipeline_model_parallel_size, args.pipeline_model_parallel_spl...
# Intra-layer model parallel group that the current rank belongs to._TENSOR_MODEL_PARALLEL_GROUP =None# Inter-layer model parallel group that the current rank belongs to._PIPELINE_MODEL_PARALLEL_GROUP =None# Model parallel group (both intra- and pipeline) that the current rank belongs to._MOD...
_initialize_distributed#pytorch里的get_world_size 返回的是gpu总卡数初始化torch.distributedmpu.initialize_model_parallel (并行设置,核心函数)#RankGenerator:在每块GPU上启动一个进程(process),每个进程独立执行自己所维护的那部分模型的计算,实现并行训练 存储tp/pp/dp/ep/cp 各种并行度配置大小. 并且能够从 tp...
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( ...
执行bash scripts/pretrain_gpt2_model_parallel.sh 开启DeepSpeed 为了用上DeepSpeed需要更新三个文件: arguments.py : 参数配置文件 pretrain_gpt2.py : 训练的主入口点 utils.py : 模型保存和加载工具 参数解析 第一步是在 arguments.py 中使用 deepspeed.add_config_arguments() 将DeepSpeed 参数添加到 Megatr...
在`_initialize_distributed`函数中,通过将`args.expert_model_parallel`参数传入`initialize_model_parallel`函数,进一步实现了MoE的并行化。在`megatron/core/parallel_state.py`文件中,可以看到一个名为`_TENSOR_AND_EXPERT_PARALLEL_GROUP`的变量,它与`_TENSOR_MODEL_PARALLEL_GROUP`类似,用于指定...