From fbeec00b7b902e6fcf3bd228a44c0859081df30d Mon Sep 17 00:00:00 2001 From: Zilin Zhu Date: Mon, 24 Aug 2026 13:38:01 +0000 Subject: [PATCH] [cleanup] Remove rollout_validation.py --- slime/ray/rollout.py | 30 ++++++++++------ slime/ray/rollout_validation.py | 32 ----------------- tests/test_rollout_validation.py | 62 -------------------------------- 3 files changed, 19 insertions(+), 105 deletions(-) delete mode 100644 slime/ray/rollout_validation.py delete mode 100644 tests/test_rollout_validation.py diff --git a/slime/ray/rollout.py b/slime/ray/rollout.py index 246e828fb1..9cda8c03a2 100644 --- a/slime/ray/rollout.py +++ b/slime/ray/rollout.py @@ -34,7 +34,6 @@ from slime.utils.misc import Box, load_function from slime.utils.types import Sample -from .rollout_validation import validate_server_group_gpu_indices from .utils import NOSET_VISIBLE_DEVICES_ENV_VARS_LIST, Lock, add_default_ray_env_vars logging.getLogger("httpx").setLevel(logging.WARNING) @@ -107,16 +106,25 @@ def start_engines(self, port_cursors: dict[int, int] | None = None) -> tuple[lis num_gpus_per_engine_on_node = min(self.num_gpus_per_engine, self.args.num_gpus_per_node) pg, reordered_bundle_indices, reordered_gpu_ids = self.pg - validate_server_group_gpu_indices( - worker_type=self.worker_type, - gpu_offset=self.gpu_offset, - num_gpus_per_engine=self.num_gpus_per_engine, - num_gpus_per_engine_on_node=num_gpus_per_engine_on_node, - num_engines=len(self.all_engines), - num_available_gpus=len(reordered_gpu_ids), - rollout_num_gpus=self.args.rollout_num_gpus, - rollout_num_gpus_per_engine=self.args.rollout_num_gpus_per_engine, - ) + num_engines = len(self.all_engines) + required_gpu_slots = self.gpu_offset + num_engines * num_gpus_per_engine_on_node + if num_engines and not ( + self.gpu_offset >= 0 and num_gpus_per_engine_on_node > 0 and required_gpu_slots <= len(reordered_gpu_ids) + ): + raise ValueError( + "Invalid rollout server group GPU placement: " + f"worker_type={self.worker_type}, " + f"gpu_offset={self.gpu_offset}, " + f"num_gpus_per_engine={self.num_gpus_per_engine}, " + f"num_gpus_per_engine_on_node={num_gpus_per_engine_on_node}, " + f"num_engines={num_engines}, " + f"required_gpu_slots={required_gpu_slots}, " + f"len(reordered_gpu_ids)={len(reordered_gpu_ids)}, " + f"rollout_num_gpus={self.args.rollout_num_gpus}, " + f"rollout_num_gpus_per_engine={self.args.rollout_num_gpus_per_engine}. " + "Please align --rollout-num-gpus, --rollout-num-gpus-per-engine, " + "and --sglang-config server_groups." + ) RolloutRayActor = ray.remote(SGLangEngine) diff --git a/slime/ray/rollout_validation.py b/slime/ray/rollout_validation.py deleted file mode 100644 index 77c9b9ef0e..0000000000 --- a/slime/ray/rollout_validation.py +++ /dev/null @@ -1,32 +0,0 @@ -def validate_server_group_gpu_indices( - *, - worker_type: str, - gpu_offset: int, - num_gpus_per_engine: int, - num_gpus_per_engine_on_node: int, - num_engines: int, - num_available_gpus: int, - rollout_num_gpus: int, - rollout_num_gpus_per_engine: int, -) -> None: - if num_engines == 0: - return - - required_gpu_slots = gpu_offset + num_engines * num_gpus_per_engine_on_node - if gpu_offset >= 0 and num_gpus_per_engine_on_node > 0 and required_gpu_slots <= num_available_gpus: - return - - raise ValueError( - "Invalid rollout server group GPU placement: " - f"worker_type={worker_type}, " - f"gpu_offset={gpu_offset}, " - f"num_gpus_per_engine={num_gpus_per_engine}, " - f"num_gpus_per_engine_on_node={num_gpus_per_engine_on_node}, " - f"num_engines={num_engines}, " - f"required_gpu_slots={required_gpu_slots}, " - f"len(reordered_gpu_ids)={num_available_gpus}, " - f"rollout_num_gpus={rollout_num_gpus}, " - f"rollout_num_gpus_per_engine={rollout_num_gpus_per_engine}. " - "Please align --rollout-num-gpus, --rollout-num-gpus-per-engine, " - "and --sglang-config server_groups." - ) diff --git a/tests/test_rollout_validation.py b/tests/test_rollout_validation.py deleted file mode 100644 index 376a6ac515..0000000000 --- a/tests/test_rollout_validation.py +++ /dev/null @@ -1,62 +0,0 @@ -import pytest - -from slime.ray.rollout_validation import validate_server_group_gpu_indices - -NUM_GPUS = 0 - - -@pytest.mark.unit -def test_validate_server_group_gpu_indices_accepts_valid_config(): - validate_server_group_gpu_indices( - worker_type="regular", - gpu_offset=2, - num_gpus_per_engine=1, - num_gpus_per_engine_on_node=1, - num_engines=2, - num_available_gpus=4, - rollout_num_gpus=4, - rollout_num_gpus_per_engine=1, - ) - - -@pytest.mark.unit -def test_validate_server_group_gpu_indices_allows_empty_group(): - validate_server_group_gpu_indices( - worker_type="placeholder", - gpu_offset=4, - num_gpus_per_engine=1, - num_gpus_per_engine_on_node=1, - num_engines=0, - num_available_gpus=4, - rollout_num_gpus=4, - rollout_num_gpus_per_engine=1, - ) - - -@pytest.mark.unit -def test_validate_server_group_gpu_indices_reports_config_context(): - with pytest.raises(ValueError) as exc_info: - validate_server_group_gpu_indices( - worker_type="regular", - gpu_offset=3, - num_gpus_per_engine=2, - num_gpus_per_engine_on_node=2, - num_engines=1, - num_available_gpus=4, - rollout_num_gpus=4, - rollout_num_gpus_per_engine=2, - ) - - message = str(exc_info.value) - assert "worker_type=regular" in message - assert "gpu_offset=3" in message - assert "num_gpus_per_engine=2" in message - assert "num_engines=1" in message - assert "required_gpu_slots=5" in message - assert "len(reordered_gpu_ids)=4" in message - assert "rollout_num_gpus=4" in message - assert "rollout_num_gpus_per_engine=2" in message - - -if __name__ == "__main__": - raise SystemExit(pytest.main([__file__]))