主要内容

深度学习与马铃薯在多GPU

神经网络是本质为并行的算法。您可以通过使用并行计算工具箱™跨越多核CPU,GPU和多个CPU和GPU的计算机集群分发培训采取这种并行的优势。

如果您可以访问具有多个gpu的机器,您可以简单地指定培训选项“multi-gpu”使用培训选项功能。当与多个GPU训练,每个图像批次在GPU之间分配。有关培训多GPU的更多信息,请参阅多GPU训练

如果您想使用更多资源,可以将深度学习培训扩展到集群或云。要了解更多关于并行选项的信息,请参见并行和在云中扩展深度学习.举个例子,请看列车网络在云中使用自动并行支持万博1manbetx

选择用于培训的特定图形处理器

如果有多个图形处理器,可以在开始培训前选择设备,使用指定的图形处理器进行单GPU培训。使用gpuDeviceTable(并行计算工具箱)函数来检查您的GPU并确定要使用的GPU的索引。然后,使用其索引选择GPU:

gpuDevice(索引)
要在训练时使用此GPU,请运行Trainnetwork.使用培训选项'executionenvironment','gpu'

如果您想使用机器上所有可用的gpu,只需指定培训选项“ExecutionEnvironment”、“multi-gpu”

如果你想培养使用多GPU的单一模式,你不希望使用所有的GPU,提前打开并行游泳池和手动选择的GPU。你可能想这样做是为了避免在性能差显示GPU训练。要选择特定的GPU,使用下面的代码,其中gpuIndices是要使用GPU的指标:

Parpool('local',numel(gpuindices));spmd gpudevice(gpuindices(labindex));结束
当你运行时Trainnetwork.与之“multi-gpu” execultenvironment.(或'平行线'对于相同的结果),培训函数使用此池并无法打开新的池。

另一种选择是选择使用“WorkerLoad”选项培训选项.例如:

parpool( '本地',5);OPTS = trainingOptions( 'SGDM', 'WorkerLoad',[1 1 1 0 1],...)

在这种情况下,第4个worker是池的一部分,但空闲,这不是对并行资源的理想使用。它是更有效的指定图形处理器GPudevice.

如果你想用一个GPU训练多个模型,为每个模型启动一个MATLAB会话,并选择一个使用的设备GPudevice.

或者,使用aparfor循环:

parfor i = 1: gpuDeviceCount(“可用”)trainNetwork(…);结束

列车网络在云中使用自动并行支持万博1manbetx

此示例示出了如何训练使用MATLAB并行训练自动支持的卷积神经网络。万博1manbetx深学习培训往往需要数小时或数天。与并行计算,则可以使用多个图形处理单元(GPU)本地或在云簇加速训练。如果你有机会获得多GPU的机器,那么你可以对数据的本地副本,完成这个例子。如果您想使用更多的资源,那么你可以扩展深度学习培训到云中。要了解更多关于您的选项并行训练,看并行和在云中扩展深度学习.这个例子指导您通过使用MATLAB自动并行支持在云中的集群中训练深度学习网络的步骤。万博1manbetx

要求

在可以运行的例子,你需要配置群集和上传数据到云中。在MATLAB中,你可以创建直接从MATLAB桌面的云团。在这一点首页标签,在平行线菜单中,选择创建和管理集群.在集群配置文件管理器中,单击创建云计算集群.或者,您可以使用MathWorks云中心来创建和访问计算群集。有关更多信息,请参阅云中心入门.之后,将数据上传到Amazon S3桶,并直接从MATLAB访问它。本示例使用已经存储在Amazon S3中的CIFAR-10数据集的副本。说明,请参阅上传深度学习数据到云

设置并行池

启动集群中的并行池和工人数量设置为集群中的GPU的数量。如果指定的GPU更多的工人,那么剩下的工人处于闲置状态。这个例子假设您正在使用的集群设置为默认群集配置文件。检查的MATLAB默认的群集配置文件首页标签,in.平行线>选择默认集群

numberOfWorkers = 8;parpool(numberOfWorkers);
开始使用“MyClusterInTheCloud的个人资料...连接到8名工人并行池(parpool)。

从云中加载数据集

使用。从云加载训练和测试数据集imageageAtastore..在这个例子中,您使用CIFAR-10数据的副本集存储在亚马逊S3。为了保证工人能够在云中的数据存储,确保为AWS凭据的环境变量设置正确。看上传深度学习数据到云

imdstrain = imagedataStore(s3: / / cifar10cloud / cifar10 /火车'...'insertumbfolders',真的,...'labelsource'“foldernames”);imdsTest = imageDatastore('s3:// cifar10cloud / cifar10 / test'...'insertumbfolders',真的,...'labelsource'“foldernames”);

通过创建一个增强的图像数据来训练网络augmentedImageDatastore对象。使用随机平移和水平反射。数据增强有助于防止网络过度拟合和记忆训练图像的确切细节。

imageSize = [32 32 3];pixelRange = [-4 4];imageAugmenter = imageDataAugmenter (...'randxreflection',真的,...'RandXTranslation'pixelRange,...'RandYTranslation',pixelrange);Augmentedimdstrain = AugmentedimageGedataStore(图像化,IMDstrain,...“DataAugmentation”imageAugmenter,...'OutputSizeMode''randcrop');

定义网络体系结构和培训方案

限定用于CIFAR-10数据集的网络架构。为了简化代码,使用卷积输入卷积块。汇集层下采样的空间尺寸。

blockDepth = 4;%blockDepth控制卷积块的深度netWidth = 32;% netWidth控制卷积块中过滤器的数量图层= [imageInputlayer(iconageize)卷积块(netwidth,blockdepth)maxpooling2dlayer(2,“步”,2)convolutionalBlock(2 * netWidth,blockDepth)maxPooling2dLayer(2,“步”,2)卷积块(4 * NetWidth,BlockDepth)普通Pooling2dlayer(8)全连接列(10)SoftmaxLayer分类层];

定义培训选项。使用当前群集并行列车通过将执行环境设置为平行线.当您使用多GPU,你增加了可用的计算资源。扩展了GPU的数量的小批量大小,以保持工作量每个GPU不变。根据小批量大小缩放学习率。使用学习率如期下降的学习率随着培训的进行。打开训练进度情节培训过程中获得的视觉反馈。

miniBatchSize = 256 * numberOfWorkers;initialLearnRate = 1e-1 * miniBatchSize/256;选择= trainingOptions ('SGDM'...“ExecutionEnvironment”'平行线'...%打开自动平行支撑。万博1manbetx'InitialLearnRate'initialLearnRate,...%设置初始学习率。“MiniBatchSize”,小匹马,...%设置MiniBatchSize。'verbose',错误的,...%不发送命令行输出。“阴谋”“训练进步”...打开训练进度图。“L2Regularization”1平台以及...“MaxEpochs”,50,...“洗牌”'每个时代'...'vightationdata'imdsTest,...'验证职业',地板(Numel(Imdstrain.files)/ minibatchsize),...'LearnRateSchedule'“分段”...'LearnRateDropFactor', 0.1,...“LearnRateDropPeriod”,45);

列车网络和使用分类

训练集群中的网络。在训练期间,情节显示了进展。

净= trainNetwork (augmentedImdsTrain、层、期权)

净= SeriesNetwork与属性:层:[43×1 nnet.cnn.layer.Layer]

确定网络的精度,通过训练的网络到本地计算机上的测试图像进​​行分类。那么预测的标签与实际的标签。

YPredicted =分类(净,imdsTest);精度=总和(YPredicted == imdsTest.Labels)/ numel(imdsTest.Labels)

定义辅助功能

定义一个函数在网络架构中创建一个卷积块。

功能layers =[卷积2dlayer (3,numFilters, numConvLayers)] layer =[卷积2dlayer (3,numFilters,'填充''相同的')BatchnormalizationLayer Ruilulayer];图层= Repmat(图层,NumConvlayers,1);结束

另请参阅

|||(并行计算工具箱)|(并行计算工具箱)

相关话题