Files
ray-project--ray/rllib/algorithms/tests/test_get_main_process_bundle.py
2026-07-13 13:17:40 +08:00

48 lines
1.6 KiB
Python

import pytest
from ray.rllib.algorithms.algorithm import Algorithm
from ray.rllib.algorithms.algorithm_config import AlgorithmConfig
from ray.rllib.algorithms.utils import _get_main_process_bundle
def test_get_main_process_bundle():
# num_learners=0, so main process gets num_cpus_per_learner.
config = AlgorithmConfig().learners(
num_learners=0, num_cpus_per_learner=4, num_gpus_per_learner=1
)
bundle = _get_main_process_bundle(config)
assert bundle["CPU"] == 4
assert bundle["GPU"] == 1
# custom_resources_for_main_process included in bundle (num_learners>0).
config = (
AlgorithmConfig()
.resources(custom_resources_for_main_process={"my_resource": 1})
.learners(num_learners=1)
)
bundle = _get_main_process_bundle(config)
assert bundle == {"CPU": 1, "GPU": 0, "my_resource": 1}
def test_default_resource_request_old_stack_custom_resources():
"""custom_resources_for_main_process must appear in the placement group
even when using the old API stack (enable_rl_module_and_learner=False)."""
config = (
AlgorithmConfig()
.api_stack(
enable_rl_module_and_learner=False,
enable_env_runner_and_connector_v2=False,
)
.resources(custom_resources_for_main_process={"my_resource": 2})
.env_runners(num_env_runners=0)
)
pg_factory = Algorithm.default_resource_request(config)
main_bundle = pg_factory.bundles[0]
assert main_bundle["my_resource"] == 2
if __name__ == "__main__":
import sys
sys.exit(pytest.main(["-v", __file__]))