MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / OutputFile

Class OutputFile

convert.py:837–981  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

835
836
837class OutputFile:
838 def __init__(self, fname_out: Path, arch: gguf.MODEL_ARCH, endianess:gguf.GGUFEndian=gguf.GGUFEndian.LITTLE) -> None:
839 self.gguf = gguf.GGUFWriter(fname_out, gguf.MODEL_ARCH_NAMES[arch], endianess=endianess)
840
841 def add_meta_arch(self, params: Params) -> None:
842 name = "LLaMA"
843
844 # TODO: better logic to determine model name
845 if params.n_ctx == 4096:
846 name = "LLaMA v2"
847 elif params.path_model is not None:
848 name = str(params.path_model).split('/')[-1]
849
850 self.gguf.add_name (name)
851 self.gguf.add_context_length (params.n_ctx)
852 self.gguf.add_embedding_length (params.n_embd)
853 self.gguf.add_block_count (params.n_layer)
854 self.gguf.add_feed_forward_length (params.n_ff)
855 self.gguf.add_rope_dimension_count(params.n_embd // params.n_head)
856 self.gguf.add_head_count (params.n_head)
857 self.gguf.add_head_count_kv (params.n_head_kv)
858 self.gguf.add_layer_norm_rms_eps (params.f_norm_eps)
859
860 if params.f_rope_freq_base is not None:
861 self.gguf.add_rope_freq_base(params.f_rope_freq_base)
862
863 if params.rope_scaling_type:
864 assert params.f_rope_scale is not None
865 self.gguf.add_rope_scaling_type(params.rope_scaling_type)
866 self.gguf.add_rope_scaling_factor(params.f_rope_scale)
867
868 if params.n_orig_ctx is not None:
869 self.gguf.add_rope_scaling_orig_ctx_len(params.n_orig_ctx)
870
871 if params.rope_finetuned is not None:
872 self.gguf.add_rope_scaling_finetuned(params.rope_finetuned)
873
874 if params.ftype is not None:
875 self.gguf.add_file_type(params.ftype)
876
877 if params.predictor_params.sparse_threshold is not None:
878 self.gguf.add_sparse_threshold(params.predictor_params.sparse_threshold)
879
880 def add_meta_vocab(self, vocab: Vocab) -> None:
881 tokens = []
882 scores = []
883 toktypes = []
884 # NOTE: `all_tokens` returns the base vocabulary and added tokens
885 for text, score, toktype in vocab.all_tokens():
886 tokens.append(text)
887 scores.append(score)
888 toktypes.append(toktype)
889
890 if isinstance(vocab, SentencePieceVocab):
891 self.gguf.add_tokenizer_model("llama")
892 elif isinstance(vocab, BpeVocab):
893 self.gguf.add_tokenizer_model("gpt2")
894 else:

Callers 2

write_vocab_onlyMethod · 0.70
write_allMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected