启动一个本地集群#

本文档描述了如何设置一个本地 Ray 集群,即在裸金属机器上或在私有云中运行 Ray。我们提供了两种启动本地集群的方法。

  • 你可以 手动设置 Ray 集群,通过安装 Ray 包并在每个节点上启动 Ray 进程。

  • 或者,如果你事先知道所有的节点并且可以通过SSH访问它们,你应该使用集群启动器启动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)。

请注意,如果你的计算节点位于具有网络地址转换的独立子网中,从该子网外的机器连接时,头节点打印的地址将无法使用。你需要使用远程机器可访问的头节点地址。如果头节点有一个像compute04.berkeley.edu这样的域地址,你可以直接使用它来代替IP地址,并依赖DNS。

Ray 自动检测每个节点上的资源(例如,CPU),但你也可以通过向 ray start 命令传递自定义资源来手动覆盖此设置。例如,如果你想指定一台机器有 10 个 CPU 和 1 个 GPU 可供 Ray 使用,你可以使用 --num-cpus=10--num-gpus=1 标志来实现。更多信息请参见 配置页面

故障排除#

如果你看到 无法连接到 GCS ...,这意味着在给定的 --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 upray downray 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 集群!