PyTorch RPC を参考にしてレンダリングで非同期分散計算したいメモ
PyTorch 1.4 から RPC で非同期で分散計算(動的にノードが削除, 追加もサポート?)できるようになってきました.
レンダリング(レイトレーシング)でも MPI や TCP/IP, RDMA で分散計算はよくやりますが, 非同期だったり動的というのはあまり考えられていません(TCP/IP が固定である. 各ノードの CPU の性能に差がある, GPU レンダリングするときに, GPU の個数がノードごとに異なる, etc.).
今後の高まるレンダリング需要を見越して, PyTorch RPC の仕組みを流用できないか考えてみます.
rpc backend
pytorch rpc では, バックエンドとして mpi
, nccl
, gloo
があります.
ここで mpi と rccl は概ね同等かなと思います. 動的分散対応は pytorch 側(実質 c10d?) でやるのでしょうか.
c10 は謎のコンポーネントです(https://github.com/pytorch/pytorch/issues/14850). それの distributed 版なので c10d でしょうか.
gloo
redis(hiredis 経由)でノードの管理や mpi っぽい通信などやるライブラリのようです. gloo 自体がさらにバックエンドとして mpi, nccl に対応しています.
通信は一段抽象化されて, backend に TCP/IP か InfiniBand(RDMA)を選択できます.
したがって, c10d と gloo あたりを参考にすればよさそうです.
知見
c10d + gloo を参考に, etcd(http) or redis + ピア同士バイナリ通信は websocket で, より web 標準のやりyかたで非同期分散計算する仕組みをつくれそう.
Author And Source
この問題について(PyTorch RPC を参考にしてレンダリングで非同期分散計算したいメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/syoyo/items/867b33b23334ff5c3983著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .