Skip to content

Commit 62a7f77

Browse files
wulipc松灵DarkLight1337
authored andcommitted
[Bugfix] Fix MRoPE Errors in the Qwen-VL Model When Processing Pure Text (vllm-project#18526)
Co-authored-by: 松灵 <[email protected]> Co-authored-by: Cyrus Leung <[email protected]> Co-authored-by: DarkLight1337 <[email protected]> Signed-off-by: googs1025 <[email protected]>
1 parent fa72f9a commit 62a7f77

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

vllm/sampling_params.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -330,11 +330,9 @@ def __post_init__(self) -> None:
330330
# and set `_real_n`` to the original `n`.
331331
# when we return the result, we will check
332332
# if we need to return `n` or `_real_n` results
333-
if self.best_of:
334-
if self.best_of < self.n:
335-
raise ValueError(
336-
f"best_of must be greater than or equal to n, "
337-
f"got n={self.n} and best_of={self.best_of}.")
333+
if self.best_of is None:
334+
self.best_of = self.n
335+
else:
338336
if not self._real_n:
339337
self._real_n = self.n
340338
self.n = self.best_of
@@ -389,6 +387,14 @@ def _verify_args(self) -> None:
389387
f"type {type(self.n)}")
390388
if self.n < 1:
391389
raise ValueError(f"n must be at least 1, got {self.n}.")
390+
if not isinstance(self.best_of, int):
391+
raise ValueError(
392+
f"best_of must be an integer, got {type(self.best_of)}")
393+
if self.best_of < 1:
394+
raise ValueError(f"best_of must be at least 1, got {self.best_of}")
395+
if self.best_of < self.n:
396+
raise ValueError(f"best_of must be greater than or equal to n, "
397+
f"got n={self.n} and best_of={self.best_of}.")
392398
if not -2.0 <= self.presence_penalty <= 2.0:
393399
raise ValueError("presence_penalty must be in [-2, 2], got "
394400
f"{self.presence_penalty}.")
@@ -512,7 +518,6 @@ def update_from_tokenizer(self, tokenizer: AnyTokenizer) -> None:
512518
raise ValueError(
513519
f"The model vocabulary size is {tokenizer.max_token_id+1},"
514520
f" but the following tokens"
515-
f" were specified as bad: {invalid_token_ids}."
516521
f" All token id values should be integers satisfying:"
517522
f" 0 <= token_id <= {tokenizer.max_token_id}.")
518523

vllm/worker/model_runner.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,10 @@ def _compute_multi_modal_input(self, inter_data: InterDataForSeqGroup,
729729
mm_kwargs, placeholder_maps = MultiModalPlaceholderMap.from_seq_group(
730730
seq_group_metadata,
731731
range(positions[0], positions[0] + len(positions)))
732-
if not mm_kwargs:
732+
733+
# M-RoPE requires mrope_positions even for plain text; return early
734+
# when mm_kwargs is empty only if inter_data.is_prompt is False.
735+
if not mm_kwargs and not inter_data.is_prompt:
733736
return
734737

735738
inter_data.multi_modal_kwargs = mm_kwargs
@@ -741,12 +744,6 @@ def _compute_multi_modal_input(self, inter_data: InterDataForSeqGroup,
741744
video_grid_thw = mm_kwargs.get("video_grid_thw", None)
742745
audio_feature_lengths = mm_kwargs.get("audio_feature_lengths",
743746
None)
744-
assert (
745-
image_grid_thw is not None or video_grid_thw is not None
746-
or audio_feature_lengths is not None), (
747-
"mrope embedding type requires multi-modal input mapper "
748-
"returns 'image_grid_thw' or 'video_grid_thw' or "
749-
"'audio_feature_lengths'.")
750747

751748
second_per_grid_ts = mm_kwargs.get("second_per_grid_ts", None)
752749
use_audio_in_video = mm_kwargs.get("use_audio_in_video", False)

0 commit comments

Comments
 (0)