如何通过Pytorch实现高效的多显卡并行训练?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2549个文字,预计阅读时间需要11分钟。
目录
1.DP
2.DDP
2.1 Pytorch分布式基础 2.2 Pytorch分布式训练DEMO 当一块GPU不够用时,我们需要使用多卡并行训练。 多卡并行可分为数据并行和模型并行。 具体区域如图所示: 由分布式引出...目录
- 1.DP
- 2.DDP
- 2.1Pytorch分布式基础
- 2.2Pytorch分布式训练DEMO
当一块GPU不够用时,我们就需要使用多卡进行并行训练。其中多卡并行可分为数据并行和模型并行。具体区别如下图所示:
由于模型并行比较少用,这里只对数据并行进行记录。对于pytorch,有两种方式可以进行数据并行:数据并行(DataParallel, DP)和分布式数据并行(DistributedDataParallel, DDP)。
在多卡训练的实现上,DP与DDP的思路是相似的:
1、每张卡都复制一个有相同参数的模型副本。
2、每次迭代,每张卡分别输入不同批次数据,分别计算梯度。
3、DP与DDP的主要不同在于接下来的多卡通信:
DP的多卡交互实现在一个进程之中,它将一张卡视为主卡,维护单独模型优化器。所有卡计算完梯度后,主卡汇聚其它卡的梯度进行平均并用优化器更新模型参数,再将模型参数更新至其它卡上。
DDP则分别为每张卡创建一个进程,每个进程相应的卡上都独立维护模型和优化器。
本文共计2549个文字,预计阅读时间需要11分钟。
目录
1.DP
2.DDP
2.1 Pytorch分布式基础 2.2 Pytorch分布式训练DEMO 当一块GPU不够用时,我们需要使用多卡并行训练。 多卡并行可分为数据并行和模型并行。 具体区域如图所示: 由分布式引出...目录
- 1.DP
- 2.DDP
- 2.1Pytorch分布式基础
- 2.2Pytorch分布式训练DEMO
当一块GPU不够用时,我们就需要使用多卡进行并行训练。其中多卡并行可分为数据并行和模型并行。具体区别如下图所示:
由于模型并行比较少用,这里只对数据并行进行记录。对于pytorch,有两种方式可以进行数据并行:数据并行(DataParallel, DP)和分布式数据并行(DistributedDataParallel, DDP)。
在多卡训练的实现上,DP与DDP的思路是相似的:
1、每张卡都复制一个有相同参数的模型副本。
2、每次迭代,每张卡分别输入不同批次数据,分别计算梯度。
3、DP与DDP的主要不同在于接下来的多卡通信:
DP的多卡交互实现在一个进程之中,它将一张卡视为主卡,维护单独模型优化器。所有卡计算完梯度后,主卡汇聚其它卡的梯度进行平均并用优化器更新模型参数,再将模型参数更新至其它卡上。
DDP则分别为每张卡创建一个进程,每个进程相应的卡上都独立维护模型和优化器。

