最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
ニューラル ネットワークは本質的に並列アルゴリズムです。この並列性の利点を活かし、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 | 自動。既定では、関数 | |
ローカル マシン上の複数の GPU | 関数 | |
ローカル マシン上の複数の CPU コア |
既定の設定では、 | |
クラスターまたはクラウド | 既定のクラスターを設定した後、関数 学習はクラスター上で実行され、組み込みの進行状況プロットがローカルの MATLAB® に返されます。 |
学習シナリオ | 推奨 | 詳細 |
---|---|---|
ローカル マシンまたはクラウドで対話的に行う | parfor ループを使用して複数のネットワークに学習させ、OutputFcn を使用して結果をプロットします。既定はローカルでの実行、そうしない場合は別のクラスター プロファイルを選択します。 | parfor を使用した複数の深層学習ネットワークの学習 |
ローカル マシンのバックグラウンドで、またはクラウドで行う | parfeval を使用してローカルの MATLAB をブロックすることなく学習させ、OutputFcn を使用して結果をプロットします。既定はローカルでの実行、そうしない場合は別のクラスター プロファイルを選択します。 | |
クラスター上で行い、ローカル マシンはオフにする | 関数 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 のデータにアクセスします。 | クラウドへの深層学習データのアップロード |
Infiniband などのマシン間の高速相互接続または GPUDirect RDMA などの異なるマシン上の GPU 間の高速相互接続を使用する Linux 計算クラスターを使用している場合、MATLAB の高速マルチノード サポートを活用できる場合があります。環境変数 PARALLEL_SERVER_FAST_MULTINODE_GPU_COMMUNICATION
を 1
に設定して、プール内のすべてのワーカーでこのサポートを有効にします。この環境変数はクラスター プロファイル マネージャーで設定します。
この機能は、GPU 通信用の NVIDIA NCCL ライブラリの一部です。これを構成するには、追加の環境変数 (特に NCCL_SOCKET_IFNAME
) を設定して、ネットワーク インターフェイス プロトコルを定義しなければなりません。詳細は、NCCL のドキュメンテーション、特に NCCL Knobs の節を参照してください。