@@ -205,6 +205,8 @@ class ModelType(Enum):
205205
206206 Exaone4 = 0x2800
207207
208+ JiuTian = 0x2900
209+
208210 BCE_Embedding = 0x10000100
209211 BCE_ReRanker = 0x10000101
210212 BGE_M3 = 0x10000102
@@ -7171,6 +7173,26 @@ def get_block(prefix: str):
71717173
71727174 return weights + dac_weights
71737175
7176+
7177+ class JiuTianConverter (BaseConverter ):
7178+ MODEL_TYPE = ModelType .JiuTian
7179+
7180+ @staticmethod
7181+ def dump_config (f , config , ggml_type ):
7182+ assert config .qkv_bias
7183+ dump_llama_like_config (f , config , ggml_type )
7184+
7185+ config_values = [
7186+ config .num_key_value_heads ,
7187+ 1 if config .tie_word_embeddings else 0 ,
7188+ ]
7189+ f .write (struct .pack ("i" * len (config_values ), * config_values ))
7190+ f .write (struct .pack ("<f" , config .rope_theta ))
7191+
7192+ @staticmethod
7193+ def get_weight_names (config ):
7194+ return QWen2Converter .get_weight_names (config )
7195+
71747196def convert_grok_1_base (args , vocab , ggml_type ):
71757197 def ffn_size (emb_size , widening_factor ):
71767198 _ffn_size = int (widening_factor * emb_size ) * 2 // 3
@@ -7758,6 +7780,8 @@ def main():
77587780 ERNIEMoEConverter .convert (config , model_files , vocab , ggml_type , args .save_path )
77597781 elif arch == 'PanguProMoEForCausalLM' :
77607782 PanguMoEConverter .convert (config , model_files , vocab , ggml_type , args .save_path )
7783+ elif arch == 'JiutianForCausalLM' :
7784+ JiuTianConverter .convert (config , model_files , vocab , ggml_type , args .save_path )
77617785 elif arch == 'deepseek-r1-distill-qwen3' :
77627786 QWen3Converter .MODEL_TYPE = ModelType .DeepSeek_R1_Distill_QWen3
77637787 QWen3Converter .convert (config , model_files , vocab , ggml_type , args .save_path )
0 commit comments