Pytorch 中的分布式训练的工作原理:分布式数据并行和混合精度训练

了解分布式训练在 pytorch 中的工作原理:数据并行、分布式数据并行和自动混合精度。以巨大的速度训练您的深度学习模型。

来源:AI夏令营

在本教程中,我们将学习如何使用 nn.parallel.DistributedDataParallel 在多个 GPU 中训练我们的模型。我们将以训练图像分类器为例,看看如何加快训练速度。

nn.parallel.DistributedDataParallel

让我们从一些导入开始。

导入 torch 导入 torchvision 导入 torchvision.transforms 作为 transforms 导入 torch.nn 作为 nn 导入 torch.nn. functional 作为 F 导入 torch.optim 作为 optim 导入时间

导入 torch

导入 torch

导入 torchvision

导入 torchvision

导入 torchvision.transforms 作为 transforms

导入 torchvision . 转换 作为 转换

导入 torch.nn 作为 nn

导入 torch . nn 作为 nn

导入 torch.nn. functional 作为 F

导入 torch . nn . functional as F

import torch.optim as optim

import torch . optim as optim

import time

import time

我们将在所有实验中使用 CIFAR10,批量大小为 256。

def create_data_loader_cifar10(): transform = transforms.Compose( [ transforms.RandomCrop(32), transforms.RandomHorizo​​ntalFlip(), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) batch_size = 256 trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size, shuffle=True, num_workers=10, pin_memory=True) testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform) testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size, shuffle=False, num_workers=10) return trainloader, testloader

def create_data_loader_cifar10():

def create_data_loader_cifar10 ( ) :

transform = transforms.Compose(

transform = 变换 . 组合 (

[

[

transforms.RandomCrop(32),

变换 . RandomCrop ( 32 ) ,

transforms.RandomHorizo​​ntalFlip(),

变换 . RandomHorizo​​ntalFlip ( ) , 变换 . ToTensor