diff --git a/conversion/gemma.py b/conversion/gemma.py index 924d8e784..ab2d90610 100644 --- a/conversion/gemma.py +++ b/conversion/gemma.py @@ -999,6 +999,8 @@ class Gemma4VisionAudioModel(MmprojModel): assert self.hparams_vision is not None self.gguf_writer.add_clip_vision_projector_type(gguf.VisionProjectorType.GEMMA4V) self.gguf_writer.add_vision_attention_layernorm_eps(self.hparams_vision.get("layer_norm_eps", 1e-6)) + assert self.hparams_vision.get("hidden_activation", "gelu_pytorch_tanh") == "gelu_pytorch_tanh" + self.gguf_writer.add_vision_use_gelu(True) # audio params if self.has_audio_encoder: diff --git a/tools/mtmd/clip.cpp b/tools/mtmd/clip.cpp index 3a4dd682a..41aba280b 100644 --- a/tools/mtmd/clip.cpp +++ b/tools/mtmd/clip.cpp @@ -1735,6 +1735,8 @@ struct clip_model_loader { case PROJECTOR_TYPE_GEMMA4UV: { hparams.rope_theta = 100.0f; + hparams.ffn_op = FFN_GELU; + log_ffn_op = "gelu"; hparams.n_merge = 3; // pooling_kernel_size hparams.image_resize_algo = RESIZE_ALGO_BICUBIC; get_u32(KEY_PROJ_SCALE_FACTOR, hparams.n_merge, false);