程序化集群扩缩#

ray.autoscaler.sdk.request_resources#

在 Ray 程序中,您可以通过调用 request_resources() 命令自动扩缩器将集群扩缩到期望的大小。集群将立即尝试扩缩以满足请求的资源,绕过正常的扩缩速度限制。

ray.autoscaler.sdk.request_resources(num_cpus: int | None = None, bundles: List[dict] | None = None) None[source]

命令自动扩缩器扩缩以满足指定的资源请求。

集群将立即尝试扩缩以满足请求的资源,绕过正常的扩缩速度限制。这会考虑现有的资源使用情况。

例如,假设您调用 request_resources(num_cpus=100),并且当前正在运行 45 个任务,每个任务需要 1 个 CPU。然后,将添加足够的节点,以便最多可以并发运行 100 个任务。它不会添加足够的节点以运行 145 个任务。

此调用仅是自动扩缩器的一个提示。实际产生的集群大小可能会比预期略大或略小,具体取决于内部的 bin packing 算法和最大工作节点数量限制。

参数:
  • num_cpus – 扩缩集群以确保提供此数量的 CPU。此请求会一直持续,直到另一次调用 request_resources() 覆盖它为止。

  • bundles (List[ResourceDict]) – 扩缩集群以确保此组资源形状能够容纳。此请求会一直持续,直到另一次调用 request_resources() 覆盖它为止。

示例

>>> from ray.autoscaler.sdk import request_resources
>>> # Request 1000 CPUs.
>>> request_resources(num_cpus=1000) 
>>> # Request 64 CPUs and also fit a 1-GPU/4-CPU task.
>>> request_resources( 
...     num_cpus=64, bundles=[{"GPU": 1, "CPU": 4}])
>>> # Same as requesting num_cpus=3.
>>> request_resources( 
...     bundles=[{"CPU": 1}, {"CPU": 1}, {"CPU": 1}])

DeveloperAPI: 此 API 可能在 Ray 的次要版本之间发生变化。