@@ -3538,16 +3538,25 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter
35383538 return super ().modify_tensors (data_torch , name , bid )
35393539
35403540
3541+ < << << << HEAD
35413542@ModelBase .register ("Qwen3VLForConditionalGeneration" , "Qwen3VLMoeForConditionalGeneration" )
35423543class Qwen3VLVisionModel (MmprojModel ):
3544+ == == == =
3545+ @ModelBase .register ("Qwen3VLMoeForConditionalGeneration" )
3546+ class Qwen3VLMoeVisionModel (MmprojModel ):
3547+ > >> >> >> remote - JJJYmmm / qwen3vl - 1022
35433548 def __init__ (self , * args , ** kwargs ):
35443549 super ().__init__ (* args , ** kwargs )
35453550 assert self .has_vision_encoder
35463551 assert self .hparams_vision is not None
35473552
35483553 # Compute image_size if not present
35493554 if "image_size" not in self .hparams_vision :
3555+ < << << << HEAD
35503556 # For Qwen3VL/Qwen3VLMoe, compute from num_position_embeddings
3557+ == == == =
3558+ # For Qwen3VLMoe, compute from num_position_embeddings
3559+ >> >> >> > remote - JJJYmmm / qwen3vl - 1022
35513560 num_pos = self .hparams_vision .get ("num_position_embeddings" , 2304 )
35523561 patch_size = self .hparams_vision .get ("patch_size" , 16 )
35533562 # num_position_embeddings = (image_size / patch_size) ** 2
@@ -3592,10 +3601,15 @@ def set_gguf_parameters(self):
35923601 self .gguf_writer .add_vision_deepstack_layers (self .deepstack_layers )
35933602
35943603 def modify_tensors (self , data_torch : Tensor , name : str , bid : int | None ) -> Iterable [tuple [str , Tensor ]]:
3604+ < << << << HEAD
35953605 # Skip text model tensors - they go in the text model file
35963606 if name .startswith ("model.language_model." ) or name .startswith ("lm_head." ):
35973607 return []
35983608
3609+ == == == =
3610+ del bid # unused
3611+
3612+ > >> >> >> remote - JJJYmmm / qwen3vl - 1022
35993613 if name .startswith ("model.visual." ):
36003614 name = name .replace ("model.visual." , "visual." , 1 )
36013615
@@ -3652,8 +3666,13 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter
36523666 ]
36533667
36543668 if name == "visual.patch_embed.proj.bias" :
3669+ < << << << HEAD
36553670 # Include the bias - it's used by the C++ code
36563671 return [(gguf .TENSOR_NAMES [gguf .MODEL_TENSOR .V_ENC_EMBD_PATCH ] + ".bias" , data_torch )]
3672+ == == == =
3673+ # Skip bias for Qwen3VL - the C++ code expects it to be null
3674+ return []
3675+ >> >> >> > remote - JJJYmmm / qwen3vl - 1022
36573676
36583677 if name .startswith ("visual." ):
36593678 if ".qkv." in name :
@@ -3676,8 +3695,12 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter
36763695
36773696 return [(self .map_tensor_name (name ), data_torch )]
36783697
3698+ < << << << HEAD
36793699 # Fall back to parent class for other tensors
36803700 return super ().modify_tensors (data_torch , name , bid )
3701+ == == == =
3702+ return []
3703+ >> >> >> > remote - JJJYmmm / qwen3vl - 1022
36813704
36823705@ModelBase .register ("InternVisionModel" )
36833706class InternVisionModel (MmprojModel ):
@@ -4003,6 +4026,7 @@ def set_vocab(self):
40034026 super ().set_vocab ()
40044027
40054028
4029+ < << << << HEAD
40064030@ModelBase .register ("Qwen3VLForConditionalGeneration" )
40074031class Qwen3VLTextModel (Qwen3Model ):
40084032 model_arch = gguf .MODEL_ARCH .QWEN3VL
@@ -4032,6 +4056,8 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter
40324056 return super ().modify_tensors (data_torch , name , bid )
40334057
40344058
4059+ == == == =
4060+ >> >> >> > remote - JJJYmmm / qwen3vl - 1022
40354061@ModelBase .register ("Qwen3VLMoeForConditionalGeneration" )
40364062class Qwen3VLMoeTextModel (Qwen3MoeModel ):
40374063 model_arch = gguf .MODEL_ARCH .QWEN3VLMOE
@@ -4053,13 +4079,16 @@ def set_gguf_parameters(self):
40534079
40544080 logger .info (f"MRoPE sections: { mrope_section [:4 ]} " )
40554081
4082+ < << << << HEAD
40564083 def modify_tensors (self , data_torch : Tensor , name : str , bid : int | None ) -> Iterable [tuple [str , Tensor ]]:
40574084 # Skip vision tensors - they go in the mmproj file
40584085 if name .startswith ("model.visual." ):
40594086 return []
40604087
40614088 return super ().modify_tensors (data_torch , name , bid )
40624089
4090+ == == == =
4091+ >> >> >> > remote - JJJYmmm / qwen3vl - 1022
40634092
40644093@ModelBase .register ("GPT2LMHeadModel" )
40654094class GPT2Model (TextModel ):
0 commit comments