@@ -420,6 +420,9 @@ def get_model_part_names(dir_model: Path, prefix: str, suffix: str) -> list[str]
420420 for filename in os .listdir (dir_model ):
421421 if filename .startswith (prefix ) and filename .endswith (suffix ):
422422 part_names .append (filename )
423+ # TODO remove later
424+ elif filename .endswith (suffix ):
425+ part_names .append (filename )
423426
424427 part_names .sort ()
425428
@@ -607,13 +610,14 @@ def get_vocab_base(self) -> tuple[list[str], list[int], str]:
607610 toktypes : list [int ] = []
608611
609612 from transformers import AutoTokenizer
610- tokenizer = AutoTokenizer .from_pretrained (self .dir_model )
611- vocab_size = self .hparams .get ("vocab_size" , len (tokenizer .vocab ))
612- assert max (tokenizer .vocab .values ()) < vocab_size
613+ tokenizer = AutoTokenizer .from_pretrained (self .dir_model , trust_remote_code = True )
614+ vocab = getattr (tokenizer , 'vocab' , tokenizer .get_vocab ())
615+ vocab_size = self .hparams .get ("vocab_size" , len (vocab ))
616+ assert max (vocab .values ()) < vocab_size
613617
614618 tokpre = self .get_vocab_base_pre (tokenizer )
615619
616- reverse_vocab = {id_ : encoded_tok for encoded_tok , id_ in tokenizer . vocab .items ()}
620+ reverse_vocab = {id_ : encoded_tok for encoded_tok , id_ in vocab .items ()}
617621 added_vocab = tokenizer .get_added_vocab ()
618622
619623 added_tokens_decoder = tokenizer .added_tokens_decoder
@@ -1218,8 +1222,12 @@ def __init__(self, *args, **kwargs):
12181222 self .tensor_map = gguf .get_tensor_name_map (gguf .MODEL_ARCH .MMPROJ , self .block_count )
12191223
12201224 # load preprocessor config
1221- with open (self .dir_model / "preprocessor_config.json" , "r" , encoding = "utf-8" ) as f :
1222- self .preprocessor_config = json .load (f )
1225+ preprocess_config_file = self .dir_model / "preprocessor_config.json"
1226+ if preprocess_config_file .exists ():
1227+ with open (preprocess_config_file , "r" , encoding = "utf-8" ) as f :
1228+ self .preprocessor_config = json .load (f )
1229+ else :
1230+ self .preprocessor_config = dict (image_mean = [0.485 , 0.456 , 0.406 ], image_std = [0.229 , 0.224 , 0.225 ])
12231231
12241232 def get_vision_config (self ) -> dict [str , Any ] | None :
12251233 return self .global_config .get ("vision_config" )
@@ -3115,6 +3123,10 @@ def set_gguf_parameters(self):
31153123
31163124 def modify_tensors (self , data_torch : Tensor , name : str , bid : int | None ) -> Iterable [tuple [str , Tensor ]]:
31173125 # process the experts separately
3126+ name = name .replace ("language_model." , "" ) # InternVL
3127+ if name .startswith ("mlp" ) or name .startswith ("vision_model" ):
3128+ # skip visual tensors
3129+ return []
31183130 if name .find ("experts" ) != - 1 :
31193131 n_experts = self .hparams ["num_experts" ]
31203132 assert bid is not None
0 commit comments