主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

MATLABによる複数のGPUでの深層学習

ニューラルネットワークは本地的ににアルゴリズムですです。并行计算工具箱™をを使使使使使使使,学校ををcpuやマルチコアgpu,数码のcpuとgpuを备たコンピューターのを料をできます。

複数のGPUがあるマシンにアクセスできる場合は,関数培训选项を使用して単純に学習オプション“multi-gpu”を指定できます。複数のGPUを使用した学習の場合,各イメージバッチがGPU間に分散されます。複数のGPUを使用した学習の詳細については,複数のGPUによる学習を参照してください。

より多くのリソースを使用する必要がある場合は,深層学習における学習をクラスターまたはクラウドにスケールアップできます。並列オプションの詳細は,並列およびクラウドでの深層学習のスケールアップを参照してください。例を試してみるには,自動並列サポートを使用したクラウドでのネットワークの学習を参照してください。

学習に使用する特定のGPUの選択

マシン上の利用可能なgpuをを使使するには,単纯単纯学习オプション“ExecutionEnvironment”、“multi-gpu”を指定します。

复数のgpuののうちうちつを选択しててつのモデルの习习に使にはにににはにににににに

gpuDevice(索引)
1つのモデルの学習に複数のGPUを使用するが,全部のGPUは使わない場合は,事前に並列プールを開き,GPUを手動で選択します。特定のGPUを選択するには,次のコードを使用します。GPuindices.はgpuのインデックスです。
parpool(当地的元素个数(gpuIndices));spmd gpuDevice (gpuIndices (labindex));结束
“multi-gpu” execultenvironment.(または同じ結果が得られる“平行”)を使用してtrainNetworkを実行する場合,学習関数はこのプールを使用し,新しいプールを開きません。

别のオプションは,培训选项'Workload'ですを使てワーカーててをですです。

parpool(“当地”,5);opts = trainingOptions('sgdm', 'WorkerLoad',[1 1 1 0 1],…)

このこの合,4番目のワーカーはプールのですがアイドルであり,并列并列の理解的な使使用方法ではありではありん。GPudevice.でgpuを指定する方向性的です。

複数のモデルに1つずつGPUを使用して学習させる場合,それぞれのMATLABセッションを開始し,GPudevice.を使用してデバイスを選択します。

または,parforループを使用します。

parfor i = 1: gpuDeviceCount trainNetwork(…);结束

自動並列サポートを使用したクラウドでのネットワークの学習

この例では,並列学習用のMATLABの自動サポートを使用して畳み込みニューラルネットワークに学習させる方法を説明します。多くの場合,深層学習における学習には数時間または数日かかります。並列計算を使用すると,複数のグラフィックス処理装置(GPU)をローカルで,またはクラウドのクラスターで使用して,学習を高速化できます。複数のGPUがあるマシンにアクセスできる場合は,データのローカルコピーに対してこの例を完了させることができます。より多くのリソースを使用する必要がある場合は,深層学習における学習をクラウドにスケールアップできます。並列学習のオプションの詳細は,並列およびクラウドでの深層学習のスケールアップ,MATLABの自动并列を使て,クラウドのさ深层についてネットワークに习させる手顺についてを追ってて说ししをに习てせるし使顺を习てせるせる顺を追っ习てせるせる顺を追っ习させるせるをを习习させる使顺を习习ささせるをを追っ习习さををを习习ささてをを习习てささををで习で习さををで习でささををを习でささを习ででででででででででで

要件

例を実行する前に,クラスターを構成し,データをクラウドにアップロードする必要があります。MATLABでは、MATLAB デスクトップから直接、クラウドにクラスターを作成できます。[ホーム]タブの[並列]メニューで,[クラスターの作成と管理)を選択します。クラスタープロファイルマネージャーで,[クラウドクラウドクラスター作作作作者または,Mathworks云中心ををcloud cloudをますますますますますは,云中心入门を参照してください。その後,データをAmazon S3バケットにアップロードして,MATLABから直接アクセスします。この例では,Amazon S3に既に格納されているCIFAR-10データセットのコピーを使用します。手順については,クラウドへの深層学習データのアップロードを参照してください。

並列プールの設定

クラスターの並列プールを起動して,ワーカー数をクラスターのGPU数に設定します。GPUより多くのワーカーを指定した場合,残りのワーカーはアイドル状態になります。この例では,使用するクラスターが既定のクラスタープロファイルとして設定されていると仮定します。MATLABの[ホーム]タブの[並列][既定のクラスターの选択]で,既定のクラスタープロファイルを确认しますます。

numberofworkers = 8;parpool(numberofworkers);
使用“myclusterinthecloud”配置文件启动并行池(Parpool)...连接到8名工人。

クラウドからのデータセットの読み込み

imageageAtastore.を使用して,学習データセットとテストデータセットをクラウドから読み込みます。この例では,Amazon S3に格納されているCIFAR-10データセットのコピーを使用します。ワーカーがクラウドのデータストアに確実にアクセスできるように,AWS資格情報の環境変数が正しく設定されていることを確認してください。クラウドへの深層学習データのアップロードを参照してください。

imdstrain = imagedataStore(s3: / / cifar10cloud / cifar10 /火车'...'insertumbfolders',真的,...'labelsource'“foldernames”);imdstest = imageageataStore('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)卷大布(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”“平行”...%打开自动并行支持。金宝app“InitialLearnRate”initialLearnRate,...%设置初始学习率。“MiniBatchSize”,小匹马,...%设置MiniBatchSize。“详细”,错误的,...%不发送命令行输出。“阴谋”“训练进步”...打开训练进度图。“L2Regularization”1平台以及...“MaxEpochs”,50,...“洗牌”'每个时代'...'vightationdata'imdsTest,...'验证职业',地板(Numel(Imdstrain.files)/ minibatchsize),...'shownrateschedule'“分段”...“LearnRateDropFactor”, 0.1,...“LearnRateDropPeriod”, 45岁);

ネットワークの学习と分类でで使用

クラスターでネットワークに学習させます。学習中に進行状況のプロットが表示されます。

净= trainNetwork (augmentedImdsTrain、层、期权)

net = SeriesNetwork with properties: Layers: [43×1 net.cnn.layer. layer]

学習済みネットワークを使用してローカルマシン上でテストイメージを分類し,ネットワークの精度を判断します。次に,予測ラベルを実際のラベルと比較します。

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

補助関数の定義

ネットワークアーキテクチャで畳み込みブロックを作成する関数を定義します。

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

参考

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

关键词トピック