程序化集群扩缩容#
ray.autoscaler.sdk.request_resources#
在 Ray 程序中,您可以使用 request_resources() 调用命令自动扩缩容器将集群扩容到期望的大小。集群将立即尝试扩缩容以满足请求的资源,绕过正常的扩容速度限制。
- ray.autoscaler.sdk.request_resources(num_cpus: int | None = None, bundles: List[dict] | None = None, bundle_label_selectors: List[dict] | None = None) None[source]
命令自动扩缩容器以满足指定的请求。
集群将立即尝试扩缩容以满足请求的资源,绕过正常的扩缩容速度限制。此操作会考虑现有的资源使用情况。
例如,假设您调用
request_resources(num_cpus=100),并且当前有 45 个正在运行的任务,每个任务需要 1 个 CPU。然后,将添加足够的节点以使最多 100 个任务可以同时运行。它 **不** 会添加足够的节点以使 145 个任务可以运行。此调用仅对自动扩缩容器发出提示。实际的集群大小可能会比预期略大或略小,具体取决于内部装箱算法和最大工作节点数量限制。
- 参数:
num_cpus – 扩容集群以确保有指定数量的 CPU 可用。此请求是持久的,直到进行另一次 request_resources() 调用进行覆盖。
bundles (List[ResourceDict]) – 扩容集群以确保这组资源形状能够容纳。此请求是持久的,直到进行另一次 request_resources() 调用进行覆盖。
bundle_label_selectors – 标签选择器列表,应用于
bundles列表的相同索引中的每个 bundle。对于没有标签要求的 bundle,列表中的相应项是空字典。对于每个 bundle。标签选择器由零个或多个键值对组成,其中键是标签,值是运算符(in、!in 等)和标签值。
示例
>>> 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}]) >>> # Requests 2 num_cpus=1 bundles, the first with >>> # label_selector={"accelerator-type": "in(A100)"} and second with >>> # label_selector={"market-type": "spot"}. >>> request_resources( ... bundles=[{"CPU": 1}, {"CPU": 1}]), ... bundle_label_selectors=[{"accelerator-type": "in(A100)"}, ... {"market-type": "spot"}])
DeveloperAPI: 此 API 在 Ray 的次要版本之间可能会发生变化。