このTensorFlow チュートリアルでは、N 個の GPU を使用して N 個のミニバッチ (それぞれ M 個のトレーニング サンプルを含む) を各 GPU に配布し、勾配を同時に計算できます。
次に、N 個の GPU から収集された勾配を平均し、モデル パラメーターを更新します。
ただし、これは単一の GPU を使用して N*M トレーニング サンプルの勾配を計算し、パラメーターを更新するのと同じ効果があります。
したがって、唯一の利点は、同じ時間でより大きなサイズのミニバッチを使用できることです。
しかし、より大きなサイズのミニバッチは必ずしも優れているのでしょうか?
最適化をサドルポイントに対してより堅牢にするために、大規模なミニバッチを使用すべきではないと思いました。
大規模なミニバッチが実際に優れていない場合、なぜマルチ GPU 学習やマルチサーバー学習を気にするのでしょうか?
(上記のチュートリアルは同期トレーニングです。非同期トレーニングの場合は、各 GPU で計算された勾配を平均化せずにパラメーターが更新されるため、メリットが見られます)