1
1
# SPDX-License-Identifier: Apache-2.0
2
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
+ import dataclasses
3
4
from typing import Optional
4
5
from unittest .mock import Mock
5
6
@@ -1899,4 +1900,53 @@ def test_priority_scheduling_preemption_when_out_of_kv():
1899
1900
assert output .scheduled_cached_reqs .num_reqs == 1
1900
1901
assert output .scheduled_cached_reqs .req_ids [0 ] == request_high .request_id
1901
1902
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