在Pytorch上使用多个GPU

问题描述 投票:3回答:1

我有两个GPU,它们都是CUDA设备,但我不知道如何使用它们来训练我的resnext模型:GitHub存储库的link,我将其作为项目的基本代码。我更改的唯一重要的事情是:

    resnet152_model = resnet.resnext50_32x4d(pretrained=True)
    model = resnet152_model
    model = nn.DataParallel(model).to(device)

我的设备在哪里:

device = torch.device('cuda')

如果我编写cuda,它应该使用所有可用的GPU,但不是。它使用我的第一个GPU,如果我写,它将仅使用我的第二个GPU:

torch.cuda.set_device(1)

我的错误是什么以及如何使我的代码使用多个GPU

python multiprocessing gpu torch
1个回答
3
投票

单身:

from torch import nn
import torch

# Set device to cuda if cuda is available
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# Create model
model = nn.Sequential(
  nn.Conv2d(1,20,5),
  nn.ReLU(),
  nn.Conv2d(20,64,5),
  nn.ReLU()
)

# moving model to GPU
model.to(device)

对于多个:

# Optional DataParallel, not needed for single GPU usage
model1 = torch.nn.DataParallel(model, device_ids=[0]).to(device)
# Or, using default 'device_ids=None'
model1 = torch.nn.DataParallel(model).to(device)

parallelism_tutorial

如果要将训练数据集加载到多个GPU:

def model(data):
    for d in ['/gpu:0', '/gpu:1']:
        with tf.device(d):
            #You can do tf.nn.relu, max_pool_2x2, tf.nn.dropout, etc...

y = tf.nn.softmax(model(x))
© www.soinside.com 2019 - 2024. All rights reserved.