关键概念#
本页介绍 Ray 集群的关键概念
Ray 集群#
包含两个工作节点的 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 集群在VMs和Kubernetes上的用户指南。
注意
2.10.0 版本引入了 KubeRay 自动扩缩容 V2 的 alpha 版本。在此处了解增强功能和配置详情:点此查看。
Ray Jobs#
Ray job 是一个独立的应用程序:它是源自同一脚本的 Ray 任务、对象和 actor 的集合。运行 Python 脚本的工作节点被称为 job 的 driver。
在 Ray 集群上运行 Ray job 有两种方式
(推荐) 使用Ray Jobs API提交 job。
直接在 Ray 集群上运行 driver 脚本,用于交互式开发。
有关这些工作流程的详细信息,请参阅Ray Jobs API 指南。
在 Ray 集群上运行 job 的两种方式。#