gpt4 book ai didi

python - Ray Cluster如何访问所有节点资源

转载 作者:行者123 更新时间:2023-12-01 07:55:48 29 4
gpt4 key购买 nike

我可以访问节点集群,我的理解是,一旦我在具有相同 Redis 地址的每个节点上启动 ray,头节点就可以访问所有节点的所有资源。

主要脚本:

export LC_ALL=en_US.utf-8
export LANG=en_US.utf-8 # required for using python 3 with click
source activate rllab3

redis_address="$(hostname --ip-address)"
echo $redis_address
redis_address="$redis_address:59465"
~/.conda/envs/rllab3/bin/ray start --head --redis-port=59465

for host in $(srun hostname | grep -v $(hostname)); do
ssh $host setup_node.sh $redis_address
done

python test_multi_node.py $redis_address

setup_node.sh

export LC_ALL=en_US.utf-8
export LANG=en_US.utf-8

source activate rllab3

echo "redis address is $1"

~/.conda/envs/rllab3/bin/ray start --redis-address=$1

test_multi_node.py

import ray
import time
import argparse

parser = argparse.ArgumentParser(description = "ray multinode test")
parser.add_argument("redis_address", type=str, help="ip:port")
args = parser.parse_args()
print("in python script redis addres is:", args.redis_address)

ray.init(redis_address=args.redis_address)
print("resources:", ray.services.check_and_update_resources(None, None, None))

@ray.remote
def f():
time.sleep(0.01)
return ray.services.get_node_ip_address()

# Get a list of the IP addresses of the nodes that have joined the cluster.
print(set(ray.get([f.remote() for _ in range(10000)])))

Ray 似乎在所有节点上成功启动,并且 python 脚本打印出与我拥有的节点一样多的 IP 地址(并​​且它们是正确的)。但是打印资源时只有一个节点的资源。

如何让 ray 能够访问所有节点的所有资源?我一定有一个根本性的误解,因为我认为在其他节点上设置 ray 的目的是让它访问所有资源。

根据to this ray 应该自动检测新节点上的资源,所以我不知道这里发生了什么。

最佳答案

方法ray.services.check_and_update_resources是一个内部方法,不打算公开。您可以使用 ray.global_state.cluster_resources() 以及 ray.global_state.client_table() 检查集群资源。

关于python - Ray Cluster如何访问所有节点资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988775/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com