【深度学习】使用Ray

启动

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