@@ -517,7 +517,11 @@ public class Gemma4VL: Module, VLMModel, KVCacheDimensionProvider, LayerPartitio
517517 // This MUST be done because we explicitly allocated a separate lm_head linear layer!
518518 if processed [ " lm_head.weight " ] == nil || config. tieWordEmbeddings {
519519 // Check both prefixed and flat keys to be robust against different sanitization outputs
520- let embedKeys = [ " model.embed_tokens.weight " , " embed_tokens.weight " , " model.embedTokens.weight " , " embedTokens.weight " ]
520+ let prefix = " language_model. "
521+ let embedKeys = [
522+ " \( prefix) model.embed_tokens.weight " , " \( prefix) embed_tokens.weight " , " \( prefix) model.embedTokens.weight " , " \( prefix) embedTokens.weight " ,
523+ " model.embed_tokens.weight " , " embed_tokens.weight " , " model.embedTokens.weight " , " embedTokens.weight "
524+ ]
521525
522526 for key in embedKeys {
523527 if let embedWeights = processed [ key] {
@@ -528,15 +532,21 @@ public class Gemma4VL: Module, VLMModel, KVCacheDimensionProvider, LayerPartitio
528532 }
529533
530534 // Repeat for scales/biases if present (quantized models)
531- let scaleKeys = [ " model.embed_tokens.scales " , " embed_tokens.scales " , " model.embedTokens.scales " , " embedTokens.scales " ]
535+ let scaleKeys = [
536+ " \( prefix) model.embed_tokens.scales " , " \( prefix) embed_tokens.scales " , " \( prefix) model.embedTokens.scales " , " \( prefix) embedTokens.scales " ,
537+ " model.embed_tokens.scales " , " embed_tokens.scales " , " model.embedTokens.scales " , " embedTokens.scales "
538+ ]
532539 for key in scaleKeys {
533540 if let embedScales = processed [ key] {
534541 processed [ " lm_head.scales " ] = embedScales
535542 break
536543 }
537544 }
538545
539- let biasKeys = [ " model.embed_tokens.biases " , " embed_tokens.biases " , " model.embedTokens.biases " , " embedTokens.biases " ]
546+ let biasKeys = [
547+ " \( prefix) model.embed_tokens.biases " , " \( prefix) embed_tokens.biases " , " \( prefix) model.embedTokens.biases " , " \( prefix) embedTokens.biases " ,
548+ " model.embed_tokens.biases " , " embed_tokens.biases " , " model.embedTokens.biases " , " embedTokens.biases "
549+ ]
540550 for key in biasKeys {
541551 if let embedBiases = processed [ key] {
542552 processed [ " lm_head.biases " ] = embedBiases
0 commit comments