char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
7acb4e8cd
char/aliceai-t5-moe
1#include "models.h" 2 3void llama_model_jina_bert_v2::load_arch_hparams (llama_model_loader & ml ) { 4ml .get_key (LLM_KV_ATTENTION_LAYERNORM_EPS ,hparams .f_norm_eps ); 5hparams .f_max_alibi_bias = 8.0f ; 6 7switch (hparams .n_layer ()) { 8case 4 :type = LLM_TYPE_33M ;break ;// jina-embeddings-small 9case 12 :type = LLM_TYPE_137M ;break ;// jina-embeddings-base 10default :type = LLM_TYPE_UNKNOWN ; 11 } 12} 13 14void llama_model_jina_bert_v2::load_arch_tensors (llama_model_loader & ml ) { 15LLAMA_LOAD_LOCALS ; 16 17tok_embd = create_tensor (tn (LLM_TENSOR_TOKEN_EMBD ,"weight" ), {n_embd ,n_vocab },0 );// word_embeddings 18type_embd = create_tensor (tn (LLM_TENSOR_TOKEN_TYPES ,"weight" ), {n_embd ,n_token_types },0 );// token_type_embeddings 19 20tok_norm = create_tensor (tn (LLM_TENSOR_TOKEN_EMBD_NORM ,"weight" ,0 ), {n_embd },0 );// LayerNorm 21tok_norm_b = create_tensor (tn (LLM_TENSOR_TOKEN_EMBD_NORM ,"bias" ,0 ), {n_embd },0 );// LayerNorm bias 22 23cls = create_tensor (tn (LLM_TENSOR_CLS ,"weight" ), {n_embd ,1 },TENSOR_NOT_REQUIRED ); 24cls_b = create_tensor (tn (LLM_TENSOR_CLS ,"bias" ), {1 },TENSOR_NOT_REQUIRED ); 25for (int i = 0 ;i < n_layer ;++ i ) { 26auto & layer = layers [i ];// JinaBertLayer 27 28create_tensor_qkv (layer ,i ,n_embd ,n_embd ,n_embd_gqa ,n_embd_gqa ,0 ); 29 30layer .attn_q_norm = create_tensor (tn (LLM_TENSOR_ATTN_Q_NORM ,"weight" ,i ), {n_embd },TENSOR_NOT_REQUIRED ); 31layer .attn_q_norm_b = create_tensor (tn (LLM_TENSOR_ATTN_Q_NORM ,"bias" ,i ), {n_embd },TENSOR_NOT_REQUIRED ); 32 33layer .attn_k_norm = create_tensor (tn (LLM_TENSOR_ATTN_K_NORM ,"weight" ,i ), {n_embd },TENSOR_NOT_REQUIRED ); 34layer .attn_k_norm_b = create_tensor (tn (LLM_TENSOR_ATTN_K_NORM ,"bias" ,i ), {n_embd },TENSOR_NOT_REQUIRED ); 35 36layer .wo = create_tensor (tn (LLM_TENSOR_ATTN_OUT ,"weight" ,i ), {n_embd ,n_embd },0 );//output_dens 37layer .wo_b = create_tensor (tn (LLM_TENSOR_ATTN_OUT ,"bias" ,i ), {n_embd },0 );//output_dens 38 39layer .attn_out_norm = create_tensor (tn (LLM_TENSOR_ATTN_OUT_NORM ,"weight" ,i ), {n_embd },0 );//output_norm 40layer .attn_out_norm_b = create_tensor (tn (LLM_TENSOR_ATTN_OUT_NORM ,"bias" ,i ), {n_embd },0 ); 41 42layer .attn_norm_2 = create_tensor (tn (LLM_TENSOR_ATTN_NORM_2 ,"weight" ,i ), {n_embd },TENSOR_NOT_REQUIRED ); 43layer .attn_norm_2_b = create_tensor (tn (LLM_TENSOR_ATTN_NORM_2 ,"bias" ,i ), {n_embd },TENSOR_NOT_REQUIRED ); 44 45layer .ffn_gate = create_tensor (tn (LLM_TENSOR_FFN_GATE ,"weight" ,i ), {n_embd ,n_ff },TENSOR_NOT_REQUIRED ); 46 47const auto tn_ffn_up_weight = tn (LLM_TENSOR_FFN_UP ,"weight" ,i ); 48ggml_tensor * t_ffn_up = ml .get_tensor_meta (tn_ffn_up_weight .str ().c_str ()); 49const int64_t n_ffn_up = t_ffn_up ?t_ffn_up -> ne [1 ] :n_ff ; 50 51GGML_ASSERT (n_ffn_up == n_ff || n_ffn_up == n_ff * 2 ); 52layer .ffn_up = create_tensor (tn_ffn_up_weight , {n_embd ,n_ffn_up },0 ); 53layer .ffn_up_b = create_tensor (tn (LLM_TENSOR_FFN_UP ,"bias" ,i ), {n_ffn_up },TENSOR_NOT_REQUIRED ); 54 55layer .ffn_down = create_tensor (tn (LLM_TENSOR_FFN_DOWN ,"weight" ,i ), {n_ff ,n_embd },0 ); 56layer .ffn_down_b = create_tensor (tn (LLM_TENSOR_FFN_DOWN ,"bias" ,i ), {n_embd },0 ); 57 58layer .layer_out_norm = create_tensor (tn (LLM_TENSOR_LAYER_OUT_NORM ,"weight" ,i ), {n_embd },0 ); 59layer .layer_out_norm_b = create_tensor (tn (LLM_TENSOR_LAYER_OUT_NORM ,"bias" ,i ), {n_embd },0 ); 60 } 61} 62 63std::unique_ptr < llm_graph_context > llama_model_jina_bert_v2::build_arch_graph (const llm_graph_params & params )const { 64return std::make_unique < graph > (* this ,params ); 65} 66