このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。
深いネットワークの学習は計算量が多くなりますが、ニューラル ネットワークは本質的に並列アルゴリズムです。通常、畳み込みニューラル ネットワークの学習は、マルチコア CPU、高性能 GPU、および複数の CPU と GPU を備えたクラスターに並列に分散させることによって高速化できます。GPU または並列オプションを使用するには Parallel Computing Toolbox™ が必要です。
ヒント
Parallel Computing Toolbox がインストールされている場合、GPU は自動的にサポートされます。既定では、関数trainNetwork
は GPU を利用できる場合は、GPU を使用します。
複数の GPU があるマシンにアクセスできる場合は、単に学習オプション'ExecutionEnvironment','multi-gpu'
を指定します。
大きすぎてメモリに収まらないデータセットを使用して問題を解決するために、複数のコンピューターは必要ありません。関数augmentedImageDatastore
を使用して、マシンのクラスターを使用せずに、データのバッチを処理できます。例については、拡張イメージを使用したネットワークの学習を参照してください。ただし、利用できるクラスターがある場合は、コードをデータ リポジトリに入れる方が、大量のデータをあちこちに移動させるよりも有効なことがあります。
深層学習におけるハードウェアとメモリに関する考慮事項 | 推奨 | 必要な製品 |
---|---|---|
大きすぎてメモリに収まらないデータ | 大きすぎてメモリに収まらないイメージ コレクションからデータをインポートするには、関数augmentedImageDatastore を使用します。この関数は、機械学習とコンピューター ビジョン アプリケーションの処理を高速化するためにイメージをバッチ単位で自動的に読み取るよう設計されています。 |
MATLAB® Deep Learning Toolbox™ |
CPU | 適切な GPU がない場合は、代わりに 1 つの CPU で学習させることができます。既定では、関数trainNetwork は利用できる GPU がない場合、CPU を使用します。 |
MATLAB Deep Learning Toolbox |
GPU | 既定では、関数trainNetwork は GPU を利用できる場合は、GPU を使用します。サポートされている GPU デバイスが必要です。サポートされているデバイスについては、リリース別の GPU サポート(Parallel Computing Toolbox)を参照してください。gpuDevice を使用して GPU を確認します。関数trainingOptions を使用して、実行環境を指定します。 |
MATLAB Deep Learning Toolbox Parallel Computing Toolbox |
複数の GPU または CPU コアを使用してローカル マシンで並列処理 | 複数のワーカーを活用するには、関数trainingOptions を使用して実行環境を指定します。マシンに複数の GPU がある場合は、'multi-gpu' を指定します。それ以外の場合は'parallel' を指定します。 |
MATLAB Deep Learning Toolbox Parallel Computing Toolbox |
クラスターまたはクラウドで並列処理 | 深層学習の計算を高速化するために、クラスターまたはクラウドのワーカーを使用するようにスケールアップします。trainingOptions を使用し、計算クラスターを使用するように'parallel' を指定します。詳細については、クラウドでの深層学習を参照してください。 |
MATLAB Deep Learning Toolbox Parallel Computing Toolbox MATLAB Parallel Server™ |
ヒント
詳細については、並列およびクラウドでの深層学習のスケールアップを参照してください。
関数trainNetwork
を使用してネットワークに学習させる場合や、DAGNetwork
オブジェクトおよびSeriesNetwork
オブジェクトと共に予測関数または検証関数を使用する場合、ソフトウェアは単精度浮動小数点演算を使用して、これらの計算を実行します。学習、予測、および検証のための関数には、trainNetwork
、predict
、classify
、およびactivations
が含まれます。CPU と GPU の両方を使用してネットワークに学習させる場合、単精度演算が使用されます。
GPU の単精度と倍精度の性能は大幅に異なる可能性があるため、計算の実行精度を知っておくことが重要です。深層学習に GPU のみを使用する場合、単精度性能が GPU の最も重要な特性の 1 つです。Parallel Computing Toolbox を使用して他の計算にも GPU を使用する場合は、高い倍精度性能が重要です。これは、MATLAB の多くの関数が既定で倍精度演算を使用するためです。詳細については、単精度の計算を使用したパフォーマンスの向上(Parallel Computing Toolbox)を参照してください。
MATLAB は、複数の GPU を使用した、1 つのネットワークの並列学習をサポートしています。これは、ローカル マシン上、または GPU を持つワーカーのあるクラスターやクラウド上の複数の GPU を使用して実現できます。複数の GPU を使用して学習を高速化するには、ミニバッチ サイズと学習率を増やしてみてください。
関数trainingOptions
でExecutionEnvironment
オプションを'multi-gpu'
に設定することで、ローカル マシン上の複数の GPU での学習を有効にします。
クラスターまたはクラウドでは、関数trainingOptions
でExecutionEnvironment
オプションを'parallel'
に設定します。
通常、畳み込みニューラル ネットワークは、複数のイメージ バッチを使用して反復的に学習させます。これは、データセット全体が大きすぎて GPU メモリに収まらないためです。最適な性能を得るために、関数trainingOptions
で指定するMiniBatchSize
オプションを試すことができます。
最適なバッチ サイズは、実際のネットワーク、データセット、および GPU ハードウェアに依存しています。複数の GPU を使用した学習の場合、各イメージ バッチが GPU 間に分散されます。これによって、利用可能な合計 GPU メモリが実質上増え、より大きなバッチ サイズを処理できます。各バッチの重要性が向上するため、学習率を増やすことができます。一般的に妥当なガイドラインは、バッチ サイズの増加に比例して学習率を増やすことです。用途によって異なりますが、バッチ サイズと学習率を増やすと、ある程度までは精度を損なわずに学習を高速化できます。
複数のGPUを使用すると,学習を大幅に高速化できます。マルチGPUでの学習で性能の向上が期待できるかどうかを判断するには、以下の点を検討します。
各 GPU の反復の長さはどれだけか。各 GPU の反復が短ければ、GPU 間の通信の追加オーバーヘッドの影響が大きくなります。バッチ サイズをより大きくして、反復あたりの計算量を増やしてみてください。
すべての GPU が 1 つのマシン上にあるか。異なるマシン上にある GPU 間の通信は、大幅な通信遅延を生みます。適切なハードウェアがあれば、これを軽減できます。詳細については、高速マルチノード GPU 通信の高度なサポートを参照してください。
詳細は、並列およびクラウドでの深層学習のスケールアップおよび学習に使用する特定のGPUの選択を参照してください。
畳み込みニューラル ネットワークの学習時間の短縮のために利用できる適切な GPU がない場合は、Amazon®Elastic Compute Cloud (Amazon EC2®) などのクラウドで複数の高性能 GPU を使用して、深層学習アプリケーションを試すことができます。MATLAB Deep Learning Toolbox には、Amazon EC2 を使用してクラウドで、P2 または P3 マシン インスタンスとクラウドに保存したデータを利用して、深層学習を実行する方法を示す例があります。
1 つのマシンで複数の GPU を使用するか、複数の GPU のあるマシンのクラスターを使用して学習を高速化できます。複数の GPU を使用して 1 つのネットワークに学習させるか、同じデータについて一度に複数のモデルに学習させます。
クラウド ワークフロー全体の詳細は、並列およびクラウドでの深層学習を参照してください。
ネットワークに並列学習させる場合、データの取得と前処理はバックグラウンドで行えます。バックグラウンドでデータ ディスパッチを実行するには、trainNetwork
で使用するミニバッチ データストアのバックグラウンド ディスパッチを有効にします。augmentedImageDatastore
、denoisingImageDatastore
(Image Processing Toolbox)、pixelLabelImageDatastore
(计算机Vision Toolbox)などの組み込みミニバッチ データストアを使用できます。バックグラウンド ディスパッチ対応のカスタム ミニバッチ データストアを使用することもできます。カスタム ミニバッチ データストアの作成の詳細は、カスタム ミニバッチ データストアの開発を参照してください。
バックグラウンド ディスパッチを有効にするには、データストアのDispatchInBackground
プロパティをtrue
に設定します。
trainingOptions
の名前と値のペアの引数'WorkerLoad'
を指定して、ワーカー間の学習計算とデータ ディスパッチの負荷を微調整できます。詳細オプションでは、並列プールのワーカー数の変更を試すことができます。詳細については、並列基本設定の指定(Parallel Computing Toolbox)を参照してください。