Skip to content

Commit 1706a6d

Browse files
ddh0ngxson
andauthored
convert : support Glm4MoeLite (#18936)
* initial commit for branch * add glm-4.7-flash, move tokenizer hash * use `glm4` pretok * silence flake8 E302 (CI) * apply review feedback * add <|user|> as eog * also add EOG `<|observation|>` * revert llama-vocab * inherit vocab from glm4 --------- Co-authored-by: Xuan Son Nguyen <son@huggingface.co>
1 parent 959ecf7 commit 1706a6d

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

convert_hf_to_gguf.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,9 @@ def get_vocab_base_pre(self, tokenizer) -> str:
10781078
if chkhsh == "b3d1dd861f1d4c5c0d2569ce36baf3f90fe8a102db3de50dd71ff860d91be3df":
10791079
# ref: https://huggingface.co/aari1995/German_Semantic_V3
10801080
res = "jina-v2-de"
1081+
if chkhsh == "cdf5f35325780597efd76153d4d1c16778f766173908894c04afc20108536267":
1082+
# ref: https://huggingface.co/zai-org/GLM-4.7-Flash
1083+
res = "glm4"
10811084
if chkhsh == "0ef9807a4087ebef797fc749390439009c3b9eda9ad1a097abbe738f486c01e5":
10821085
# ref: https://huggingface.co/meta-llama/Meta-Llama-3-8B
10831086
res = "llama-bpe"
@@ -7458,7 +7461,7 @@ def prepare_tensors(self):
74587461
"DeepseekV3ForCausalLM",
74597462
"KimiVLForConditionalGeneration",
74607463
"YoutuForCausalLM",
7461-
"YoutuVLForConditionalGeneration"
7464+
"YoutuVLForConditionalGeneration",
74627465
)
74637466
class DeepseekV2Model(TextModel):
74647467
model_arch = gguf.MODEL_ARCH.DEEPSEEK2
@@ -8446,6 +8449,32 @@ def prepare_tensors(self):
84468449
raise ValueError(f"Unprocessed experts: {experts}")
84478450

84488451

8452+
@ModelBase.register("Glm4MoeLiteForCausalLM")
8453+
class Glm4MoeLiteModel(DeepseekV2Model):
8454+
model_arch = gguf.MODEL_ARCH.DEEPSEEK2
8455+
8456+
# copied from Glm4MoeModel
8457+
def set_vocab(self):
8458+
from transformers import AutoTokenizer
8459+
8460+
tokenizer = AutoTokenizer.from_pretrained(self.dir_model)
8461+
special_vocab = gguf.SpecialVocab(self.dir_model, load_merges=True)
8462+
tokens, toktypes, tokpre = self.get_vocab_base()
8463+
self.gguf_writer.add_tokenizer_model("gpt2")
8464+
self.gguf_writer.add_tokenizer_pre(tokpre)
8465+
self.gguf_writer.add_token_list(tokens)
8466+
self.gguf_writer.add_token_types(toktypes)
8467+
8468+
# Special tokens
8469+
# Note: Using <|endoftext|> (151329) for eot causes endless generation
8470+
special_vocab._set_special_token("bos", tokenizer.get_added_vocab()["[gMASK]"]) # 151331
8471+
special_vocab._set_special_token("eot", tokenizer.get_added_vocab()["<|user|>"]) # 151336
8472+
special_vocab._set_special_token("unk", tokenizer.get_added_vocab()["<|endoftext|>"]) # 151329
8473+
special_vocab._set_special_token("eom", tokenizer.get_added_vocab()["<|observation|>"]) # 151338
8474+
8475+
special_vocab.add_to_gguf(self.gguf_writer)
8476+
8477+
84498478
@ModelBase.register("GlmForCausalLM", "ChatGLMModel", "ChatGLMForConditionalGeneration")
84508479
class ChatGLMModel(TextModel):
84518480
model_arch = gguf.MODEL_ARCH.CHATGLM

convert_hf_to_gguf_update.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ class TOKENIZER_TYPE(IntEnum):
170170
{"name": "grok-2", "tokt": TOKENIZER_TYPE.BPE, "repo": "https://huggingface.co/alvarobartt/grok-2-tokenizer", "chkhsh": "66b8d4e19ab16c3bfd89bce5d785fb7e0155e8648708a1f42077cb9fe002c273"},
171171
# jina-v2-de variants
172172
{"name": "jina-v2-de", "tokt": TOKENIZER_TYPE.BPE, "repo": "https://huggingface.co/aari1995/German_Semantic_V3", "chkhsh": "b3d1dd861f1d4c5c0d2569ce36baf3f90fe8a102db3de50dd71ff860d91be3df"},
173+
{"name": "glm4", "tokt": TOKENIZER_TYPE.BPE, "repo": "https://huggingface.co/zai-org/GLM-4.7-Flash", "chkhsh": "cdf5f35325780597efd76153d4d1c16778f766173908894c04afc20108536267"},
173174
]
174175

175176

0 commit comments

Comments
 (0)