MCPcopy Create free account
hub / github.com/microsoft/BitNet / OutputFile

Class OutputFile

utils/convert-ms-to-gguf-bitnet.py:1146–1344  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1144
1145
1146class OutputFile:
1147 def __init__(self, fname_out: Path, endianess:gguf.GGUFEndian = gguf.GGUFEndian.LITTLE):
1148 self.gguf = gguf.GGUFWriter(fname_out, gguf.MODEL_ARCH_NAMES[ARCH], endianess=endianess)
1149
1150 def add_meta_arch(self, params: Params) -> None:
1151 name = "bitnet"
1152
1153 # TODO: better logic to determine model name
1154 if params.n_ctx == 4096:
1155 name = "bitnet2b_2501"
1156 elif params.path_model is not None:
1157 name = str(params.path_model.parent).split('/')[-1]
1158
1159 self.gguf.add_name (name)
1160 self.gguf.add_vocab_size (params.n_vocab)
1161 self.gguf.add_context_length (params.n_ctx)
1162 self.gguf.add_embedding_length (params.n_embd)
1163 self.gguf.add_block_count (params.n_layer)
1164 self.gguf.add_feed_forward_length (params.n_ff)
1165 self.gguf.add_rope_dimension_count(params.n_embd // params.n_head)
1166 self.gguf.add_head_count (params.n_head)
1167 self.gguf.add_head_count_kv (params.n_head_kv)
1168 self.gguf.add_add_bos_token (True)
1169
1170 if params.n_experts:
1171 self.gguf.add_expert_count(params.n_experts)
1172
1173 if params.n_experts_used:
1174 self.gguf.add_expert_used_count(params.n_experts_used)
1175
1176 if params.f_norm_eps:
1177 self.gguf.add_layer_norm_rms_eps(params.f_norm_eps)
1178 else:
1179 raise ValueError('f_norm_eps is None')
1180
1181 if params.f_rope_freq_base is not None:
1182 self.gguf.add_rope_freq_base(params.f_rope_freq_base)
1183
1184 if params.n_orig_ctx is not None:
1185 self.gguf.add_rope_scaling_orig_ctx_len(params.n_orig_ctx)
1186
1187 if params.rope_finetuned is not None:
1188 self.gguf.add_rope_scaling_finetuned(params.rope_finetuned)
1189
1190 if params.ftype is not None:
1191 self.gguf.add_file_type(params.ftype)
1192
1193 def extract_vocabulary_from_model(self, vocab: Vocab) -> tuple[list[bytes], list[float], list[gguf.TokenType]]:
1194 tokens = []
1195 scores = []
1196 toktypes = []
1197
1198 # NOTE: `all_tokens` returns the base vocabulary and added tokens
1199 for text, score, toktype in vocab.all_tokens():
1200 tokens.append(text)
1201 scores.append(score)
1202 toktypes.append(toktype)
1203

Callers 2

write_vocab_onlyMethod · 0.70
write_allMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected