详细内容或原文请订阅后点击阅览
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 Fimport torch.optim as optim
import torch . optim as optimimport time
import time我们将在所有实验中使用 CIFAR10,批量大小为 256。
def create_data_loader_cifar10(): transform = transforms.Compose( [ transforms.RandomCrop(32), transforms.RandomHorizontalFlip(), 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.RandomHorizontalFlip(),
变换 . RandomHorizontalFlip ( ) , 变换 . ToTensor