From 7a98c7a392222d0073e8e15bbfa05cf03d7d8fb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Lucchesi?= Date: Tue, 21 Jul 2026 10:52:52 +0200 Subject: [PATCH] [Misc] Remove old now unsupported `max_num_partial_prefills` and `max_long_partial_prefills` (#49244) Signed-off-by: NickLucche --- tests/lora/test_worker.py | 1 - vllm/config/scheduler.py | 44 ++++----------------------------------- vllm/engine/arg_utils.py | 19 ----------------- 3 files changed, 4 insertions(+), 60 deletions(-) diff --git a/tests/lora/test_worker.py b/tests/lora/test_worker.py index e929fcad28..f80f6cec41 100644 --- a/tests/lora/test_worker.py +++ b/tests/lora/test_worker.py @@ -66,7 +66,6 @@ def test_worker_apply_lora(qwen3_lora_files): runner_type="generate", max_num_batched_tokens=32, max_num_seqs=32, - max_num_partial_prefills=32, ), device_config=DeviceConfig(DEVICE_TYPE), cache_config=CacheConfig( diff --git a/vllm/config/scheduler.py b/vllm/config/scheduler.py index 3773a47ec9..1b82b2c512 100644 --- a/vllm/config/scheduler.py +++ b/vllm/config/scheduler.py @@ -67,16 +67,6 @@ class SchedulerConfig: In real usage, this should be set in `EngineArgs.create_engine_config`. """ - max_num_partial_prefills: int = Field(default=1, ge=1) - """For chunked prefill, the maximum number of sequences that can be - partially prefilled concurrently.""" - - max_long_partial_prefills: int = Field(default=1, ge=1) - """For chunked prefill, the maximum number of prompts longer than - long_prefill_token_threshold that will be prefilled concurrently. Setting - this less than max_num_partial_prefills will allow shorter prompts to jump - the queue in front of longer prompts in some cases, improving latency.""" - long_prefill_token_threshold: int = Field(default=0, ge=0) """For chunked prefill, a request is considered long if the prompt is longer than this number of tokens. 0 disables the cap (default).""" @@ -254,19 +244,6 @@ class SchedulerConfig: self.max_num_batched_tokens, ) - if self.max_num_partial_prefills > 1: - if self.long_prefill_token_threshold == 0: - self.long_prefill_token_threshold = int(max_model_len * 0.04) - - logger.info( - "Concurrent partial prefills enabled with " - "max_num_partial_prefills=%d, max_long_partial_prefills=%d, " - "long_prefill_token_threshold=%d", - self.max_num_partial_prefills, - self.max_long_partial_prefills, - self.long_prefill_token_threshold, - ) - self.verify_max_model_len(max_model_len) def verify_max_model_len(self, max_model_len: int) -> Self: @@ -298,24 +275,11 @@ class SchedulerConfig: self.max_num_seqs * max_model_len, ) - if self.max_num_partial_prefills > 1: - if not self.enable_chunked_prefill: - raise ValueError( - "Chunked prefill must be enabled to set " - "max_num_partial_prefills > 1." - ) - - if self.long_prefill_token_threshold > max_model_len: - raise ValueError( - "long_prefill_token_threshold " - f"({self.long_prefill_token_threshold}) cannot be greater " - f"than the max_model_len ({max_model_len})." - ) - - if self.max_long_partial_prefills > self.max_num_partial_prefills: + if self.long_prefill_token_threshold > max_model_len: raise ValueError( - f"{self.max_long_partial_prefills=} must be less than or equal to " - f"{self.max_num_partial_prefills=}." + "long_prefill_token_threshold " + f"({self.long_prefill_token_threshold}) cannot be greater " + f"than the max_model_len ({max_model_len})." ) return self diff --git a/vllm/engine/arg_utils.py b/vllm/engine/arg_utils.py index 72dfc28688..c947e2035c 100644 --- a/vllm/engine/arg_utils.py +++ b/vllm/engine/arg_utils.py @@ -527,8 +527,6 @@ class EngineArgs: kv_cache_memory_bytes: int | None = CacheConfig.kv_cache_memory_bytes max_num_batched_tokens: int | None = None max_num_scheduled_tokens: int | None = None - max_num_partial_prefills: int = SchedulerConfig.max_num_partial_prefills - max_long_partial_prefills: int = SchedulerConfig.max_long_partial_prefills long_prefill_token_threshold: int = SchedulerConfig.long_prefill_token_threshold max_num_seqs: int | None = None max_logprobs: int = ModelConfig.max_logprobs @@ -1440,13 +1438,6 @@ class EngineArgs: "default": None, }, ) - scheduler_group.add_argument( - "--max-num-partial-prefills", **scheduler_kwargs["max_num_partial_prefills"] - ) - scheduler_group.add_argument( - "--max-long-partial-prefills", - **scheduler_kwargs["max_long_partial_prefills"], - ) scheduler_group.add_argument( "--long-prefill-token-threshold", **scheduler_kwargs["long_prefill_token_threshold"], @@ -2190,8 +2181,6 @@ class EngineArgs: is_encoder_decoder=model_config.is_encoder_decoder, policy=self.scheduling_policy, scheduler_cls=self.scheduler_cls, - max_num_partial_prefills=self.max_num_partial_prefills, - max_long_partial_prefills=self.max_long_partial_prefills, long_prefill_token_threshold=self.long_prefill_token_threshold, scheduler_reserve_full_isl=self.scheduler_reserve_full_isl, watermark=self.watermark, @@ -2402,14 +2391,6 @@ class EngineArgs: def _check_feature_supported(self): """Raise an error if the feature is not supported.""" - # No Concurrent Partial Prefills so far. - if ( - self.max_num_partial_prefills != SchedulerConfig.max_num_partial_prefills - or self.max_long_partial_prefills - != SchedulerConfig.max_long_partial_prefills - ): - _raise_unsupported_error(feature_name="Concurrent Partial Prefill") - if self.pipeline_parallel_size > 1: supports_pp = getattr( self.distributed_executor_backend, "supports_pp", False