char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
fa88ae936
char/aliceai-t5-moe
1from __future__import annotations 2 3import json 4 5from typing import Iterable ,TYPE_CHECKING 6 7if TYPE_CHECKING : 8from torch import Tensor 9 10from .base import ModelBase ,TextModel ,gguf ,logger 11 12 13@ ModelBase . register ( "PanguEmbeddedForCausalLM" ) 14@ ModelBase . example ( "FreedomIntelligence/openPangu-Embedded-7B-V1.1" ) 15class PanguEmbeddedModel (TextModel ): 16model_arch = gguf .MODEL_ARCH .PANGU_EMBED 17 18def set_vocab (self ): 19self ._set_vocab_sentencepiece () 20 21tokenizer_config_file = self .dir_model / 'tokenizer_config.json' 22if tokenizer_config_file .is_file (): 23with open (tokenizer_config_file ,"r" ,encoding = "utf-8" )as f : 24tokenizer_config_json = json .load (f ) 25if "add_prefix_space" in tokenizer_config_json : 26self .gguf_writer .add_add_space_prefix (tokenizer_config_json ["add_prefix_space" ]) 27 28def set_gguf_parameters (self ): 29super ().set_gguf_parameters () 30hparams = self .hparams 31self .gguf_writer .add_vocab_size (hparams ["vocab_size" ]) 32 33# PanguEmbedded's hparam loaded from config.json without head_dim 34if (rope_dim := hparams .get ("head_dim" ))is None : 35rope_dim = hparams ["hidden_size" ]// hparams ["num_attention_heads" ] 36self .gguf_writer .add_rope_dimension_count (rope_dim ) 37 38if hparams .get ("head_dim" )is None : 39self .gguf_writer .add_key_length (rope_dim ) 40self .gguf_writer .add_value_length (rope_dim ) 41 42def modify_tensors (self ,data_torch :Tensor ,name :str ,bid :int | None )-> Iterable [tuple [str ,Tensor ]]: 43if name == "lm_head.weight" : 44if self .hparams .get ("tie_word_embeddings" ,False ): 45logger .info ("Skipping tied output layer 'lm_head.weight'" ) 46return 47yield from super ().modify_tensors (data_torch ,name ,bid )