PyTorch分布式训练简介

PyTorch分布式训练

分布式训练已经成为如今训练深度学习模型的一个必备工具,但pytorch默认使用单个GPU进行训练,如果想用使用多个GPU乃至多个含有多块GPU的节点进行分布式训练的时候,需要在代码当中进行修改,这里总结一下几种使用pytorch进行分布式训练的方式。

环境

本文使用的环境为:

  • python =3.7
  • pytorch = 1.0
  • CUDA = 8.0

使用单个GPU

pytorch中pytorch.cuda用于设置和运行CUDA操作,它会跟踪当前选定的GPU,并且您分配的所有CUDA张量将默认在该设备上创建。所选设备可以使用 torch.cuda.device 环境管理器进行更改。
pytorch中想要使用GPU进行模型训练非常简单,首先需要使用代码torch.cuda.is_available()判断当前环境是否可以使用GPU,如果返回False那么证明GPU不可用,需要检查软件包或驱动等是否安装正确。
当GPU可用时,可以使用torch.device()创建一个torch.device对象,例如torch.device('cuda')或使用torch.device('cuda:0')指定GPU,该对象可以将张量移动至GPU上。假设有一个张量x,我们可以使用x.cuda()x.to(device)的方式将其移动至GPU上,这两种方式可以视作是等价的,并没有太大的区别,Variable与模型同理,也可以使用这样的方式进行移动。接下来按照征程的操作即可以进行训练。

单机使用多个GPU

单机使用多个GPU有两种方式,torch.nn.DataParallel()torch.nn.parallel.DistributedDataParallel
其中torch.nn.DataParallel()只能实现在单机多卡中进行分布式训练,而torch.nn.parallel.DistributedDataParallel则是新方法,在单机多卡和多机多卡都可以训练。官方建议使用最新的torch.nn.parallel.DistributedDataParallel,因为即使在单机多卡上,新的方法在效率上也要比旧的表现好。

torch.nn.DataParallel()

使用该方法的方式很简单,假设我们已经构建了一个模型NET&#x

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值