0

現在の分散型トレーニングの実装でしばらくプレイした後、別のワーカーとして各GPUを見ると思います。しかし、今では1つのボックスに2〜4個のGPUを持つのが一般的です。シングルボックスマルチGPU手法を採用して、単一ボックスの平均グラジエントを計算し、複数のノード間で同期させる方が良いのではないでしょうか?このようにして、I/Oトラフィックが多く軽減されます。これは、常にデータ並列処理のボトルネックです。マルチGPU手法を用いたテンソルフロー分散型トレーニングハイブリッド

私は、現在の実装ではすべてのGPUをワーカーとして1つのボックスに入れることができると言われましたが、SyncReplicasOptimizerがオプティマイザを入力として直接受け入れるため、平均グラディエントをSyncReplicasOptimizerで結ぶ方法を特定できません。

他のアイデアはありますか?

答えて

2

分散TensorFlowは、同じワーカータスクで複数のGPUをサポートします。イメージモデルの分散トレーニングを実行する一般的な方法の1つは、同じワーカー内の複数のGPUで同期トレーニングを実行し、ワーカー間で非同期トレーニングを実行することです(他の構成も可能です)。この方法では、モデルパラメータをワーカーに一度だけプルし、ローカルGPUに分散させることで、ネットワーク帯域幅の利用を容易にします。

この種のトレーニングを行うには、多くのユーザーが1人の作業者のGPUで「イングラフレプリケーション」を実行します。これは、the CIFAR-10 example modelのようにローカルGPUデバイス間で明示的なループを使用できます。 TF-Slimのmodel_deploy()ユーティリティのように、より高いレベルのライブラリをサポートしています。

関連する問題