リストを定義する
g = [1, 2, 3, 4]
バージョン 1
@ray.remote
def f(*g):
return np.mean(g, axis=0)
f_ids = [f.remote(*g) for _ in range(10)]
print(ray.get(f.remote(*f_ids)))
バージョン 2
@ray.remote
def f(g): # g is object ID list
return np.mean(g, axis=0)
f_ids = [f.remote(g) for _ in range(10)]
print(ray.get(f.remote(f_ids)))
最初のコードは問題なく動作しますが、バージョン 2 は動作しません。エラーメッセージは
ray.get(f.remote(f_ids)) + のサポートされていないオペランド タイプ: 'common.ObjectID' および 'common.ObjectID'
バージョン 2 のようなことをしたい理由は、実際には次のようなことをしたいからです。
@remote
def f(g1, g2): # g1 and g2 are object ID lists
... # do something here
g1
and g2
as*g1
の作り方がわからないので、*g2
バージョン 2 を思いつきました。バージョン 2 が機能しないのはなぜですか? どうすれば修正できますか?
参照コードはこちら https://ray.readthedocs.io/en/latest/example-parameter-server.html#synchronous-parameter-server