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
# ---------------------------------------------------------------------------