@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 20d3743491
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 4, 22:30 UTC

[Bugfix] Gemma4: fix multimodal embedder norm order to match HF reference (#40411)

Signed-off-by: Luciano Martins <lucianommartins@users.noreply.github.com> Co-authored-by: Luciano Martins <lucianommartins@users.noreply.github.com>

Luciano Martins committed Apr 20, 2026 at 19:28 UTC 20d37434911d72b90f4912e93bb39bd3c06bc054
1 file changed +9 -8
vllm/model_executor/models/gemma4_mm.py
+9 -8
@@ -849,22 +849,23 @@ class Gemma4MultimodalEmbedder(nn.Module):
849 or multimodal_config.hidden_size
850 )
851
852 - self.embedding_projection = ReplicatedLinear(
852 + self.embedding_pre_projection_norm = RMSNorm(
853 embedding_dim,
854 - self.text_hidden_size,
855 - bias=False,
854 + eps=self.eps,
855 + has_weight=False,
856 )
857
858 - self.embedding_post_projection_norm = RMSNorm(
858 + self.embedding_projection = ReplicatedLinear(
859 + embedding_dim,
860 self.text_hidden_size,
860 - eps=self.eps,
861 - has_weight=False,
861 + bias=False,
862 )
863
864 def forward(self, inputs_embeds: torch.Tensor) -> torch.Tensor:
865 """Project soft tokens from a multimodal tower into LM space."""
866 - embs_proj, _ = self.embedding_projection(inputs_embeds)
867 - return self.embedding_post_projection_norm(embs_proj)
866 + embs_normed = self.embedding_pre_projection_norm(inputs_embeds)
867 + embs_proj, _ = self.embedding_projection(embs_normed)
868 + return embs_proj
869
870
871 # ---------------------------------------------------------------------------