現在の分散トレーニングの実装をしばらくいじってみたところ、各 GPU が個別のワーカーとして認識されているように思います。シングル ボックス マルチ GPU 手法を採用して、最初にシングル ボックスで平均勾配を計算し、次に複数のノード間で同期する方がよいのではないでしょうか? このようにして、データ並列処理のボトルネックである I/O トラフィックが大幅に軽減されます。
現在の実装では、すべての GPU を単一のボックスにワーカーとして配置することで可能だと言われましたが、SyncReplicasOptimizer はオプティマイザーを入力として直接受け取るため、平均勾配を SyncReplicasOptimizer と結び付ける方法がわかりません。
誰からのアイデアはありますか?