/ /パラメータサーバに送信する前にホストのパラメータを平均化する - テンソルフロー

パラメータサーバに送信する前にホストのパラメータを平均化する - テンソルフロー

私は16個のGPUを持つ32個のホストを持つクラスタで分散同期トレーニングを実行するコードを書いています。

私はこのチュートリアルを読んでいます: https://www.tensorflow.org/versions/r0.8/how_tos/distributed/index.html とこのサンプルコード: https://github.com/tensorflow/models/tree/master/inception

両方とも、GPUごとにワーカーを実行し、SyncReplicaOptimizerを使用して同期トレーニングを実行することを示唆しているようです。

私がそれをすると、すべてのステップの後に、各PSは32 * 16人の労働者からのパラメータのサブセットに対してグラジエントを受け取るでしょう、正しいのでしょうか?

16からの勾配を平均化することは可能ですか?平均化された勾配をパラメータサーバに送信する前に、各ホストのGPU?この方法では、各PSは、32 * 16の代わりに32組の勾配を受け取るだけでよい。

これを行うことが可能な場合、これを行う方法のどこかにサンプルコードがありますか?

回答:

回答№1は1

それは可能です、公式 cifar10_multi_gpu_train.py 例は、計算された平均勾配1つのホスト上のRAMに保存することができます。 sync_replicasと組み合わせてRAM変数を取得し、ホスト間でそれらを集約することができます