关键概念#
本页介绍Ray集群的关键概念:
Ray 集群#
一个 Ray 集群由一个 头节点 和任意数量的连接 工作节点 组成:
工作节点的数量可以根据应用程序需求 自动扩展 ,这由您的 Ray 集群配置指定。头节点运行 自动扩展器。
备注
当 在 Kubernetes 上运行 时,Ray 节点作为 Pod 实现。
用户可以在 Ray 集群上提交作业执行,或者通过连接到头节点并运行 ray.init
来交互式地使用集群。更多信息请参见 Ray 作业。
头节点#
每个 Ray 集群都有一个节点被指定为集群的 头节点 。头节点与其他工作节点相同,除了它还运行负责集群管理的单例进程,如 自动缩放器、GCS 和 Ray 驱动进程 运行 Ray 作业。Ray 可能会像其他工作节点一样在头节点上调度任务和角色,这在大型集群中是不希望的。请参阅 配置主节点 以了解大型集群中的最佳实践。
工作节点#
工作节点 不运行任何头节点管理进程,仅用于在 Ray 任务和角色中运行用户代码。它们参与分布式调度,以及在 集群内存 中存储和分发 Ray 对象。
自动扩展#
The Ray autoscaler 是一个运行在 头节点 上的进程(或者在头节点pod中作为边车容器运行,如果 使用Kubernetes)。当Ray工作负载的资源需求超过集群当前的容量时,autoscaler将尝试增加工作节点的数量。当工作节点空闲时,autoscaler将从集群中移除工作节点。
理解自动缩放器仅对任务和执行者资源请求做出反应,而不是应用程序指标或物理资源利用率,这一点很重要。要了解更多关于自动缩放的信息,请参考 虚拟机 和 Kubernetes 上的 Ray 集群用户指南。
备注
版本 2.10.0 引入了 KubeRay 上 Autoscaling V2 的 alpha 版本。在此处发现增强功能和配置详情 这里。
Ray 作业#
Ray 作业是一个单一的应用程序:它是源自同一脚本的 Ray 任务、对象和角色的集合。运行 Python 脚本的 worker 被称为作业的 driver。
在 Ray 集群上运行 Ray 作业有两种方式:
(推荐)使用 Ray Jobs API 提交作业。
直接在 Ray 集群上运行驱动脚本,用于交互式开发。
有关这些工作流程的详细信息,请参阅 Ray Jobs API 指南。