Main Content

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

実験マネージャーを使用したネットワークの並列学習

既定では、実験マネージャーは実験の試行を 1 つの CPU で一度に 1 つ実行します。Parallel Computing Toolbox™ がある場合は、複数の GPU、1 つのクラスター、またはクラウドで複数の試行を同時に実行したり、試行を一度に 1 つずつ実行したりするように実験を構成できます。

学習シナリオ推奨
各試行において、1 つの並列ワーカーを使用して複数の試行を同時に実行する。

並列環境をセットアップし、[モード][同時] に設定して、[実行] をクリックします。実験マネージャーは、並列プールにあるワーカーと同じ数の同時試行を実行します。実験における他のすべての試行は、後で評価するためにキューに入れられます。

あるいは、実験をバッチ ジョブとしてオフロードするには、[モード][同時バッチ] に設定し、[クラスター][プール サイズ] を指定して、[実行] をクリックします。詳細については、Offload Experiments as Batch Jobs to Clusterを参照してください。

学習オプション ExecutionEnvironment"multi-gpu" または "parallel" に設定するか、学習オプション DispatchInBackground を有効にした場合、実験マネージャーは [同時][同時バッチ] での実行をサポートしません。実験の試行を一度に 1 つずつ実行する場合にのみ、これらのオプションを使用して学習を高速化するようにしてください。

複数の並列ワーカーで一度に 1 つの試行を実行する。

組み込みの学習実験:

実験セットアップ関数で、学習オプション ExecutionEnvironment"multi-gpu" または "parallel" に設定する。詳細については、Scale Up Deep Learning in Parallel, on GPUs, and in the Cloudを参照してください。

分割可能なデータストアを使用している場合、学習オプション DispatchInBackgroundtrue に設定してバックグラウンド ディスパッチを有効にする。詳細については、並列学習およびバックグラウンド ディスパッチへのデータストアの使用を参照してください。

並列環境をセットアップし、[Mode][Sequential] に設定して、[実行] をクリックします。

あるいは、実験をバッチ ジョブとしてオフロードするには、[モード][Batch Sequential] に設定し、[クラスター][Pool Size] を指定して、[実行] をクリックします。学習オプション ExecutionEnvironment"multi-gpu" に設定した場合、実験マネージャーはこの実行モードをサポートしません。詳細については、Offload Experiments as Batch Jobs to Clusterを参照してください。

カスタムの学習実験:

実験学習関数で、並列環境をセットアップし、spmd ブロックを使用してカスタム並列学習ループを定義する。詳細については、Custom Training with Multiple GPUs in Experiment Managerを参照してください。

[Mode][Sequential] に設定して、[実行] をクリックします。

あるいは、実験をバッチ ジョブとしてオフロードするには、[モード][Batch Sequential] に設定し、[クラスター][Pool Size] を指定して、[実行] をクリックします。詳細については、Offload Experiments as Batch Jobs to Clusterを参照してください。

ヒント

MATLAB® Online™ を使用して実験を並列実行するには、Cloud Center クラスターにアクセスできなければなりません。詳細については、MATLAB Online における Cloud Center クラスターとの Parallel Computing Toolbox の使用 (Parallel Computing Toolbox)を参照してください。

並列環境の設定

複数の GPU での学習

GPU が複数ある場合、並列実行では、通常、実験の速度が上がります。深層学習で GPU を使用するには、Parallel Computing Toolbox とサポートされている GPU デバイスが必要です。詳細については、リリース別の GPU サポート (Parallel Computing Toolbox)を参照してください。

  • 組み込みの学習実験の場合、GPU は自動的にサポートされます。GPU が利用できる場合、既定では GPU を使用して実験が行われます。

  • カスタムの学習実験の場合、既定では CPU で計算が行われます。GPU で学習を行うには、データを gpuArray オブジェクトに変換します。使用可能な GPU が存在するかどうかを調べるには、関数 canUseGPU を呼び出します。

最良の結果を得るには、実験を実行する前に、GPU と同じ数のワーカーで並列プールを作成します。関数 gpuDeviceCount (Parallel Computing Toolbox) を使用することで、使用可能な GPU の数を確認できます。

numGPUs = gpuDeviceCount("available");
parpool(numGPUs)

メモ

単一の GPU で並列プールを作成した場合、すべてのワーカーがその GPU を共有するため、学習を高速化できず、GPU のメモリ不足が発生する可能性が高まります。

クラスターまたはクラウドでの学習

ローカル マシンで実験を行うと時間がかかる場合、オンサイトのネットワークにあるコンピューター クラスターを使用するか、クラウドにある高性能 GPU をレンタルすることで、学習を高速化できます。初期設定が完了した後、コードに最小限の変更を加えるだけで実験を実行できます。クラスターまたはクラウドで処理するには、MATLAB Parallel Server™ が必要です。詳細については、Deep Learning in the Cloudを参照してください。

参考

アプリ

関数

オブジェクト

関連するトピック