关键概念#
本页介绍 Ray 集群的关键概念
Ray 集群#
一个 Ray 集群包含一个 头节点 和任意数量的已连接 工作节点。
一个带有两个工作节点的 Ray 集群。每个节点都运行 Ray 辅助进程以促进分布式调度和内存管理。头节点运行额外的控制进程(以蓝色突出显示)。#
工作节点的数量可能会根据应用程序需求进行自动伸缩,具体取决于您的 Ray 集群配置。头节点运行 自动伸缩器。
注意
当在 Kubernetes 上运行时,Ray 节点被实现为 pod。
用户可以提交作业在 Ray 集群上执行,或者通过连接到头节点并运行 ray.init 来交互式使用集群。有关更多信息,请参阅 Ray 作业。
头节点#
每个 Ray 集群都有一个被指定为集群头节点的节点。头节点与其他工作节点相同,只是它还运行负责集群管理的单例进程,例如 自动伸缩器、GCS 和运行 Ray 作业的 Ray 驱动程序进程 。Ray 可能会像在任何其他工作节点上一样在头节点上调度任务和 actor,这在大规模集群中是不理想的。有关大规模集群的最佳实践,请参阅 配置头节点。
工作节点#
工作节点不运行任何头节点管理进程,仅用于在 Ray 任务和 actor 中运行用户代码。它们参与分布式调度,以及在 集群内存 中存储和分发 Ray 对象。
自动伸缩#
Ray 自动伸缩器是在 头节点 上运行的进程(或者如果使用 Kubernetes,则在头 pod 中作为 sidecar 容器运行)。当 Ray 工作负载的资源需求超过集群当前容量时,自动伸缩器将尝试增加工作节点的数量。当工作节点空闲时,自动伸缩器将从集群中删除工作节点。
重要的是要理解,自动伸缩器仅对任务和 actor 的资源请求做出反应,而不对应用程序指标或物理资源利用率做出反应。要了解有关自动伸缩的更多信息,请参阅 Ray 集群在 VM 和 Kubernetes 上的用户指南。
注意
2.10.0 版本在 KubeRay 上推出了自动伸缩 V2 的 alpha 版本。在此处 发现增强功能和配置详细信息。
Ray 作业#
Ray 作业是一个单一的应用程序:它是由同一个脚本产生的 Ray 任务、对象和 actor 的集合。运行 Python 脚本的工作进程被称为作业的驱动程序。
有两种方法可以在 Ray 集群上运行 Ray 作业:
(推荐) 使用 Ray 作业 API 提交作业。
直接在 Ray 集群上运行驱动程序脚本,用于交互式开发。
有关这些工作流程的详细信息,请参阅 Ray 作业 API 指南。
在 Ray 集群上运行作业的两种方式。#