2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PyTorch RPC を参考にしてレンダリングで非同期分散計算したいメモ

Posted at

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かたで非同期分散計算する仕組みをつくれそう.

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?