char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
f5c6ae182
char/aliceai-t5-moe
1#include "models.h" 2 3ggml_cgraph * clip_graph_whisper_enc::build () { 4const int n_frames = img .nx (); 5const int n_pos = n_frames /2 ; 6GGML_ASSERT (model .position_embeddings -> ne [1 ] >=n_pos ); 7 8ggml_tensor * inp = build_inp_raw (1 ); 9 10// conv1d block 11 { 12// convolution + gelu 13ggml_tensor * cur = ggml_conv_1d_ph (ctx0 ,model .conv1d_1_w ,inp ,1 ,1 ); 14cur = ggml_add (ctx0 ,cur ,model .conv1d_1_b ); 15 16cur = ggml_gelu_erf (ctx0 ,cur ); 17 18cur = ggml_conv_1d_ph (ctx0 ,model .conv1d_2_w ,cur ,2 ,1 ); 19cur = ggml_add (ctx0 ,cur ,model .conv1d_2_b ); 20 21cur = ggml_gelu_erf (ctx0 ,cur ); 22// transpose 23inp = ggml_cont (ctx0 ,ggml_transpose (ctx0 ,cur )); 24cb (inp ,"after_conv1d" ,-1 ); 25 } 26 27// sanity check (only check one layer, but it should be the same for all) 28GGML_ASSERT (model .layers [0 ].ln_1_w && model .layers [0 ].ln_1_b ); 29GGML_ASSERT (model .layers [0 ].ln_2_w && model .layers [0 ].ln_2_b ); 30GGML_ASSERT (model .layers [0 ].q_b ); 31GGML_ASSERT (model .layers [0 ].v_b ); 32GGML_ASSERT (!model .layers [0 ].k_b );// no bias for k 33 34ggml_tensor * pos_embd_selected = ggml_view_2d ( 35ctx0 ,model .position_embeddings , 36model .position_embeddings -> ne [0 ],n_pos , 37model .position_embeddings -> nb [1 ],0 38 ); 39ggml_tensor * cur = build_vit ( 40inp ,n_pos , 41NORM_TYPE_NORMAL , 42hparams .ffn_op , 43pos_embd_selected , 44nullptr ); 45 46cb (cur ,"after_transformer" ,-1 ); 47 48if (model .audio_has_stack_frames ()) { 49// StackAudioFrames 50// https://huggingface.co/fixie-ai/ultravox-v0_5-llama-3_2-1b/blob/main/ultravox_model.py 51cur = build_stack (cur ,hparams .proj_stack_factor ,n_embd ); 52cb (cur ,"after_stacked" ,-1 ); 53 } 54 55if (proj_type == PROJECTOR_TYPE_ULTRAVOX ) { 56// UltravoxProjector 57// pre-norm 58cur = ggml_rms_norm (ctx0 ,cur ,1e-6 ); 59cur = ggml_mul (ctx0 ,cur ,model .mm_norm_pre_w ); 60 61// ffn in 62cur = build_mm (model .mm_1_w ,cur ); 63 64// swiglu 65// see SwiGLU in ultravox_model.py, the second half passed through is silu, not the first half 66cur = ggml_swiglu_swapped (ctx0 ,cur ); 67 68// mid-norm 69cur = ggml_rms_norm (ctx0 ,cur ,1e-6 ); 70cur = ggml_mul (ctx0 ,cur ,model .mm_norm_mid_w ); 71 72// ffn out 73cur = build_mm (model .mm_2_w ,cur ); 74 75 }else if (proj_type == PROJECTOR_TYPE_QWEN2A ) { 76// projector 77cur = build_mm (model .mm_fc_w ,cur ); 78cur = ggml_add (ctx0 ,cur ,model .mm_fc_b ); 79 80 }else if (proj_type == PROJECTOR_TYPE_VOXTRAL ) { 81// projector 82cur = build_ffn (cur , 83model .mm_1_w ,model .mm_1_b , 84nullptr ,nullptr , 85model .mm_2_w ,model .mm_2_b , 86FFN_GELU_ERF , 87-1 ); 88 89 }else if (proj_type == PROJECTOR_TYPE_MUSIC_FLAMINGO ) { 90// projector 91cur = build_ffn (cur , 92model .mm_1_w ,model .mm_1_b , 93nullptr ,nullptr , 94model .mm_2_w ,model .mm_2_b , 95FFN_GELU_ERF , 96-1 ); 97 98 }else if (proj_type == PROJECTOR_TYPE_MERALION ) { 99// stack (above) -> ln -> linear0+silu -> GLU -> out 100cur = ggml_norm (ctx0 ,cur ,hparams .eps ); 101cur = ggml_mul (ctx0 ,cur ,model .mm_norm_pre_w ); 102cur = ggml_add (ctx0 ,cur ,model .mm_norm_pre_b ); 103 104cur = ggml_mul_mat (ctx0 ,model .mm_0_w ,cur ); 105cur = ggml_add (ctx0 ,cur ,model .mm_0_b ); 106cur = ggml_silu (ctx0 ,cur ); 107 108ggml_tensor * gate = ggml_mul_mat (ctx0 ,model .mm_1_w ,cur ); 109gate = ggml_add (ctx0 ,gate ,model .mm_1_b ); 110gate = ggml_silu (ctx0 ,gate ); 111 112ggml_tensor * pool = ggml_mul_mat (ctx0 ,model .mm_2_w ,cur ); 113pool = ggml_add (ctx0 ,pool ,model .mm_2_b ); 114 115cur = ggml_mul (ctx0 ,gate ,pool ); 116 117cur = ggml_mul_mat (ctx0 ,model .mm_3_w ,cur ); 118cur = ggml_add (ctx0 ,cur ,model .mm_3_b ); 119 120 }else if (proj_type == PROJECTOR_TYPE_GLMA ) { 121cur = ggml_norm (ctx0 ,cur ,hparams .eps ); 122cur = ggml_mul (ctx0 ,cur ,model .mm_norm_pre_w ); 123cur = ggml_add (ctx0 ,cur ,model .mm_norm_pre_b ); 124cur = build_stack (cur ,hparams .proj_stack_factor ,n_embd ); 125cur = build_ffn (cur ,model .mm_1_w ,model .mm_1_b ,nullptr ,nullptr ,model .mm_2_w ,model .mm_2_b ,hparams .ffn_op ,0 ); 126cur = ggml_concat (ctx0 ,model .mm_boi ,cur ,1 ); 127cur = ggml_concat (ctx0 ,cur ,model .mm_eoi ,1 ); 128 }else { 129GGML_ABORT ("%s: unknown projector type" ,__func__ ); 130 } 131 132cb (cur ,"projected" ,-1 ); 133 134ggml_build_forward_expand (gf ,cur ); 135 136return gf ; 137}