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]:
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):