ray.tune.schedulers.resource_changing_scheduler.DistributeResources#

class ray.tune.schedulers.resource_changing_scheduler.DistributeResources(add_bundles: bool = False, increase_by: Dict[str, float] | None = None, increase_by_times: int = -1, reserve_resources: Dict[str, float] | None = None)[源代码]#

基类:object

此类创建了一个基本的统一资源分配函数。

该函数天真地在试验之间平衡空闲资源(CPU 和 GPU),给予它们相同的优先级,确保所有资源始终被使用。空闲资源将被放入新的捆绑包中。该函数假设所有捆绑包都是平等的(没有“头”捆绑包)。

如果由于某些原因,一个试验最终获得的资源超过了可用资源,它将会向下调整。同时,它也会确保该试验至少拥有与开始时相同的资源(base_trial_resource)。

该函数返回一个更新了资源需求的新 PlacementGroupFactory,或者返回 None。如果返回的 PlacementGroupFactory 在值上与试验当前的相同,调度器将在内部跳过更新过程(与返回 None 相同)。

如果你想实现自己的资源分配逻辑,你可以通过扩展这个类来实现,因为它提供了几个通用方法。你也可以实现一个函数来代替。

参数:
  • add_bundles – 如果为真,从免费资源创建新的资源包。否则,将它们分散在 base_trial_resource 资源包中。

  • increase_by – 一个包含键值对的字典,表示试验将增加的资源(名称-数量)的原子单位。如果未设置,试验将增加1个CPU/GPU。

  • increase_by_times – 如果设置为 >=1 并且 increase_by 已设置,试验将增加最多 increase_by_times * increase_by 资源。如果设置为 <1,则不设置上限。如果 increase_by 未设置,则忽略此项。

  • reserve_resources – 一个资源名称-数量对的字典,表示不会分配给调整大小的试验的资源。

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

方法