このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
ニューラルネットワークは本質的に並列アルゴリズムです。この並列性の利点を活かし,并行计算工具箱™を使用して,学習をマルチコアCPU、グラフィックス処理装置(GPU),および複数のCPUとGPUを備えたコンピューターのクラスターに分散させることができます。
深いネットワークの学習は計算量が非常に多くなります。通常は,高性能のGPUを使用して学習時間を短縮できます。適切なGPUがない場合は,代わりに1つ以上のCPUコアで学習させるか,クラウドのGPUをレンタルすることができます。畳み込みニューラルネットワークの学習は,1つのGPUまたはCPUで複数のGPUまたはCPUコアで,あるいはクラスターで並列に行えます。GPUまたは並列オプションを使用するには并行计算工具箱が必要です。
ヒント
GPUは自動的にサポートされます。既定では,関数trainNetwork
はGPUを利用できる場合は,GPUを使用します。
複数のGPUがあるマシンにアクセスできる場合は,単に学習オプション“ExecutionEnvironment”、“multi-gpu”
を指定します。
より多くのリソースを使用する必要がある場合は,深層学習における学習をクラウドにスケールアップできます。
学習リソース | 設定 | 詳細 |
---|---|---|
ローカルマシン上の1つのGPU |
自動。既定では,関数 |
|
ローカルマシン上の複数のGPU |
関数 |
|
ローカルマシン上の複数のCPUコア |
既定の設定では, |
|
クラスターまたはクラウド |
既定のクラスターを設定した後,関数 学習はクラスター上で実行され,組み込みの進行状況プロットがローカルのMATLAB®に返されます。 |
学習シナリオ | 推奨 | 詳細 |
---|---|---|
ローカルマシンまたはクラウドで対話的に行う | parfor ループを使用して複数のネットワークに学習させ,OutputFcn を使用して結果をプロットします。既定はローカルでの実行,そうしない場合は別のクラスタープロファイルを選択します。 |
parforを使用した複数の深層学習ネットワークの学習 |
ローカルマシンのバックグラウンドで,またはクラウドで行う | parfeval を使用してローカルのMATLABをブロックすることなく学習させ,OutputFcn を使用して結果をプロットします。既定はローカルでの実行,そうしない場合は別のクラスタープロファイルを選択します。 |
|
クラスター上で行い,ローカルマシンはオフにする | 関数批处理 を使用して学習コードをクラスターに送信します。MATLABを閉じて、後で結果を取得できます。 |
深層学習バッチジョブのクラスターへの送信 |
深層学習における学習に数時間または数日かかる場合,クラウドの高性能のGPUをレンタルして学習を高速化できます。クラウドでの作業にはいくつかの初期設定が必要ですが,その初期設定以降は,クラウドの使用により学習時間の短縮や,より多くのネットワークの同時学習が可能になります。クラウドでの深層学習を試すために,例の手順に従ってアカウントを設定して,データをクラウドにコピーし,クラスターを作成できます。この初期設定の後,学習コードは,クラウド実行用に極めて僅かな変更を加えるだけで実行できます。既定のクラスターを設定した後,学習オプション“ExecutionEnvironment”、“平行”
を指定するだけで,複数のGPUのクラウドクラスターでネットワークに学習させることができます。
クラウドでの深層学習の構成 | メモ: | 詳細 |
---|---|---|
MathWorksと亚马逊的云计算中心アカウントの設定 | 1回だけの設定。 | 云中心入门 |
クラスターの作成 | 云中心を使用して,亚马逊クラウドのクラスターを設定し実行します。深層学習の場合,P2またはG3インスタンスなど,GPUを使用するマシンタイプを選択します。 | 创建云集群 |
クラウドへのデータのアップロード | データをクラウドで処理するために,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環境変数の節を参照してください。