11# SPDX-License-Identifier: Apache-2.0
22# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3+ import dataclasses
34from typing import Optional
45from unittest .mock import Mock
56
@@ -1899,4 +1900,53 @@ def test_priority_scheduling_preemption_when_out_of_kv():
18991900 assert output .scheduled_cached_reqs .num_reqs == 1
19001901 assert output .scheduled_cached_reqs .req_ids [0 ] == request_high .request_id
19011902 assert len (scheduler .waiting ) == 1
1902- assert len (scheduler .running ) == 1
1903+ assert len (scheduler .running ) == 1
1904+
1905+
1906+ @pytest .mark .parametrize (
1907+ ("enable_chunked_prefill" , "is_encoder_decoder" , "expect_enabled" ),
1908+ [
1909+ (True , False , True ),
1910+ (False , False , False ),
1911+ # Encoder-decoder models should always have it disabled
1912+ (False , True , False ),
1913+ (True , True , False ),
1914+ ])
1915+ def test_chunked_prefill_disabled_for_encoder_decoder (
1916+ enable_chunked_prefill : bool , is_encoder_decoder : bool ,
1917+ expect_enabled : bool ) -> None :
1918+ """Validate that chunked prefill is appropriately disabled for
1919+ encoder-decoder models."""
1920+ scheduler_config = SchedulerConfig (
1921+ enable_chunked_prefill = enable_chunked_prefill ,
1922+ is_encoder_decoder = is_encoder_decoder ,
1923+ )
1924+
1925+ # `is_encoder_decoder` should only be used during construction
1926+ # of the config, and otherwise stored in the model config.
1927+ assert "is_encoder_decoder" not in vars (scheduler_config )
1928+ assert "is_encoder_decoder" not in [
1929+ f .name for f in dataclasses .fields (scheduler_config )
1930+ ]
1931+ _validate_chunked_prefill_settings_for_encoder_decoder (
1932+ scheduler_config , is_encoder_decoder , expect_enabled )
1933+
1934+ # Ensure it is retained in VllmConfig, even after its post-init.
1935+ vllm_config = VllmConfig (scheduler_config = scheduler_config )
1936+ _validate_chunked_prefill_settings_for_encoder_decoder (
1937+ vllm_config .scheduler_config , is_encoder_decoder , expect_enabled )
1938+
1939+
1940+ def _validate_chunked_prefill_settings_for_encoder_decoder (
1941+ scheduler_config : SchedulerConfig , is_encoder_decoder : bool ,
1942+ expect_enabled : bool ) -> None :
1943+ """Validate chunked prefill settings in the scheduler config for
1944+ encoder-decoder models."""
1945+ assert scheduler_config .chunked_prefill_enabled is expect_enabled
1946+ assert scheduler_config .enable_chunked_prefill is expect_enabled
1947+ if is_encoder_decoder :
1948+ # Encoder-decoder models should automatically disable chunked multimodal
1949+ # inputs as well
1950+ assert scheduler_config .disable_chunked_mm_input is not expect_enabled
1951+ if is_encoder_decoder and not expect_enabled :
1952+ assert scheduler_config .long_prefill_token_threshold == 0
0 commit comments