私はある種のHPCのバックグラウンドを持っており、機械学習全般、特にTensorFlowについて学び始めたばかりです。分散TensorFlowがデフォルトでTCP/IPと通信するように設計されていることを知って最初は驚きましたが、Googleとは何か、そしてGoogleが最も一般的に使用するハードウェアの種類を考えると、後から考えると理にかなっています。
クラスター上でMPI RDMA)共有メモリのないマシン間。
だから私の質問は、TensorFlowと機械学習の人気が高まっていることを考えると、なぜこのアプローチがより一般的ではないように思われるのですか?遅延がボトルネックではありませんか?この種の解決策を非現実的にする、解決されるいくつかの典型的な問題はありますか? TensorFlow関数を並行して呼び出すことと、TensorFlowライブラリ内でMPI呼び出しを実装することとの間に、意味のある違いがある可能性がありますか?
ありがとう
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/mpi MPIのサポートtensorflowについても https://arxiv.org/abs/1603.02339 で説明されています。
一般的に、MPIはメッセージの送受信に最適ですが、通知の送信やイベントへの対応はそれほど得意ではありません。最後になりましたが、MPI =マルチスレッドアプリケーションのサポート(例:MPI_THREAD_MULTIPLE
)MPI実装の中で、常に本番環境に対応しているとは限りません。これらは2つの一般的なステートメントであり、正直なところ、テンソルフローに関連するかどうかはわかりません。
Tensorflow git repo のドキュメントによると、実際にはtfはTCP/IPプロトコルではなくHTTP2プロトコルに基づくdetaultによる gRPC ライブラリを利用しています このペーパー あなたにいくつかの洞察を与えるはずです、この情報が役立つことを願っています。