char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
1e6453457
char/aliceai-t5-moe
1#include "models.h" 2 3ggml_cgraph * clip_graph_cogvlm::build () { 4GGML_ASSERT (model .class_embedding != nullptr ); 5GGML_ASSERT (model .position_embeddings != nullptr ); 6 7const int n_pos = n_patches + 1 ;// +1 for [CLS] 8 9// build input and concatenate class embedding 10ggml_tensor * inp = build_inp (); 11inp = ggml_concat (ctx0 ,inp ,model .class_embedding ,1 ); 12 13inp = ggml_add (ctx0 ,inp ,model .position_embeddings ); 14cb (inp ,"inp_pos" ,-1 ); 15 16ggml_tensor * inpL = inp ; 17 18for (int il = 0 ;il < n_layer ;il ++ ) { 19auto & layer = model .layers [il ]; 20ggml_tensor * cur = inpL ; 21 22cur = build_mm (layer .qkv_w ,cur ); 23 24cur = ggml_add (ctx0 ,cur ,layer .qkv_b ); 25 26ggml_tensor * Qcur = ggml_view_3d (ctx0 ,cur ,d_head ,n_head ,n_pos ,d_head * sizeof (float ), 27cur -> nb [1 ],0 ); 28ggml_tensor * Kcur = ggml_view_3d (ctx0 ,cur ,d_head ,n_head ,n_pos ,d_head * sizeof (float ), 29cur -> nb [1 ],n_embd * sizeof (float )); 30ggml_tensor * Vcur = ggml_view_3d (ctx0 ,cur ,d_head ,n_head ,n_pos ,d_head * sizeof (float ), 31cur -> nb [1 ],2 * n_embd * sizeof (float )); 32 33cb (Qcur ,"Qcur" ,il ); 34cb (Kcur ,"Kcur" ,il ); 35cb (Vcur ,"Vcur" ,il ); 36 37cur = build_attn (layer .o_w ,layer .o_b , 38Qcur ,Kcur ,Vcur ,nullptr ,kq_scale ,il ); 39cb (cur ,"attn_out" ,il ); 40 41cur = build_norm (cur ,layer .ln_1_w ,layer .ln_1_b ,NORM_TYPE_NORMAL ,eps ,il ); 42cb (cur ,"attn_post_norm" ,il ); 43 44cur = ggml_add (ctx0 ,cur ,inpL ); 45inpL = cur ; 46 47cur = build_ffn (cur , 48layer .ff_up_w ,layer .ff_up_b , 49layer .ff_gate_w ,layer .ff_gate_b , 50layer .ff_down_w ,layer .ff_down_b , 51hparams .ffn_op ,il ); 52 53cb (cur ,"ffn_out" ,il ); 54 55cur = build_norm (cur ,layer .ln_2_w ,layer .ln_2_b ,NORM_TYPE_NORMAL ,eps ,il ); 56cb (cur ,"ffn_post_norm" ,il ); 57 58cur = ggml_add (ctx0 ,cur ,inpL ); 59cb (cur ,"layer_out" ,il ); 60inpL = cur ; 61 62 } 63 64// remove CLS token (like build_llama4 does) 65ggml_tensor * cur = ggml_view_2d (ctx0 ,inpL , 66n_embd ,n_patches , 67ggml_row_size (inpL -> type ,n_embd ),0 ); 68 69// Multiply with mm_model_proj 70cur = build_mm (model .mm_model_proj ,cur ); 71 72// Apply layernorm, weight, bias 73cur = build_norm (cur ,model .mm_post_fc_norm_w ,model .mm_post_fc_norm_b ,NORM_TYPE_NORMAL ,1e-5 ,-1 ); 74 75// Apply GELU 76cur = ggml_gelu_inplace (ctx0 ,cur ); 77 78// Branch 1: multiply with mm_h_to_4h_w 79ggml_tensor * h_to_4h = build_mm (model .mm_h_to_4h_w ,cur ); 80 81// Branch 2: multiply with mm_gate_w 82ggml_tensor * gate = build_mm (model .mm_gate_w ,cur ); 83 84// Apply silu 85gate = ggml_swiglu_split (ctx0 ,gate ,h_to_4h ); 86 87// Apply mm_4h_to_h_w 88cur = build_mm (model .mm_4h_to_h_w ,gate ); 89 90// Concatenate with boi and eoi 91cur = ggml_concat (ctx0 ,model .mm_boi ,cur ,1 ); 92cur = ggml_concat (ctx0 ,cur ,model .mm_eoi ,1 ); 93 94// build the graph 95ggml_build_forward_expand (gf ,cur ); 96 97return gf ; 98}