ドキュメンテーション

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

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

複数の 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' を指定します。

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

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

学習リソース設定詳細

ローカル マシン上の 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 を使用して結果をプロットします。既定はローカルでの実行、そうしない場合は別のクラスター プロファイルを選択します。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 の高速マルチノード サポートを活用できる場合があります。環境変数 MDCS_FAST_MULTINODE_GPU_COMMUNICATION を 1 に設定して、プール内のすべてのワーカーでこのサポートを有効にします。この環境変数はクラスター プロファイル マネージャーで設定します。

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

関連するトピック