关于pytorch的gpu并行的问题

在深度学习任务中,使用多gpu并行操作是必不可少的,因为深度学习任务的计算量之大导致使用cpu进行计算会相当耗时,而gpu的计算速度是cpu的几十倍甚至上百倍。这是因为gpu内部是采用并行计算,而cpu采用的是串行。

pytorch深度学习框架也能够指定多gpu并行,使用gpu并行需要指定以下几步:

(1)声明可见物理gpu:这一步相当于告诉程序只能够看见那几块gpu,在python中声明如下

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1,2,3,4"

如上述代码所示,指定程序只能够看到1,2,3,4号gpu

(2)指定模型使用的物理gpu:

from torch import nn
device_ids = [0, 2]
model_gpu = nn.DataParallel(module=my_model, device_ids=device_ids)

这里的device_ids是物理gpu对应的索引,如(1)中指定的物理gpu为"1,2,3,4",其对应索引为0,1,2,3,那这里指定device_ids=[0, 2]表示使用物理gpu1和物理gpu3

(3)将模型放在device_ids[0]上作为controller:

model_gpu = model_gpu.cuda(device_ids[0])

通过以上三步,就可以指定多gpu运算,当然需要注意的是,要使用gpu运算,需要将模型输入数据,损失函数计算对象均放至device_ids[0]上

接下来使用代码进行了简单的验证:

可以看到指定物理gpu为4,5,6,7号,device_ids设定为[0, 3],应当使用的是物理gpu4和物理gpu7,结果如下图

验证了猜测,再次进行测试

这次指定物理gpu仍然为4,5,6,7号,不同的是指定device_ids为[1, 3],也就是使用物理gpu5和物理gpu7,运行结果如下图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值