ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

並列およびクラウドでの深層学習のスケールアップ

複数の GPU での深層学習

ニューラル ネットワークは本質的に並列アルゴリズムです。この並列性の利点を活かし、Parallel Computing Toolbox™ を使用して、学習をマルチコア CPU、グラフィックス処理装置 (GPU)、および複数の CPU と GPU を備えたコンピューターのクラスターに分散させることができます。

深いネットワークの学習は計算量が非常に多くなります。通常は、高性能の GPU を使用して学習時間を短縮できます。適切な GPU がない場合は、代わりに 1 つ以上の CPU コアで学習させるか、クラウドの GPU をレンタルすることができます。畳み込みニューラル ネットワークの学習は、1 つの GPU または CPU で、複数の GPU または CPU コアで、あるいはクラスターで並列に行えます。GPU または並列オプションを使用するには Parallel Computing Toolbox が必要です。

ヒント

GPU は自動的にサポートされます。既定では、関数 trainNetwork は GPU を利用できる場合は、GPU を使用します。

複数の GPU があるマシンにアクセスできる場合は、単に学習オプション 'ExecutionEnvironment','multi-gpu' を指定します。

より多くのリソースを使用する必要がある場合は、深層学習における学習をクラウドにスケールアップできます。

深層学習の組み込みの並列サポート

学習リソースSettings詳細

ローカル マシン上の 1 つの GPU

自動。既定では、関数 trainNetwork は GPU を利用できる場合は、GPU を使用します。

'ExecutionEnvironment'

分類用のシンプルな深層学習ネットワークの作成

ローカル マシン上の複数の GPU

関数 trainingOptions'ExecutionEnvironment','multi-gpu' を指定します。

'ExecutionEnvironment'

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

ローカル マシン上の複数の CPU コア

'ExecutionEnvironment','parallel' を指定します。

既定の設定では、'parallel' はローカル クラスター プロファイルを使用します。一般的に CPU は GPU よりも学習がはるかに遅いため、GPU がない場合のみ CPU を使用してください。

'ExecutionEnvironment'

クラスターまたはクラウド

既定のクラスターを設定した後、関数 trainingOptions'ExecutionEnvironment','parallel' を指定します。

学習はクラスター上で実行され、組み込みの進行状況プロットがローカルの MATLAB® に返されます。

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

複数の深いネットワークの並列学習

学習シナリオ推奨詳細
ローカル マシンまたはクラウドで対話的に行うparfor ループを使用して複数のネットワークに学習させ、OutputFcn を使用して結果をプロットします。既定はローカルでの実行、そうしない場合は別のクラスター プロファイルを選択します。parfor を使用した複数の深層学習ネットワークの学習
ローカル マシンのバックグラウンドで、またはクラウドで行うparfeval を使用してローカルの MATLAB をブロックすることなく学習させ、OutputFcn を使用して結果をプロットします。既定はローカルでの実行、そうしない場合は別のクラスター プロファイルを選択します。

Run Multiple Deep Learning Experiments

parfeval を使用した複数の深層学習ネットワークの学習

クラスター上で行い、ローカル マシンはオフにする関数 batch を使用して学習コードをクラスターに送信します。MATLAB を閉じて、後で結果を取得できます。深層学習バッチ ジョブのクラスターへの送信

クラウドでの深層学習

深層学習における学習に数時間または数日かかる場合、クラウドの高性能の GPU をレンタルして学習を高速化できます。クラウドでの作業にはいくつかの初期設定が必要ですが、その初期設定以降は、クラウドの使用により学習時間の短縮や、より多くのネットワークの同時学習が可能になります。クラウドでの深層学習を試すために、例の手順に従ってアカウントを設定して、データをクラウドにコピーし、クラスターを作成できます。この初期設定の後、学習コードは、クラウド実行用に極めて僅かな変更を加えるだけで実行できます。既定のクラスターを設定した後、学習オプション 'ExecutionEnvironment','parallel' を指定するだけで、複数の GPU のクラウド クラスターでネットワークに学習させることができます。

クラウドでの深層学習の構成メモ詳細
MathWorks Cloud Center と Amazon アカウントの設定1 回だけの設定。Getting Started with Cloud Center
クラスターの作成Cloud Center を使用して、Amazon クラウドのクラスターを設定し実行します。深層学習の場合、P2 または G3 インスタンスなど、GPU を使用するマシン タイプを選択します。Create a Cloud Cluster
クラウドへのデータのアップロードデータをクラウドで処理するために、Amazon S3 にアップロードします。データストアを使用して、コードを変更せずにデスクトップ クライアントの MATLAB またはクラスター ワーカーから S3 のデータにアクセスします。クラウドへの深層学習データのアップロード

高速マルチノード GPU 通信の高度なサポート

Infiniband などのマシン間の高速相互接続または GPUDirect RDMA などの異なるマシン上の GPU 間の高速相互接続を使用する Linux 計算クラスターを使用している場合、MATLAB の高速マルチノード サポートを活用できる場合があります。環境変数 PARALLEL_SERVER_FAST_MULTINODE_GPU_COMMUNICATION1 に設定して、プール内のすべてのワーカーでこのサポートを有効にします。この環境変数はクラスター プロファイル マネージャーで設定します。

この機能は、GPU 通信用の NVIDIA NCCL ライブラリの一部です。これを構成するには、追加の環境変数 (特に NCCL_SOCKET_IFNAME) を設定して、ネットワーク インターフェイス プロトコルを定義しなければなりません。詳細は、NCCL のドキュメンテーション、特に NCCL Knobs の節を参照してください。

関連するトピック