Skip to content

Commit 9a6062d

Browse files
committed
covert-hf-to-gguf.py: refactor to use get_model_name()
1 parent 3189f15 commit 9a6062d

File tree

1 file changed

+15
-36
lines changed

1 file changed

+15
-36
lines changed

convert-hf-to-gguf.py

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class SentencePieceTokenTypes(IntEnum):
8484
class Model:
8585
_model_classes: dict[str, type[Model]] = {}
8686

87+
model_name: str
8788
dir_model: Path
8889
ftype: int
8990
is_big_endian: bool
@@ -132,20 +133,28 @@ def __init__(self, dir_model: Path, ftype: gguf.LlamaFileType, fname_out: Path,
132133
logger.info(f"choosing --outtype bf16 from first tensor type ({first_tensor.dtype})")
133134
self.ftype = gguf.LlamaFileType.MOSTLY_BF16
134135

135-
# Generate default filename based on model specification and available metadata
136-
def get_model_name(metadata, dir_model):
136+
# Set model name based on latest metadata either provided or calculated from environment
137+
def get_model_name(metadata, hyperparameters, dir_model, model_arch):
137138
if metadata is not None and metadata.name is not None:
139+
# Explicit Metadata Was Provided By User
138140
return metadata.name
141+
elif hyperparameters is not None and "model_type" in hyperparameters:
142+
# Hugging Face Hyperparameter Model Type Already Provided
143+
return hyperparameters["model_type"]
139144
elif dir_model is not None and dir_model.name is not None:
145+
# Use directory folder name
140146
return dir_model.name
141-
return None
147+
else:
148+
return gguf.MODEL_ARCH_NAMES[model_arch]
149+
self.model_name = get_model_name(self.metadata, self.hparams, self.dir_model, self.model_arch)
150+
151+
# Generate default filename based on model specification and available metadata
142152
def extract_encoding_scheme(ftype):
143153
# Extracts and converts the encoding scheme from the given file type name.
144154
# e.g. 'gguf.LlamaFileType.ALL_F32' --> 'F32'
145155
return ftype.name.partition("_")[2].upper()
146-
model_name = get_model_name(metadata, dir_model)
147156
expert_count = self.hparams["num_local_experts"] if "num_local_experts" in self.hparams else None
148-
self.fname_default = f"{gguf.naming_convention(model_name, self.metadata.version, expert_count, self.parameter_count(), extract_encoding_scheme(self.ftype))}"
157+
self.fname_default = f"{gguf.naming_convention(self.model_name, self.metadata.version, expert_count, self.parameter_count(), extract_encoding_scheme(self.ftype))}"
149158

150159
# Filename Output
151160
if fname_out is not None:
@@ -244,15 +253,7 @@ def map_tensor_name(self, name: str, try_suffixes: Sequence[str] = (".weight", "
244253
return new_name
245254

246255
def set_gguf_meta_model(self):
247-
248-
# Metadata About The Model And Its Provenence
249-
name = "LLaMA"
250-
if self.metadata is not None and self.metadata.name is not None:
251-
name = metadata.name
252-
elif self.dir_model is not None:
253-
name = self.dir_model.name
254-
255-
self.gguf_writer.add_name(name)
256+
self.gguf_writer.add_name(self.model_name)
256257

257258
if self.metadata is not None:
258259
if self.metadata.author is not None:
@@ -770,7 +771,6 @@ class GPTNeoXModel(Model):
770771
def set_gguf_parameters(self):
771772
block_count = self.hparams["num_hidden_layers"]
772773

773-
self.gguf_writer.add_name(self.dir_model.name)
774774
self.gguf_writer.add_context_length(self.hparams["max_position_embeddings"])
775775
self.gguf_writer.add_embedding_length(self.hparams["hidden_size"])
776776
self.gguf_writer.add_block_count(block_count)
@@ -826,7 +826,6 @@ class BloomModel(Model):
826826
model_arch = gguf.MODEL_ARCH.BLOOM
827827

828828
def set_gguf_parameters(self):
829-
self.gguf_writer.add_name("Bloom")
830829
n_embed = self.hparams.get("hidden_size", self.hparams.get("n_embed"))
831830
n_head = self.hparams.get("n_head", self.hparams.get("num_attention_heads"))
832831
self.gguf_writer.add_context_length(self.hparams.get("seq_length", n_embed))
@@ -903,7 +902,6 @@ def set_vocab(self):
903902

904903
def set_gguf_parameters(self):
905904
block_count = self.hparams["n_layers"]
906-
self.gguf_writer.add_name(self.dir_model.name)
907905
self.gguf_writer.add_context_length(self.hparams["max_seq_len"])
908906
self.gguf_writer.add_embedding_length(self.hparams["d_model"])
909907
self.gguf_writer.add_block_count(block_count)
@@ -955,7 +953,6 @@ def set_gguf_parameters(self):
955953
raise ValueError("gguf: can not find ctx length parameter.")
956954

957955
self.gguf_writer.add_file_type(self.ftype)
958-
self.gguf_writer.add_name(self.dir_model.name)
959956
self.gguf_writer.add_source_hf_repo(hf_repo)
960957
self.gguf_writer.add_tensor_data_layout("Meta AI original pth")
961958
self.gguf_writer.add_context_length(ctx_length)
@@ -992,7 +989,6 @@ def set_gguf_parameters(self):
992989
else:
993990
raise ValueError("gguf: can not find ctx length parameter.")
994991

995-
self.gguf_writer.add_name(self.dir_model.name)
996992
self.gguf_writer.add_source_hf_repo(hf_repo)
997993
self.gguf_writer.add_tensor_data_layout("Meta AI original pth")
998994
self.gguf_writer.add_context_length(ctx_length)
@@ -1115,7 +1111,6 @@ def set_gguf_parameters(self):
11151111
else:
11161112
raise ValueError("gguf: can not find ctx length parameter.")
11171113

1118-
self.gguf_writer.add_name(self.dir_model.name)
11191114
self.gguf_writer.add_source_hf_repo(hf_repo)
11201115
self.gguf_writer.add_tensor_data_layout("Meta AI original pth")
11211116
self.gguf_writer.add_context_length(ctx_length)
@@ -1175,7 +1170,6 @@ def set_gguf_parameters(self):
11751170
if n_head_kv is None:
11761171
n_head_kv = self.hparams.get("n_head_kv", 1) # old name
11771172

1178-
self.gguf_writer.add_name("Falcon")
11791173
self.gguf_writer.add_context_length(2048) # not in config.json
11801174
self.gguf_writer.add_tensor_data_layout("jploski") # qkv tensor transform
11811175
self.gguf_writer.add_embedding_length(self.hparams["hidden_size"])
@@ -1220,7 +1214,6 @@ class StarCoderModel(Model):
12201214
def set_gguf_parameters(self):
12211215
block_count = self.hparams["n_layer"]
12221216

1223-
self.gguf_writer.add_name("StarCoder")
12241217
self.gguf_writer.add_context_length(self.hparams["n_positions"])
12251218
self.gguf_writer.add_embedding_length(self.hparams["n_embd"])
12261219
self.gguf_writer.add_feed_forward_length(4 * self.hparams["n_embd"])
@@ -1256,7 +1249,6 @@ def set_gguf_parameters(self):
12561249

12571250
block_count = self.hparams["n_layer"]
12581251

1259-
self.gguf_writer.add_name("Refact")
12601252
# refact uses Alibi. So this is from config.json which might be used by training.
12611253
self.gguf_writer.add_context_length(self.hparams["n_positions"])
12621254
self.gguf_writer.add_embedding_length(self.hparams["n_embd"])
@@ -1311,7 +1303,6 @@ def set_gguf_parameters(self):
13111303
hparams = self.hparams
13121304
block_count = hparams["num_hidden_layers"]
13131305

1314-
self.gguf_writer.add_name(self.dir_model.name)
13151306
self.gguf_writer.add_context_length(hparams["max_position_embeddings"])
13161307
self.gguf_writer.add_embedding_length(hparams["hidden_size"])
13171308
self.gguf_writer.add_block_count(block_count)
@@ -1501,7 +1492,6 @@ def __init__(self, *args, **kwargs):
15011492

15021493
def set_gguf_parameters(self):
15031494
super().set_gguf_parameters()
1504-
self.gguf_writer.add_name("Grok")
15051495

15061496
_experts: list[dict[str, Tensor]] | None = None
15071497

@@ -1550,7 +1540,6 @@ class DbrxModel(Model):
15501540
def set_gguf_parameters(self):
15511541
ffn_config = self.hparams["ffn_config"]
15521542
attn_config = self.hparams["attn_config"]
1553-
self.gguf_writer.add_name(self.hparams["model_type"])
15541543
self.gguf_writer.add_block_count(self.hparams["n_layers"])
15551544

15561545
self.gguf_writer.add_context_length(self.hparams["max_seq_len"])
@@ -1620,7 +1609,6 @@ class MiniCPMModel(Model):
16201609

16211610
def set_gguf_parameters(self):
16221611
block_count = self.hparams["num_hidden_layers"]
1623-
self.gguf_writer.add_name("MiniCPM")
16241612
self.gguf_writer.add_context_length(self.hparams["max_position_embeddings"])
16251613
self.gguf_writer.add_embedding_length(self.hparams["hidden_size"])
16261614
self.gguf_writer.add_block_count(block_count)
@@ -1690,7 +1678,6 @@ def set_vocab(self):
16901678
self._set_vocab_qwen()
16911679

16921680
def set_gguf_parameters(self):
1693-
self.gguf_writer.add_name("Qwen")
16941681
self.gguf_writer.add_context_length(self.hparams["max_position_embeddings"])
16951682
self.gguf_writer.add_block_count(self.hparams["num_hidden_layers"])
16961683
self.gguf_writer.add_embedding_length(self.hparams["hidden_size"])
@@ -1775,7 +1762,6 @@ class GPT2Model(Model):
17751762
model_arch = gguf.MODEL_ARCH.GPT2
17761763

17771764
def set_gguf_parameters(self):
1778-
self.gguf_writer.add_name(self.dir_model.name)
17791765
self.gguf_writer.add_block_count(self.hparams["n_layer"])
17801766
self.gguf_writer.add_context_length(self.hparams["n_ctx"])
17811767
self.gguf_writer.add_embedding_length(self.hparams["n_embd"])
@@ -1818,7 +1804,6 @@ def set_gguf_parameters(self):
18181804
n_embd = self.find_hparam(["hidden_size", "n_embd"])
18191805
n_head = self.find_hparam(["num_attention_heads", "n_head"])
18201806

1821-
self.gguf_writer.add_name("Phi2")
18221807
self.gguf_writer.add_context_length(self.find_hparam(["n_positions", "max_position_embeddings"]))
18231808

18241809
self.gguf_writer.add_embedding_length(n_embd)
@@ -1940,7 +1925,6 @@ def set_gguf_parameters(self):
19401925
orig_max_pos_embds = self.find_hparam(["original_max_position_embeddings"])
19411926
rope_dims = n_embd // n_head
19421927

1943-
self.gguf_writer.add_name("Phi3")
19441928
self.gguf_writer.add_context_length(max_pos_embds)
19451929
self.gguf_writer.add_rope_scaling_orig_ctx_len(orig_max_pos_embds)
19461930
self.gguf_writer.add_embedding_length(n_embd)
@@ -1997,7 +1981,6 @@ def set_gguf_parameters(self):
19971981
hparams = self.hparams
19981982
block_count = hparams["num_hidden_layers"]
19991983

2000-
self.gguf_writer.add_name("PLaMo")
20011984
self.gguf_writer.add_context_length(4096) # not in config.json
20021985
self.gguf_writer.add_embedding_length(hparams["hidden_size"])
20031986
self.gguf_writer.add_feed_forward_length(hparams["intermediate_size"])
@@ -2042,7 +2025,6 @@ class CodeShellModel(Model):
20422025
def set_gguf_parameters(self):
20432026
block_count = self.hparams["n_layer"]
20442027

2045-
self.gguf_writer.add_name("CodeShell")
20462028
self.gguf_writer.add_context_length(self.hparams["n_positions"])
20472029
self.gguf_writer.add_embedding_length(self.hparams["n_embd"])
20482030
self.gguf_writer.add_feed_forward_length(4 * self.hparams["n_embd"])
@@ -2176,7 +2158,6 @@ def _hf_permute_qk(self, weights, n_head: int, n_head_kv: int):
21762158
.reshape(weights.shape))
21772159

21782160
def set_gguf_parameters(self):
2179-
self.gguf_writer.add_name("InternLM2")
21802161
self.gguf_writer.add_context_length(self.hparams["max_position_embeddings"])
21812162
self.gguf_writer.add_block_count(self.hparams["num_hidden_layers"])
21822163
self.gguf_writer.add_embedding_length(self.hparams["hidden_size"])
@@ -2342,7 +2323,6 @@ def set_gguf_parameters(self):
23422323
hparams = self.hparams
23432324
block_count = hparams["num_hidden_layers"]
23442325

2345-
self.gguf_writer.add_name(self.dir_model.name)
23462326
self.gguf_writer.add_context_length(hparams["max_position_embeddings"])
23472327
self.gguf_writer.add_embedding_length(hparams["hidden_size"])
23482328
self.gguf_writer.add_block_count(block_count)
@@ -2442,7 +2422,6 @@ def set_gguf_parameters(self):
24422422
# Fail early for models which don't have a block expansion factor of 2
24432423
assert d_inner == 2 * d_model
24442424

2445-
self.gguf_writer.add_name(self.dir_model.name)
24462425
self.gguf_writer.add_context_length(2**20) # arbitrary value; for those who use the default
24472426
self.gguf_writer.add_embedding_length(d_model)
24482427
self.gguf_writer.add_feed_forward_length(0) # unused, but seemingly required when loading

0 commit comments

Comments
 (0)