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目前处于测试阶段,在成为稳定版本之前可能会发生变化。
方法
属性
返回资源包的深层副本
当子捆绑包需要资源时,如果头捆绑包为空,则返回 True。
返回头部捆绑包中的CPU数量。
返回一个包含所有资源总和的字典
返回放置策略