Skip to content

Commit 851047d

Browse files
committed
fix(models): make Gemma 4 suppress-token masking graph safe
Use a device buffer and index_fill_ for suppress-token masking during CUDA graph capture. Fixes #48503 Co-authored-by: Devin AI <noreply@devin.ai> Signed-off-by: Sidharth <dumko.raj@gmail.com> Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent 1ff9429 commit 851047d

3 files changed

Lines changed: 32 additions & 9 deletions

File tree

vllm/model_executor/models/gemma4_mm.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,7 +1131,20 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
11311131
self.num_redundant_experts = self.language_model.num_redundant_experts
11321132

11331133
gen_cfg = vllm_config.model_config.try_get_generation_config()
1134-
self._suppress_token_ids = gen_cfg.get("suppress_tokens") if gen_cfg else None
1134+
suppress_token_ids = gen_cfg.get("suppress_tokens") if gen_cfg else None
1135+
self.register_buffer(
1136+
"_suppress_token_ids",
1137+
(
1138+
torch.tensor(
1139+
suppress_token_ids,
1140+
dtype=torch.long,
1141+
device=vllm_config.device_config.device,
1142+
)
1143+
if suppress_token_ids
1144+
else None
1145+
),
1146+
persistent=False,
1147+
)
11351148

11361149
# ------------------------------------------------------------------ #
11371150
# Input parsing
@@ -1612,8 +1625,8 @@ def compute_logits(
16121625
hidden_states: torch.Tensor,
16131626
) -> torch.Tensor | None:
16141627
logits = self.language_model.compute_logits(hidden_states)
1615-
if logits is not None and self._suppress_token_ids:
1616-
logits[:, self._suppress_token_ids] = -float("inf")
1628+
if logits is not None and self._suppress_token_ids is not None:
1629+
logits.index_fill_(1, self._suppress_token_ids, -float("inf"))
16171630
return logits
16181631

16191632
# ------------------------------------------------------------------ #

vllm/model_executor/models/gemma4_mtp.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,20 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
529529

530530
draft_cfg = vllm_config.speculative_config.draft_model_config
531531
gen_cfg = draft_cfg.try_get_generation_config()
532-
self._suppress_token_ids = gen_cfg.get("suppress_tokens") if gen_cfg else None
532+
suppress_token_ids = gen_cfg.get("suppress_tokens") if gen_cfg else None
533+
self.register_buffer(
534+
"_suppress_token_ids",
535+
(
536+
torch.tensor(
537+
suppress_token_ids,
538+
dtype=torch.long,
539+
device=vllm_config.device_config.device,
540+
)
541+
if suppress_token_ids
542+
else None
543+
),
544+
persistent=False,
545+
)
533546

534547
def embed_input_ids(self, input_ids: torch.Tensor) -> torch.Tensor:
535548
return self.model.embed_input_ids(input_ids)
@@ -581,8 +594,8 @@ def compute_logits(
581594
)
582595
else:
583596
logits = self.logits_processor(self.lm_head, hidden_states)
584-
if logits is not None and self._suppress_token_ids:
585-
logits[:, self._suppress_token_ids] = -float("inf")
597+
if logits is not None and self._suppress_token_ids is not None:
598+
logits.index_fill_(1, self._suppress_token_ids, -float("inf"))
586599
return logits
587600

588601
def get_top_tokens(

vllm/model_executor/models/gemma4_unified.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -346,9 +346,6 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
346346
self.num_redundant_experts = self.language_model.num_redundant_experts
347347
self.set_eplb_state = self.language_model.set_eplb_state
348348

349-
gen_cfg = vllm_config.model_config.try_get_generation_config()
350-
self._suppress_token_ids = gen_cfg.get("suppress_tokens") if gen_cfg else None
351-
352349
# ------------------------------------------------------------------ #
353350
# Multimodal processing (encoder-free overrides)
354351
# ------------------------------------------------------------------ #

0 commit comments

Comments
 (0)