启动
ray.init():
可以自动检测机器的cpu / gpu,也可以传入参数覆盖
local_mode=True可以关闭并行的计划
ray.is_initialized()
ray.shutdown()
远程func: @ray.remote,
id = func.remote(**kwargs)
res = ray.get(id)
tips:
id也可以作为远程func的参数
需要在ray.remote中指定计算资源,否则默认1cpu
远程class: @ray.remote
actor = Actor.remote()
id = actor.method1.remote()
tips:
不同Actor可以并行,同一actor顺序执行
如果返回多个object id(以3个为例),要使用ray.method(num_return_vals=3)
如果对每个实例使用不同的资源,使用options方法:Actor.options(nums_cpus=1).remote()
强制中止:ray.actor.exit_actor()
ActorPool的使用
from ray.util import ActorPool
a1, a2 = Actor.remote(), Actor.remote()
pool = ActorPool([a1, a2])
res = pool.map(lambda a, v: a.double.remote(v), [1, 2, 3, 4])
GPU使用
init可以指定gpu数量,可以指定多,但是使用不存在的gpu会发生故障
ray.get_gpu_ids可以查看gpu个数
序列化:
使用plasma
对象:
id = ray.put(value)
获取结果:
ray.get 、 ray.wait
待填坑:集群设置 、 异步
原文:https://www.cnblogs.com/yesuuu/p/13032388.html