From 20d37434911d72b90f4912e93bb39bd3c06bc054 Mon Sep 17 00:00:00 2001 From: Luciano Martins Date: Mon, 20 Apr 2026 19:28:26 -0700 Subject: [PATCH] [Bugfix] Gemma4: fix multimodal embedder norm order to match HF reference (#40411) Signed-off-by: Luciano Martins Co-authored-by: Luciano Martins --- vllm/model_executor/models/gemma4_mm.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/vllm/model_executor/models/gemma4_mm.py b/vllm/model_executor/models/gemma4_mm.py index ff1760dde0..46d0308f4c 100644 --- a/vllm/model_executor/models/gemma4_mm.py +++ b/vllm/model_executor/models/gemma4_mm.py @@ -849,22 +849,23 @@ class Gemma4MultimodalEmbedder(nn.Module): or multimodal_config.hidden_size ) + self.embedding_pre_projection_norm = RMSNorm( + embedding_dim, + eps=self.eps, + has_weight=False, + ) + self.embedding_projection = ReplicatedLinear( embedding_dim, self.text_hidden_size, bias=False, ) - self.embedding_post_projection_norm = RMSNorm( - self.text_hidden_size, - eps=self.eps, - has_weight=False, - ) - def forward(self, inputs_embeds: torch.Tensor) -> torch.Tensor: """Project soft tokens from a multimodal tower into LM space.""" - embs_proj, _ = self.embedding_projection(inputs_embeds) - return self.embedding_post_projection_norm(embs_proj) + embs_normed = self.embedding_pre_projection_norm(inputs_embeds) + embs_proj, _ = self.embedding_projection(embs_normed) + return embs_proj # ---------------------------------------------------------------------------