Skip to content

Commit 2f5a537

Browse files
bveeramanipeterxcli
authored andcommitted
[Data] Return 'inf' for max object store memory usage (ray-project#59751)
ray-project#59412 updated the reservation resource allocator to cap resource allocations based on the resources returned by `min_max_resource_usage`. The problem is that running tasks can produce any amounts of data, so it doesn't make sense to cap by `obj_store_mem_max_pending_output_per_task * concurrency`. This PR fixes that issue by setting the max object store memory usage to 'inf'. Signed-off-by: Balaji Veeramani <bveeramani@berkeley.edu> Signed-off-by: peterxcli <peterxcli@gmail.com>
1 parent 64ef11a commit 2f5a537

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

python/ray/data/_internal/execution/operators/actor_pool_map_operator.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,9 @@ def min_max_resource_requirements(
484484
cpu=num_cpus_per_actor * max_actors,
485485
gpu=num_gpus_per_actor * max_actors,
486486
memory=memory_per_actor * max_actors,
487-
object_store_memory=obj_store_mem_per_task * max_actors,
487+
# Set the max `object_store_memory` requirement to 'inf', because we
488+
# don't know how much data each task can output.
489+
object_store_memory=float("inf"),
488490
)
489491

490492
return min_resource_usage, max_resource_usage

python/ray/data/_internal/execution/operators/task_pool_map_operator.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ def min_max_resource_requirements(
188188
cpu=per_task.cpu * self._max_concurrency,
189189
gpu=per_task.gpu * self._max_concurrency,
190190
memory=per_task.memory * self._max_concurrency,
191-
object_store_memory=obj_store_per_task * self._max_concurrency,
191+
# Set the max `object_store_memory` requirement to 'inf', because we
192+
# don't know how much data each task can output.
193+
object_store_memory=float("inf"),
192194
)
193195
else:
194196
max_resource_usage = ExecutionResources.for_limits()

python/ray/data/tests/test_actor_pool_map_operator.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,9 +680,11 @@ def test_min_max_resource_requirements(restore_data_context):
680680
) = op.min_max_resource_requirements()
681681

682682
# min_resource_usage: 1 actor * (1 gpu, 3 obj_store_mem)
683-
# max_resource_usage: 2 actors * (1 gpu, 3 obj_store_mem)
683+
# max_resource_usage: 2 actors * (1 gpu)
684684
assert min_resource_usage_bound == ExecutionResources(gpu=1, object_store_memory=3)
685-
assert max_resource_usage_bound == ExecutionResources(gpu=2, object_store_memory=6)
685+
assert max_resource_usage_bound == ExecutionResources(
686+
gpu=2, object_store_memory=float("inf")
687+
)
686688

687689

688690
def test_min_max_resource_requirements_unbounded(restore_data_context):

0 commit comments

Comments
 (0)