华为云AI开发平台ModelArts单机多卡数据并行-DataParallel(DP)_云淘科技

本章节介绍基于Pytorch引擎的单机多卡数据并行训练。

MindSpore引擎的分布式训练参见MindSpore官网。

训练流程简述

单机多卡数据并行训练流程介绍如下:

将模型复制到多个GPU上
将一个Batch的数据均分到每一个GPU上
各GPU上的模型进行前向传播,得到输出
主GPU(逻辑序号为0)收集各GPU的输出,汇总后计算损失
分发损失,各GPU各自反向传播梯度
主GPU收集梯度并更新参数,将更新后的模型参数分发到各GPU

具体流程图如下:

图1 单机多卡数据并行训练

DataParallel进行单机多卡训练的优缺点

代码简单:仅需修改一行代码。
通信瓶颈 :负责reducer的GPU更新模型参数后分发到不同的GPU,因此有较大的通信开销。
GPU负载不均衡:负责reducer的GPU需要负责汇总输出、计算损失和更新权重,因此显存和使用率相比其他GPU都会更高。

代码改造点

模型分发:DataParallel(model)

完整代码由于代码变动较少,此处进行简略介绍。

import torch
class Net(torch.nn.Module):
	pass

model = Net().cuda()

### DataParallel Begin ###
model = torch.nn.DataParallel(Net().cuda())
### DataParallel End ###

父主题: 分布式训练

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家