关键概念#

本页介绍 Ray 集群的关键概念

Ray 集群#

一个 Ray 集群由一个头节点和任意数量连接的工作节点组成

../_images/ray-cluster.svg

包含两个工作节点的 Ray 集群。每个节点运行 Ray 辅助进程以促进分布式调度和内存管理。头节点运行额外的控制进程(蓝色突出显示)。#

工作节点的数量可以根据你的 Ray 集群配置中指定的应用需求进行自动扩缩容。头节点运行自动扩缩容器

注意

Kubernetes 上运行时,Ray 节点实现为 Pod。

用户可以提交作业在 Ray 集群上执行,也可以通过连接到头节点并运行ray.init来交互式地使用集群。更多信息请参阅Ray Jobs

头节点#

每个 Ray 集群都有一个被指定为集群头节点的节点。头节点与其它工作节点相同,只是它还运行负责集群管理的单例进程,例如自动扩缩容器GCS运行 Ray jobs 的 Ray driver 进程。Ray 可能会在头节点上调度任务和 actors,就像在任何其他工作节点上一样,这在大规模集群中是不期望的。大规模集群的最佳实践请参阅配置头节点

工作节点#

工作节点不运行任何头节点管理进程,仅用于在 Ray 任务和 actors 中运行用户代码。它们参与分布式调度,以及 Ray 对象在集群内存中的存储和分发。

自动扩缩容#

Ray 自动扩缩容器是在头节点上运行的进程(如果在使用 Kubernetes,则作为头节点 pod 中的 sidecar 容器)。当 Ray 工作负载的资源需求超出集群当前容量时,自动扩缩容器会尝试增加工作节点的数量。当工作节点闲置时,自动扩缩容器会从集群中移除工作节点。

重要的是要理解自动扩缩容器仅对任务和 actor 的资源请求做出反应,而不是对应用指标或物理资源利用率做出反应。要了解有关自动扩缩容的更多信息,请参阅 Ray 集群在VMsKubernetes上的用户指南。

注意

2.10.0 版本引入了 KubeRay 自动扩缩容 V2 的 alpha 版本。在此处了解增强功能和配置详情:点此查看

Ray Jobs#

Ray job 是一个独立的应用程序:它是源自同一脚本的 Ray 任务、对象和 actor 的集合。运行 Python 脚本的工作节点被称为 job 的 driver

在 Ray 集群上运行 Ray job 有两种方式

  1. (推荐) 使用Ray Jobs API提交 job。

  2. 直接在 Ray 集群上运行 driver 脚本,用于交互式开发。

有关这些工作流程的详细信息,请参阅Ray Jobs API 指南

../_images/ray-job-diagram.svg

在 Ray 集群上运行 job 的两种方式。#