|
|
@@ -423,19 +423,19 @@ class ModelBase:
|
|
|
try:
|
|
|
# for security reason, we don't allow loading remote code by default
|
|
|
# if a model need remote code, we will fallback to config.json
|
|
|
- return AutoConfig.from_pretrained(dir_model, trust_remote_code=False).to_dict()
|
|
|
+ config = AutoConfig.from_pretrained(dir_model, trust_remote_code=False).to_dict()
|
|
|
except Exception as e:
|
|
|
logger.warning(f"Failed to load model config from {dir_model}: {e}")
|
|
|
logger.warning("Trying to load config.json instead")
|
|
|
with open(dir_model / "config.json", "r", encoding="utf-8") as f:
|
|
|
config = json.load(f)
|
|
|
- if "llm_config" in config:
|
|
|
- # rename for InternVL
|
|
|
- config["text_config"] = config["llm_config"]
|
|
|
- if "thinker_config" in config:
|
|
|
- # rename for Qwen2.5-Omni
|
|
|
- config["text_config"] = config["thinker_config"]["text_config"]
|
|
|
- return config
|
|
|
+ if "llm_config" in config:
|
|
|
+ # rename for InternVL
|
|
|
+ config["text_config"] = config["llm_config"]
|
|
|
+ if "thinker_config" in config:
|
|
|
+ # rename for Qwen2.5-Omni
|
|
|
+ config["text_config"] = config["thinker_config"]["text_config"]
|
|
|
+ return config
|
|
|
|
|
|
@classmethod
|
|
|
def register(cls, *names: str) -> Callable[[AnyModel], AnyModel]:
|
|
|
@@ -1207,7 +1207,7 @@ class MmprojModel(ModelBase):
|
|
|
self.gguf_writer.add_audio_block_count(self.find_aparam(self.n_block_keys))
|
|
|
self.gguf_writer.add_audio_head_count(self.find_aparam(["num_attention_heads"]))
|
|
|
|
|
|
- else:
|
|
|
+ if not self.has_vision_encoder and not self.has_audio_encoder:
|
|
|
raise ValueError("MmprojModel must have either vision or audio encoder")
|
|
|
|
|
|
def write_vocab(self):
|