配置自动伸缩#

本指南将介绍如何使用 Ray 集群启动器配置 Ray 自动伸缩器。Ray 自动伸缩器是一个 Ray 集群进程,它根据资源需求自动扩展和缩减集群。自动伸缩器通过根据任务、Actor 或放置组所需的资源来调整集群中的节点数量来实现这一点。

请注意,自动伸缩器仅考虑用于伸缩的逻辑资源请求(即在 @ray.remote 中指定的并在 ray status 中显示的),而不考虑物理机器利用率。如果用户尝试启动一个 Actor、任务或放置组,但资源不足,则该请求将被排队。自动伸缩器会添加节点来满足此队列中的资源需求。自动伸缩器还会移除空闲一段时间后变得空闲的节点。当一个节点没有任何活动的任务、Actor 或对象时,它就被认为是空闲的。

提示

何时使用自动伸缩?

自动伸缩可以降低工作负载成本,但会增加节点启动的开销,并且配置起来可能很棘手。如果您是 Ray 新手,我们建议从非自动伸缩集群开始。

集群配置参数#

您的集群配置文件中提供了以下选项。建议您在启动集群之前设置这些选项,但您也可以通过更新集群配置在运行时进行修改。

max_workers[default_value=2, min_value=0]:要启动的最大集群工作节点数。请注意,这不包括头节点。

min_workers[default_value=0, min_value=0]:要启动的最小集群工作节点数,无论利用率如何。请注意,这不包括头节点。此数字必须小于 max_workers

注意

如果在运行时修改了 max_workers,自动伸缩器将立即移除节点直到满足此约束。这可能会中断正在运行的工作负载。

如果您使用的节点类型多于一种,您还可以为每种节点类型设置最小和最大工作节点数。

available_node_types.<node_type_name>.max_workers[default_value=cluster max_workers, min_value=0]:要启动的给定类型的工作节点的最大数量。此数字必须小于或等于集群的 max_workers

available_node_types.<node_type_name>.min_workers[default_value=0, min_value=0]:要启动的给定类型的工作节点的最小数量,无论利用率如何。所有节点类型的 min_workers 之和必须小于或等于集群的 max_workers

向上和向下伸缩速度#

如果需要,您还可以控制将节点添加到集群或从集群中移除的速率。对于具有许多短期任务的应用程序,您可能希望将向上和向下伸缩速度调整得更保守一些。

upscaling_speed[default_value=1.0, min_value=1.0]:允许挂起的节点数,作为当前节点数的倍数。值越高,向上伸缩越激进。例如,如果此设置为 1.0,则集群在任何时候的最大增长率为 100%,因此如果集群当前有 20 个节点,最多允许 20 个挂起的启动。无论此设置如何,最小挂起启动数为 5。

idle_timeout_minutes[default_value=5, min_value=0]:在空闲工作节点被自动伸缩器移除之前需要经过的分钟数。值越小,向下伸缩越激进。当工作节点不包含任何活动的任务、Actor 或引用的对象(无论是在内存中还是已溢出到磁盘)时,它们被视为空闲。此参数不影响头节点。

程序化伸缩#

有关程序化访问自动伸缩器的更多信息,请参阅 程序化集群伸缩指南