0

現在の分散トレーニングの実装をしばらくいじってみたところ、各 GPU が個別のワーカーとして認識されているように思います。シングル ボックス マルチ GPU 手法を採用して、最初にシングル ボックスで平均勾配を計算し、次に複数のノード間で同期する方がよいのではないでしょうか? このようにして、データ並列処理のボトルネックである I/O トラフィックが大幅に軽減されます。

現在の実装では、すべての GPU を単一のボックスにワーカーとして配置することで可能だと言われましたが、SyncReplicasOptimizer はオプティマイザーを入力として直接受け取るため、平均勾配を SyncReplicasOptimizer と結び付ける方法がわかりません。

誰からのアイデアはありますか?

4

1 に答える 1

2

分散 TensorFlow は、同じワーカー タスクで複数の GPU をサポートします。画像モデルの分散トレーニングを実行する一般的な方法の 1 つは、同じワーカー内の複数の GPU 間で同期トレーニングを実行し、ワーカー間で非同期トレーニングを実行することです (ただし、他の構成も可能です)。このようにして、モデル パラメーターをワーカーに 1 回プルするだけで、それらがローカル GPU に分散されるため、ネットワーク帯域幅の使用が軽減されます。

この種のトレーニングを行うために、多くのユーザーは単一のワーカーで GPU 全体で「グラフ内レプリケーション」を実行します。これは、CIFAR-10 サンプル モデルのように、ローカル GPU デバイス間で明示的なループを使用できます。model_deploy()TF-Slim のユーティリティのように、より高いレベルのライブラリ サポート。

于 2016-09-24T22:53:11.917 に答える