4

このTensorFlow チュートリアルでは、N 個の GPU を使用して N 個のミニバッチ (それぞれ M 個のトレーニング サンプルを含む) を各 GPU に配布し、勾配を同時に計算できます。

次に、N 個の GPU から収集された勾配を平均し、モデル パラメーターを更新します。

ただし、これは単一の GPU を使用して N*M トレーニング サンプルの勾配を計算し、パラメーターを更新するのと同じ効果があります。

したがって、唯一の利点は、同じ時間でより大きなサイズのミニバッチを使用できることです。

しかし、より大きなサイズのミニバッチは必ずしも優れているのでしょうか?

最適化をサドルポイントに対してより堅牢にするために、大規模なミニバッチを使用すべきではないと思いました。

大規模なミニバッチが実際に優れていない場合、なぜマルチ GPU 学習やマルチサーバー学習を気にするのでしょうか?

(上記のチュートリアルは同期トレーニングです。非同期トレーニングの場合は、各 GPU で計算された勾配を平均化せずにパラメーターが更新されるため、メリットが見られます)

4

2 に答える 2

2

マルチ GPU 学習の主な目的は、大規模なデータ セットを短時間でトレーニングできるようにすることです。より大きなミニバッチが必ずしも良いとは限りませんが、少なくともより実現可能な時間で学習を終了できます。

より正確には、非同期 SGD アルゴリズムを使用する場合、これらの N 個のミニバッチは同期された方法でトレーニングされません。マルチ GPU を使用するとアルゴリズムが変わるため、SGD アルゴリズムを使用してシングル GPU で MxN サイズのミニバッチを使用するのと同じではありません。

同期マルチ GPU トレーニングを使用する場合の利点は、主に時間の短縮です。M/N サイズのミニマッチを使用して効果的なミニバッチ サイズを維持できますが、ミニバッチ サイズが小さくなるとオーバーヘッドが増えるため、もちろんスケーラビリティは制限されます。多数のコンピューティング ノードでのデータ交換と同期も災害です。

最後に、スケーラビリティの問題を解決するために、多数の GPU を同時に使用する場合は A-SGD に移行します。したがって、数百 (または数十) の GPU で同期マルチ GPU トレーニングを使用している人はおそらくいないでしょう。

于 2016-06-10T18:26:44.893 に答える