[Bugfix][Frontend] Honor skip_decoder_start_token in async encoder-decoder rendering (#54799)
Signed-off-by: waizuichougou <2082431897@qq.com>
waizuichougou committed
Sep 2, 2026 at 03:00 UTC
d98bb2a87996f46791aac7b0682998371d4ff48b
1 file changed
+11
-8
vllm/renderers/base.py
+11
-8
@@ -914,6 +914,15 @@ class BaseRenderer(ABC, Generic[_T]):
914
915
return await self._process_tokens_async(prompt, skip_mm_cache=skip_mm_cache) # type: ignore[arg-type]
916
917
+ def _get_skip_decoder_start_token(self) -> bool:
918
+ """Whether the multimodal processor supplies a complete decoder prefix."""
919
+ if self.mm_processor is not None:
920
+ from vllm.multimodal.processing import EncDecMultiModalProcessor
921
+
922
+ if isinstance(self.mm_processor, EncDecMultiModalProcessor):
923
+ return self.mm_processor.skip_decoder_start_token
924
+ return False
925
+
926
def _process_enc_dec(
927
self,
928
prompt: EncoderDecoderTokPrompt,
@@ -923,13 +932,6 @@ class BaseRenderer(ABC, Generic[_T]):
932
enc_prompt = prompt["encoder_prompt"]
933
dec_prompt = prompt["decoder_prompt"]
934
926
- skip_decoder_start_token = False
927
- if self.mm_processor is not None:
928
- from vllm.multimodal.processing import EncDecMultiModalProcessor
929
-
930
- if isinstance(self.mm_processor, EncDecMultiModalProcessor):
931
- skip_decoder_start_token = self.mm_processor.skip_decoder_start_token
932
-
935
return build_enc_dec_input(
936
encoder_input=self._process_singleton(
937
enc_prompt, skip_mm_cache=skip_mm_cache
@@ -940,7 +942,7 @@ class BaseRenderer(ABC, Generic[_T]):
942
else self._process_singleton(dec_prompt, skip_mm_cache=skip_mm_cache)
943
),
944
decoder_start_token_id=self.get_dec_start_token_id(),
943
- skip_decoder_start_token=skip_decoder_start_token,
945
+ skip_decoder_start_token=self._get_skip_decoder_start_token(),
946
)
947
948
async def _process_enc_dec_async(
@@ -967,6 +969,7 @@ class BaseRenderer(ABC, Generic[_T]):
969
encoder_input=encoder_input,
970
decoder_input=decoder_input,
971
decoder_start_token_id=self.get_dec_start_token_id(),
972
+ skip_decoder_start_token=self._get_skip_decoder_start_token(),
973
)
974
975
def process_for_engine(