在本地部署集群#
本文档描述了如何在本地设置 Ray 集群,即在裸金属机器或私有云上运行 Ray。我们提供了两种启动本地集群的方式。
您可以通过安装 Ray 包并在每个节点上启动 Ray 进程来手动设置 Ray 集群。
或者,如果您提前知道所有节点并且可以 SSH 访问它们,您应该使用cluster-launcher 来启动 Ray 集群。
手动设置 Ray 集群#
本节假定您拥有一系列机器,并且集群中的节点共享相同的网络。它还假定 Ray 已在每台机器上安装。您可以使用 pip 来安装支持集群启动的 ray 命令行工具。有关更多详细信息,请遵循Ray 安装说明。
# install ray
pip install -U "ray[default]"
启动主节点#
选择任何一个节点作为主节点并运行以下命令。如果省略了 --port 参数,Ray 将首先尝试端口 6379,如果 6379 被占用,则回退到随机端口。
ray start --head --port=6379
该命令将打印出 Ray 集群的地址,该地址可以传递给其他机器上的 ray start 命令以启动工作节点(如下所示)。如果您收到 ConnectionError,请检查您的防火墙设置和网络配置。
启动工作节点#
然后,在其他每个节点上,运行以下命令以连接到您刚刚创建的主节点。
ray start --address=<head-node-address:port>
请确保将 head-node-address:port 替换为主节点命令打印出的值(它看起来应该类似于 123.45.67.89:6379)。
请注意,如果您的计算节点位于具有网络地址转换(NAT)的独立子网中,则主节点打印出的地址在从该子网外部的机器连接时将不起作用。您需要使用从远程机器可访问的主节点地址。如果主节点具有像 compute04.berkeley.edu 这样的域名地址,您可以直接使用它代替 IP 地址,并依赖 DNS。
Ray 会自动检测每个节点可用的资源(例如 CPU),但您也可以通过向 ray start 命令传递自定义资源来手动覆盖此设置。例如,如果您希望指定一台机器有 10 个 CPU 和 1 个 GPU 可供 Ray 使用,您可以使用标志 --num-cpus=10 和 --num-gpus=1 来实现。有关更多信息,请参阅配置页面。
故障排除#
如果您看到 Unable to connect to GCS at ...,这意味着在给定的 --address 处主节点不可访问。一些可能的原因包括:
主节点实际上并未运行;
在指定的地址上运行的是不同版本的 Ray;
指定的地址不正确;
或者存在阻止访问的防火墙设置。
如果连接失败,您可以使用 nmap 或 nc 等工具来检查从一个节点是否可以访问另一个节点上的每个端口。
$ nmap -sV --reason -p $PORT $HEAD_ADDRESS
Nmap scan report for compute04.berkeley.edu (123.456.78.910)
Host is up, received echo-reply ttl 60 (0.00087s latency).
rDNS record for 123.456.78.910: compute04.berkeley.edu
PORT STATE SERVICE REASON VERSION
6379/tcp open redis? syn-ack
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
$ nc -vv -z $HEAD_ADDRESS $PORT
Connection to compute04.berkeley.edu 6379 port [tcp/*] succeeded!
如果节点无法访问该 IP 地址上的该端口,您可能会看到
$ nmap -sV --reason -p $PORT $HEAD_ADDRESS
Nmap scan report for compute04.berkeley.edu (123.456.78.910)
Host is up (0.0011s latency).
rDNS record for 123.456.78.910: compute04.berkeley.edu
PORT STATE SERVICE REASON VERSION
6379/tcp closed redis reset ttl 60
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
$ nc -vv -z $HEAD_ADDRESS $PORT
nc: connect to compute04.berkeley.edu port 6379 (tcp) failed: Connection refused
使用 Ray 集群启动器#
Ray 集群启动器是 ray 命令行工具的一部分。它允许您使用 ray up、ray down 和 ray attach 等命令来启动、停止和连接到正在运行的 Ray 集群。您可以使用 pip 安装它,或者遵循安装 Ray 以获取更详细的说明。
# install ray
pip install "ray[default]"
使用 Ray 集群启动器启动 Ray#
提供的 example-full.yaml 集群配置文件将根据节点列表创建一个 Ray 集群。
请注意,您需要在这些模板中填写您的 head_ip、worker_ips 列表以及 ssh_user 字段。
通过从本地机器运行以下命令来测试它是否正常工作
# Download the example-full.yaml
wget https://raw.githubusercontent.com/ray-project/ray/master/python/ray/autoscaler/local/example-full.yaml
# Update the example-full.yaml to update head_ip, worker_ips, and ssh_user.
# vi example-full.yaml
# Create or update the cluster. When the command finishes, it will print
# out the command that can be used to SSH into the cluster head node.
ray up example-full.yaml
# Get a remote screen on the head node.
ray attach example-full.yaml
# Try running a Ray program.
# Tear down the cluster.
ray down example-full.yaml
恭喜,您已成功启动本地 Ray 集群!