MetaのPyTorch Teamは10月22日(現地時間)、Pythonによる機械学習フレームワーク「PyTorch」の分散処理を簡素化するOSS「PyTorch Monarch」を公式ブログで紹介した。
試験的段階にある「PyTorch Monarch」は、Pythonによる機械学習フレームワーク「Pytorch」の分散処理制御を大規模且つ手軽に行えるようにするためのもので、CUDA対応GPUを用いた数千台規模の複雑な処理を単一コードのように簡素化された環境で行おうというもの。
"actor(アクター)"と呼ばれる複数のGPUやノードにまたがって動作するPythonクラスを定義し、デコレータと呼ばれる@endpointを付けたメソッドで非同期に呼び出す仕組みを基本的な計算単位に据えることで、単一のPythonコードで大規模な制御を行えるとして、公式ブログではactor生成のシンプルなコード例を載せている。
from monarch.actor import Actor, endpoint, this_host
procs = this_host().spawn_procs({"gpus": 8})
# define an actor that has one method
class Example(Actor):
@endpoint
def say_hello(self, txt):
return f"hello {txt}"
# spawn the actors
actors = procs.spawn("actors", Example)
# have them say hello
hello_future = actors.say_hello.call("world")
# print out the results
print(hello_future.get())
同じスクリプトの複数のコピーが異なるマシン間で起動されるPytorchでの並立処理が複雑性を増加させており、PyTorch Monarchがこの限界を克服するための試みであるとアーキテクチャの詳細を解説する。ソースコードやOSごとのインストール方法等はGitHubの(/meta-pytorch/monarch)に設置されており、BSD-3 licensedで公開している。
