ray.tune.execution.placement_groups.PlacementGroupFactory#

class ray.tune.execution.placement_groups.PlacementGroupFactory(bundles: List[Dict[str, int | float]], strategy: str = 'PACK', *args, **kwargs)[源代码]#

基类:ResourceRequest

包装类,用于为试验创建放置组。

此函数应用于定义 Ray Tune 试验的资源请求。它包含创建 放置组 的参数。至少,这将包含至少一个指定每个试验资源需求的捆绑包:

from ray import tune

tuner = tune.Tuner(
    tune.with_resources(
        train,
        resources=tune.PlacementGroupFactory([
            {"CPU": 1, "GPU": 0.5, "custom_resource": 2}
        ])
    )
)
tuner.fit()

如果试验本身安排了更多的远程工作者,资源需求应在额外的捆绑包中指定。你也可以传递这些捆绑包的放置策略,例如强制同地放置:

from ray import tune

tuner = tune.Tuner(
    tune.with_resources(
        train,
        resources=tune.PlacementGroupFactory([
            {"CPU": 1, "GPU": 0.5, "custom_resource": 2},
            {"CPU": 2},
            {"CPU": 2},
        ], strategy="PACK")
    )
)
tuner.fit()

上面的示例将为训练本身保留1个CPU、0.5个GPU和2个custom_resources,并另外保留2个每个包含2个CPU的资源包。只有在所有这些资源都可用时,试验才会开始。例如,如果你有一个在主训练中运行的学习者,该学习者调度两个需要各自访问2个CPU的远程工作者,这就可以使用。

如果可训练对象本身不需要资源,可以将其指定为:

from ray import tune

tuner = tune.Tuner(
    tune.with_resources(
        train,
        resources=tune.PlacementGroupFactory([
            {},
            {"CPU": 2},
            {"CPU": 2},
        ], strategy="PACK")
    )
)
tuner.fit()
参数:
  • bundles – 表示资源需求的捆绑包列表。

  • strategy – 创建放置组的策略。 - “PACK”:尽可能少地将捆绑包打包到节点中。 - “SPREAD”:尽可能均匀地将捆绑包分布在不同的节点上。 - “STRICT_PACK”:将捆绑包打包到一个节点中。该组不允许跨越多个节点。 - “STRICT_SPREAD”:将捆绑包分布在不同的节点上。

  • *args – 传递给 placement_group() 的调用

  • **kwargs – 传递给 placement_group() 的调用

PublicAPI (测试版): 此API目前处于测试阶段,在成为稳定版本之前可能会发生变化。

方法

属性

bundles

返回资源包的深层副本

head_bundle_is_empty

当子捆绑包需要资源时,如果头捆绑包为空,则返回 True。

head_cpus

返回头部捆绑包中的CPU数量。

required_resources

返回一个包含所有资源总和的字典

strategy

返回放置策略