pytorch学习(4)数据并行
pytorch60分钟教程最后一篇,这次学习如何使用DataParallel来调用多个GPU(然而实验室的GPU我还没用过)
在前面的学习中我们知道用如下方法来使用GPU:
把模型放入GPU中:
device = torch.device("cuda:0")
model.to(device)
把张量放入GPU中:
mytensor = my_tensor.to(device)
而通过 model = nn.DataParallel(model) 我们可以让数据集被分割送入不同的GPU,运行完成后再收集回来。
举个栗子:
先创建一个假数据集:
import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
# Parameters and DataLoaders
input_size = 5
output_size = 2
batch_size = 30
data_size = 100
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
class RandomDataset(Dataset):
def __init__(self, size, length):
self.len = length
self.data = torch.randn(length, size)
def __getitem__(self, index):
return self.data[index]
def __len__(self):
return self.len
rand_loader = DataLoader(dataset=RandomDataset(input_size, data_size),
batch_size=batch_size, shuffle=True)
创建一个简单模型:
class Model(nn.Module):