【Ray使用环境】生产环境
【Ray版本和类库】1.12.1
【使用现场】
【问题复现】
ray cluster启动的时候指定了head node的 --num-cpus=0,但是head 节点还是作为了计算节点,head 节点启动命令如下:
,是不是RAY_OVERRIDE_RESOURCES 这个被环境变量覆盖了,所以导致了head node 作为了计算节点?
【Ray使用环境】生产环境
【Ray版本和类库】1.12.1
【使用现场】
【问题复现】
ray cluster启动的时候指定了head node的 --num-cpus=0,但是head 节点还是作为了计算节点,head 节点启动命令如下:
你好,你的问题可能是以下两个原因导致的:
所以,如果需要head节点不被执行的话,那么head节点在保证设置了num-cpus=0的同时,也需要保证override resources里不能有cpu,并且要执行的task,不能设置cpu=0。 只有这些条件满足的时候,task才不会在head上执行。
另外,这个地方也许是ray需要做一点小改进,例如–num-cpus=0是不是应该覆盖掉override resources,也是有争议的。
ray有一个API让你可以看到集群的资源视图ray.state.cluster_resources()
,你可以清晰的看到当前哪些资源生效的值是什么。
好的,感谢回复,我试试看
hi 你好,我也遇到了类似的问题,我在方法上加了 @ray.remote, 但是方法还是在head节点执行。我要如何才能使方法一定在worker上执行呢。
Ray 版本: 2.0.0
代码如下:
import ray
@ray.remote
def test_cpu3():
import time
time.sleep(150)
return "done"
my_task = test_cpu3.remote()
ray.get(my_task)
你好,想要方法在worker节点上执行的方法可以有多种:
ray start --resources={"A":10}
(2) 指定你的任务需要该资源:
@ray.remote(resources={"A": 1})
def f():
pass