主要内容

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

GPUおよび並列でのビッグデータを使用した深層学習

深いネットワークの学習は計算量が多くなりますが,ニューラルネットワークは本質的に並列アルゴリズムです。通常,畳み込みニューラルネットワークの学習は,マルチコアCPU、高性能GPU,および複数のCPUとGPUを備えたクラスターに並列に分散させることによって高速化できます。GPUまたは並列オプションを使用するには并行计算工具箱™が必要です。

ヒント

并行计算工具箱がインストールされている場合,GPUは自動的にサポートされます。既定では,関数trainNetworkはGPUを利用できる場合は,GPUを使用します。

複数のGPUがあるマシンにアクセスできる場合は,単に学習オプション“ExecutionEnvironment”、“multi-gpu”を指定します。

大きすぎてメモリに収まらないデータセットを使用して問題を解決するために,複数のコンピューターは必要ありません。関数augmentedImageDatastoreををクラスターてて,マシンのクラスターをて,データのバッチバッチをでき。拡張イメージを使用したネットワークの学習を参照してください。ただし,利用できるクラスターがある場合は,コードをデータリポジトリに入れる方が,大量のデータをあちこちに移動させるよりも有効なことがあります。

深層学習におけるハードウェアとメモリに関する考慮事項 推奨 必要な制品
大きすぎてメモリに収まらないデータ 大きすぎてメモリに収まらないイメージコレクションからデータをインポートするには,関数augmentedImageDatastoreを使用します。この関数は,機械学習とコンピュータービジョンアプリケーションの処理を高速化するためにイメージをバッチ単位で自動的に読み取るよう設計されています。

MATLAB®

深度学习工具箱™

CPU 適切なGPUがない場合は,代わりに1つのCPUで学習させることができます。既定では,関数trainNetworkは利用できるGPUがない場合,CPUを使用します。

MATLAB

深度学习工具箱

GPU 既定では,関数trainNetworkはGPUを利用できる場合は,GPUを使用します。以3.0计算能力上のCUDA®対応英伟达®GPUが必要です。gpuDeviceを使用してGPUを確認します。関数培训选项をを用して,実行环境を指定ます。

MATLAB

深度学习工具箱

并行计算工具箱

複数のGPUまたはCPUコアを使用してローカルマシンで並列処理 複数のワーカーを活用するには,関数培训选项を使用して実行環境を指定します。マシンに複数のGPUがある場合は,“multi-gpu”を指定します。それ户外のの合“平行”を指定します。

MATLAB

深度学习工具箱

并行计算工具箱

クラスターまたはクラウドで並列処理 深層学習の計算を高速化するために,クラスターまたはクラウドのワーカーを使用するようにスケールアップします。培训选项を使用し,计算クラスターを使使にに“平行”を指定します。详细については,クラウドでの深層学習を参照してください。

MATLAB

深度学习工具箱

并行计算工具箱

MATLAB并行服务器™

ヒント

詳細については,並列およびクラウドでの深層学習のスケールアップを参照してください。

深度学习工具箱に含まれる深層学習における学習,予測,検証用のすべての関数は,単精度浮動小数点演算を使用して計算を実行します。深層学習用の関数にはtrainNetwork预测分类激活などがあります。CPUと GPU の両方を使用してネットワークに学習させる場合、単精度演算が使用されます。

GPUの単精度と倍精度の性能は大幅に異なる可能性があるため,計算の実行精度を知っておくことが重要です。深層学習にGPUのみを使用する場合,単精度性能がGPUの最も重要な特性の1つです。并行计算工具箱を使用して他の計算にも GPU を使用する場合は、高い倍精度性能が重要です。これは、MATLAB の多くの関数が既定で倍精度演算を使用するためです。詳細については、単精度の計算を使用したパフォーマンスの向上(并行计算工具箱)を参照してください。

複数のGPUによる学習

MATLABは,複数のGPUを使用した,1つのネットワークの並列学習をサポートしています。これは,ローカルマシン上,またはGPUを持つワーカーのあるクラスターやクラウド上の複数のGPUを使用して実現できます。複数のGPUを使用して学習を高速化するには,ミニバッチサイズと学習率を増やしてみてください。

通常,畳み込みニューラルネットワークは,複数のイメージバッチを使用して反復的に学習させます。これは,データセット全体が大きすぎてGPUメモリに収まらないためです。最適な性能を得るために,関数培训选项で指定するMiniBatchSizeオプションを试すことができます。

最適なバッチサイズは,実際のネットワーク,データセット,およびGPUハードウェアに依存しています。複数のGPUを使用した学習の場合,各イメージバッチがGPU間に分散されます。これによって,利用可能な合計GPUメモリが実質上増え,より大きなバッチサイズを処理できます。各バッチの重要性が向上するため,学習率を増やすことができます。一般的に妥当なガイドラインは,バッチサイズの増加に比例して学習率を増やすことです。用途によって異なりますが,バッチサイズと学習率を増やすと,ある程度までは精度を損なわずに学習を高速化できます。

复数のgpuををを,学校を大厦に高度化。マルチgpuでの习で性能の向がができるかかを判断するにはか以どうかを判断には,以以

  • 各gpuの反复の长はどれだけかか。各gpuの反复短けれ短ければ,gpu间の通信の追オーバーヘッドヘッドが大厦なります。みみください。

  • すべてのgpuが1つのマシン上にあるか。异なるマシン上にあるgpu间の通信は,大幅な通信遅延生命ます。适切なハードウェアあれば,これを軽减ます。高速マルチノードGPU通信の高度なサポートを参照してください。

詳細は,並列およびクラウドでの深層学習のスケールアップおよび学習に使用する特定のGPUの選択を参照してください。

クラウドでの深層学習

畳み込みニューラルネットワークの学習時間の短縮のために利用できる適切なGPUがない場合は,亚马逊®弹性计算云(Amazon EC2®)などのクラウドででのの高级GPUをををて,深层学习习を试すます.matlab深度学习工具箱には,亚马逊EC2を使使しクラウドで,p2またはp3マシンインスタンスとクラウド保存したデータを利用して,深层学习习実行。

1つのマシンで複数のGPUを使用するか,複数のGPUのあるマシンのクラスターを使用して学習を高速化できます。複数のGPUを使用して1つのネットワークに学習させるか,同じデータについて一度に複数のモデルに学習させます。

クラウドワークフロー全体の詳細は,並列およびクラウドでの深層学習を参照してください。

バックグラウンドでのデータの取得と前処理

ネットワークに並列学習させる場合,データの取得と前処理はバックグラウンドで行えます。バックグラウンドでデータディスパッチを実行するには,trainNetworkで使用するミニバッチデータストアのバックグラウンドディスパッチを有効にします。augmentedImageDatastoredenoisingImageDatastore(图像处理工具箱)pixelLabelImageDatastore(计算机视觉工具箱)などの組み込みミニバッチデータストアを使用できます。バックグラウンドディスパッチ対応のカスタムミニバッチデータストアを使用することもできます。カスタムミニバッチデータストアの作成の詳細は,カスタムミニバッチデータストアの開発を参照してください。

バックグラウンドディスパッチを有効にするには,データストアのDispatchInBackgroundプロパティを真的に設定します。

培训选项の名前と値のペアの引数“WorkerLoad”を指定して,ワーカー間の学習計算とデータディスパッチの負荷を微調整できます。詳細オプションでは,並列プールのワーカー数の変更を試すことができます。詳細については,並列基本設定の指定(并行计算工具箱)を参照してください。

参考

|

関連するトピック