Team Ai
Datasetpublic

echodict/llama.cpp

version https://git-lfs.github.com/spec/v1 oid sha256:cfc44b7ba25614df70e6b65e3341cae0310163bd32fd31a6b928a542df433faf size 30786

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes479downloads
llama-model.h641 linesDownload Raw Back to src
1#pragma once2 3#include "llama.h"4#include "llama-arch.h"5#include "llama-graph.h"6#include "llama-hparams.h"7#include "llama-memory.h"8#include "llama-vocab.h"9 10#include <map>11#include <memory>12#include <string>13#include <unordered_map>14#include <unordered_set>15#include <vector>16 17struct llama_cparams;18struct llama_ubatch;19struct llama_model_loader;20 21// available models22enum llm_type {23    LLM_TYPE_UNKNOWN,24    LLM_TYPE_14M,25    LLM_TYPE_17M,26    LLM_TYPE_22M,27    LLM_TYPE_33M,28    LLM_TYPE_47M,29    LLM_TYPE_60M,30    LLM_TYPE_70M,31    LLM_TYPE_80M,32    LLM_TYPE_109M,33    LLM_TYPE_137M,34    LLM_TYPE_140M,35    LLM_TYPE_149M,36    LLM_TYPE_160M,37    LLM_TYPE_190M,38    LLM_TYPE_220M,39    LLM_TYPE_250M,40    LLM_TYPE_256M,41    LLM_TYPE_270M,42    LLM_TYPE_335M,43    LLM_TYPE_350M,44    LLM_TYPE_360M,45    LLM_TYPE_395M,46    LLM_TYPE_410M,47    LLM_TYPE_450M,48    LLM_TYPE_475M,49    LLM_TYPE_558M,50    LLM_TYPE_700M,51    LLM_TYPE_770M,52    LLM_TYPE_780M,53    LLM_TYPE_950M,54    LLM_TYPE_0_3B,55    LLM_TYPE_0_5B,56    LLM_TYPE_0_6B,57    LLM_TYPE_0_8B,58    LLM_TYPE_1B,59    LLM_TYPE_1_2B,60    LLM_TYPE_1_3B,61    LLM_TYPE_1_4B,62    LLM_TYPE_1_5B,63    LLM_TYPE_1_6B,64    LLM_TYPE_1_7B,65    LLM_TYPE_1_8B,66    LLM_TYPE_2B,67    LLM_TYPE_2_6B,68    LLM_TYPE_2_8B,69    LLM_TYPE_2_9B,70    LLM_TYPE_3B,71    LLM_TYPE_4B,72    LLM_TYPE_6B,73    LLM_TYPE_6_9B,74    LLM_TYPE_7B,75    LLM_TYPE_8B,76    LLM_TYPE_9B,77    LLM_TYPE_11B,78    LLM_TYPE_12B,79    LLM_TYPE_13B,80    LLM_TYPE_14B,81    LLM_TYPE_15B,82    LLM_TYPE_16B,83    LLM_TYPE_20B,84    LLM_TYPE_26B,85    LLM_TYPE_27B,86    LLM_TYPE_30B,87    LLM_TYPE_31B,88    LLM_TYPE_32B,89    LLM_TYPE_34B,90    LLM_TYPE_35B,91    LLM_TYPE_36B,92    LLM_TYPE_40B,93    LLM_TYPE_65B,94    LLM_TYPE_70B,95    LLM_TYPE_120B,96    LLM_TYPE_142B,97    LLM_TYPE_236B,98    LLM_TYPE_290B,99    LLM_TYPE_314B,100    LLM_TYPE_405B,101    LLM_TYPE_671B,102    LLM_TYPE_SMALL,103    LLM_TYPE_MEDIUM,104    LLM_TYPE_LARGE,105    LLM_TYPE_XL,106    LLM_TYPE_A1_7B,107    LLM_TYPE_A2_7B,108    LLM_TYPE_8x7B,109    LLM_TYPE_8x22B,110    LLM_TYPE_16x12B,111    LLM_TYPE_16x3_8B,112    LLM_TYPE_10B_128x3_66B,113    LLM_TYPE_57B_A14B,114    LLM_TYPE_17B_16E, // llama4 Scout115    LLM_TYPE_17B_128E, // llama4 Maverick116    LLM_TYPE_A13B,117    LLM_TYPE_7B_A1B,118    LLM_TYPE_8B_A1B, // lfm2moe119    LLM_TYPE_16B_A1B,120    LLM_TYPE_21B_A3B, // Ernie MoE small121    LLM_TYPE_24B_A2B, // lfm2moe122    LLM_TYPE_26B_A4B, // Gemma4123    LLM_TYPE_30B_A3B,124    LLM_TYPE_31B_A3_5B,125    LLM_TYPE_35B_A3B, // Qwen3.5126    LLM_TYPE_48B_A3B, // Kimi Linear127    LLM_TYPE_80B_A3B, // Qwen3 Next128    LLM_TYPE_100B_A6B,129    LLM_TYPE_102B_A12B, // Solar-Open130    LLM_TYPE_106B_A12B, // GLM-4.5-Air131    LLM_TYPE_120B_A12B, // Nemotron 3 Super132    LLM_TYPE_122B_A10B, // Qwen3.5133    LLM_TYPE_196B_A11B, // Step3.5-Flash134    LLM_TYPE_230B_A10B, // Minimax M2135    LLM_TYPE_235B_A22B,136    LLM_TYPE_300B_A47B, // Ernie MoE big137    LLM_TYPE_310B_A15B, // /MiMo-V2-Flash138    LLM_TYPE_355B_A32B, // GLM-4.5139    LLM_TYPE_397B_A17B, // Qwen3.5140    LLM_TYPE_744B_A40B, // GLM-5141    LLM_TYPE_E2B,142    LLM_TYPE_E4B,143};144 145std::string llama_rope_scaling_type_name(llama_rope_scaling_type rope_scaling_type);146 147struct llama_layer_posnet {148    // resnet149    struct ggml_tensor * norm1   = nullptr;150    struct ggml_tensor * norm1_b = nullptr;151 152    struct ggml_tensor * conv1   = nullptr;153    struct ggml_tensor * conv1_b = nullptr;154 155    struct ggml_tensor * norm2   = nullptr;156    struct ggml_tensor * norm2_b = nullptr;157 158    struct ggml_tensor * conv2   = nullptr;159    struct ggml_tensor * conv2_b = nullptr;160 161    // attention162    struct ggml_tensor * attn_norm   = nullptr;163    struct ggml_tensor * attn_norm_b = nullptr;164 165    struct ggml_tensor * attn_q   = nullptr;166    struct ggml_tensor * attn_q_b = nullptr;167 168    struct ggml_tensor * attn_k   = nullptr;169    struct ggml_tensor * attn_k_b = nullptr;170 171    struct ggml_tensor * attn_v   = nullptr;172    struct ggml_tensor * attn_v_b = nullptr;173 174    struct ggml_tensor * attn_o   = nullptr;175    struct ggml_tensor * attn_o_b = nullptr;176 177    // normalize178    struct ggml_tensor * norm   = nullptr;179    struct ggml_tensor * norm_b = nullptr;180};181 182struct llama_layer_convnext {183    struct ggml_tensor * dw   = nullptr;184    struct ggml_tensor * dw_b = nullptr;185 186    struct ggml_tensor * norm   = nullptr;187    struct ggml_tensor * norm_b = nullptr;188 189    struct ggml_tensor * pw1   = nullptr;190    struct ggml_tensor * pw1_b = nullptr;191 192    struct ggml_tensor * pw2   = nullptr;193    struct ggml_tensor * pw2_b = nullptr;194 195    struct ggml_tensor * gamma = nullptr;196};197 198struct llama_layer_shortconv {199    struct ggml_tensor * in_proj  = nullptr;200    struct ggml_tensor * conv     = nullptr;201    struct ggml_tensor * out_proj = nullptr;202};203 204struct llama_layer_nextn {205    struct ggml_tensor * eh_proj          = nullptr;206    struct ggml_tensor * embed_tokens     = nullptr;207    struct ggml_tensor * enorm            = nullptr;208    struct ggml_tensor * hnorm            = nullptr;209    struct ggml_tensor * shared_head_head = nullptr;210    struct ggml_tensor * shared_head_norm = nullptr;211};212 213struct llama_layer {214    // normalization215    struct ggml_tensor * attn_norm       = nullptr;216    struct ggml_tensor * attn_norm_b     = nullptr;217    struct ggml_tensor * attn_norm_2     = nullptr;218    struct ggml_tensor * attn_norm_2_b   = nullptr;219    struct ggml_tensor * attn_q_norm     = nullptr;220    struct ggml_tensor * attn_q_norm_b   = nullptr;221    struct ggml_tensor * attn_k_norm     = nullptr;222    struct ggml_tensor * attn_k_norm_b   = nullptr;223    struct ggml_tensor * attn_out_norm   = nullptr;224    struct ggml_tensor * attn_out_norm_b = nullptr;225    struct ggml_tensor * attn_q_a_norm   = nullptr;226    struct ggml_tensor * attn_kv_a_norm  = nullptr;227    struct ggml_tensor * attn_sub_norm   = nullptr;228    struct ggml_tensor * attn_post_norm  = nullptr;229    struct ggml_tensor * ffn_sub_norm    = nullptr;230    struct ggml_tensor * attn_norm_cross = nullptr;231    struct ggml_tensor * attn_norm_enc   = nullptr;232    struct ggml_tensor * ssm_norm        = nullptr;233    struct ggml_tensor * ssm_dt_norm     = nullptr;234    struct ggml_tensor * ssm_b_norm      = nullptr;235    struct ggml_tensor * ssm_c_norm      = nullptr;236 237    // attention238    struct ggml_tensor * wq        = nullptr;239    struct ggml_tensor * wk        = nullptr;240    struct ggml_tensor * wv        = nullptr;241    struct ggml_tensor * wo        = nullptr;242    struct ggml_tensor * wqkv      = nullptr;243    struct ggml_tensor * wq_a      = nullptr;244    struct ggml_tensor * wq_b      = nullptr;245    struct ggml_tensor * wkv_a_mqa = nullptr;246    struct ggml_tensor * wkv_b     = nullptr;247    struct ggml_tensor * wk_b      = nullptr;248    struct ggml_tensor * wv_b      = nullptr;249    struct ggml_tensor * wqkv_b    = nullptr;250    struct ggml_tensor * wo_b      = nullptr;251    struct ggml_tensor * wq_cross  = nullptr;252    struct ggml_tensor * wk_cross  = nullptr;253    struct ggml_tensor * wv_cross  = nullptr;254    struct ggml_tensor * wo_cross  = nullptr;255    struct ggml_tensor * wq_enc    = nullptr;256    struct ggml_tensor * wk_enc    = nullptr;257    struct ggml_tensor * wv_enc    = nullptr;258    struct ggml_tensor * wo_enc    = nullptr;259    struct ggml_tensor * wqkv_gate = nullptr;260 261    // relative position bias262    struct ggml_tensor * attn_rel_b       = nullptr;263    struct ggml_tensor * attn_rel_b_enc   = nullptr;264    struct ggml_tensor * attn_rel_b_cross = nullptr;265 266    // normalization267    struct ggml_tensor * ffn_norm         = nullptr;268    struct ggml_tensor * ffn_norm_b       = nullptr;269    struct ggml_tensor * ffn_post_norm    = nullptr;270    struct ggml_tensor * ffn_post_norm_1  = nullptr; // gemma4271    struct ggml_tensor * ffn_post_norm_2  = nullptr; // gemma4272    struct ggml_tensor * ffn_pre_norm_2   = nullptr; // gemma4273    struct ggml_tensor * layer_out_norm   = nullptr;274    struct ggml_tensor * layer_out_norm_b = nullptr;275    struct ggml_tensor * ffn_norm_exps    = nullptr;276    struct ggml_tensor * ffn_norm_enc     = nullptr;277 278    // ff279    struct ggml_tensor * ffn_gate     = nullptr; // w1280    struct ggml_tensor * ffn_down     = nullptr; // w2281    struct ggml_tensor * ffn_up       = nullptr; // w3282    struct ggml_tensor * ffn_gate_enc = nullptr;283    struct ggml_tensor * ffn_down_enc = nullptr;284    struct ggml_tensor * ffn_up_enc   = nullptr;285 286    // ff MoE287    struct ggml_tensor * ffn_gate_inp      = nullptr;288    struct ggml_tensor * ffn_gate_inp_s    = nullptr; // gemma4289    struct ggml_tensor * ffn_gate_exps     = nullptr;290    struct ggml_tensor * ffn_down_exps     = nullptr;291    struct ggml_tensor * ffn_up_exps       = nullptr;292    struct ggml_tensor * ffn_gate_up_exps  = nullptr;293    struct ggml_tensor * ffn_gate_inp_b    = nullptr;294    struct ggml_tensor * ffn_gate_exps_b   = nullptr;295    struct ggml_tensor * ffn_down_exps_b   = nullptr;296    struct ggml_tensor * ffn_up_exps_b     = nullptr;297    struct ggml_tensor * ffn_gate_up_exps_b = nullptr;298 299    // ff MoE per-expert scales (NVFP4 per-tensor scale2)300    struct ggml_tensor * ffn_gate_exps_s   = nullptr;301    struct ggml_tensor * ffn_down_exps_s   = nullptr;302    struct ggml_tensor * ffn_up_exps_s     = nullptr;303 304    // ff MoE latent proj305    struct ggml_tensor * ffn_latent_down = nullptr;306    struct ggml_tensor * ffn_latent_up   = nullptr;307 308    // ff shared expert (shexp)309    struct ggml_tensor * ffn_gate_inp_shexp = nullptr;310    struct ggml_tensor * ffn_gate_shexp     = nullptr;311    struct ggml_tensor * ffn_down_shexp     = nullptr;312    struct ggml_tensor * ffn_up_shexp       = nullptr;313 314    // ff adjugate experts (chexps)315    struct ggml_tensor * ffn_gate_chexps     = nullptr;316    struct ggml_tensor * ffn_down_chexps     = nullptr;317    struct ggml_tensor * ffn_up_chexps       = nullptr;318 319    // ff bias320    struct ggml_tensor * ffn_gate_b = nullptr;321    struct ggml_tensor * ffn_down_b = nullptr; // b2322    struct ggml_tensor * ffn_up_b   = nullptr; // b3323    struct ggml_tensor * ffn_act    = nullptr;324    struct ggml_tensor * ffn_exp_probs_b = nullptr;325 326    // mamba proj327    struct ggml_tensor * ssm_in  = nullptr;328    struct ggml_tensor * ssm_x   = nullptr;329    struct ggml_tensor * ssm_dt  = nullptr;330    struct ggml_tensor * ssm_out = nullptr;331 332    // mamba333    struct ggml_tensor * ssm_conv1d = nullptr;334    struct ggml_tensor * ssm_a      = nullptr;335    struct ggml_tensor * ssm_d      = nullptr;336 337    // mamba bias338    struct ggml_tensor * ssm_conv1d_b = nullptr;339    struct ggml_tensor * ssm_dt_b     = nullptr;340 341    // qwen3next342    struct ggml_tensor * ssm_beta_alpha = nullptr;343 344    // qwen3.5345    struct ggml_tensor * ssm_alpha = nullptr;346 347    // rwkv348    struct ggml_tensor * time_mix_w1         = nullptr;349    struct ggml_tensor * time_mix_w2         = nullptr;350    struct ggml_tensor * time_mix_lerp_x     = nullptr;351    struct ggml_tensor * time_mix_lerp_w     = nullptr;352    struct ggml_tensor * time_mix_lerp_k     = nullptr;353    struct ggml_tensor * time_mix_lerp_v     = nullptr;354    struct ggml_tensor * time_mix_lerp_r     = nullptr;355    struct ggml_tensor * time_mix_lerp_g     = nullptr;356    struct ggml_tensor * time_mix_lerp_fused = nullptr;357 358    struct ggml_tensor * time_mix_first        = nullptr;359    struct ggml_tensor * time_mix_decay        = nullptr;360    struct ggml_tensor * time_mix_decay_w1     = nullptr;361    struct ggml_tensor * time_mix_decay_w2     = nullptr;362    struct ggml_tensor * time_mix_key          = nullptr;363    struct ggml_tensor * time_mix_key_b        = nullptr;364    struct ggml_tensor * time_mix_value        = nullptr;365    struct ggml_tensor * time_mix_value_b      = nullptr;366    struct ggml_tensor * time_mix_receptance   = nullptr;367    struct ggml_tensor * time_mix_receptance_b = nullptr;368    struct ggml_tensor * time_mix_gate         = nullptr;369 370    // rwkv7371    struct ggml_tensor * time_mix_w0         = nullptr;372    struct ggml_tensor * time_mix_a0         = nullptr;373    struct ggml_tensor * time_mix_a1         = nullptr;374    struct ggml_tensor * time_mix_a2         = nullptr;375    struct ggml_tensor * time_mix_v0         = nullptr;376    struct ggml_tensor * time_mix_v1         = nullptr;377    struct ggml_tensor * time_mix_v2         = nullptr;378    struct ggml_tensor * time_mix_g1         = nullptr;379    struct ggml_tensor * time_mix_g2         = nullptr;380    struct ggml_tensor * time_mix_k_k        = nullptr;381    struct ggml_tensor * time_mix_k_a        = nullptr;382    struct ggml_tensor * time_mix_r_k        = nullptr;383 384    struct ggml_tensor * time_mix_ln     = nullptr;385    struct ggml_tensor * time_mix_ln_b   = nullptr;386    struct ggml_tensor * time_mix_output = nullptr;387 388    struct ggml_tensor * channel_mix_lerp_k = nullptr;389    struct ggml_tensor * channel_mix_lerp_r = nullptr;390 391    struct ggml_tensor * channel_mix_key        = nullptr;392    struct ggml_tensor * channel_mix_receptance = nullptr;393    struct ggml_tensor * channel_mix_value      = nullptr;394 395    // long rope factors396    struct ggml_tensor * rope_long  = nullptr;397    struct ggml_tensor * rope_short = nullptr;398    struct ggml_tensor * rope_freqs = nullptr;399 400    // bitnet scale401    struct ggml_tensor * wq_s       = nullptr;402    struct ggml_tensor * wk_s       = nullptr;403    struct ggml_tensor * wv_s       = nullptr;404    struct ggml_tensor * wo_s       = nullptr;405    struct ggml_tensor * wqkv_s     = nullptr;406    struct ggml_tensor * wqkv_gate_s = nullptr;407    struct ggml_tensor * ffn_gate_s = nullptr;408    struct ggml_tensor * ffn_up_s   = nullptr;409    struct ggml_tensor * ffn_down_s = nullptr;410    struct ggml_tensor * ffn_gate_shexp_s = nullptr;411    struct ggml_tensor * ffn_up_shexp_s   = nullptr;412    struct ggml_tensor * ffn_down_shexp_s = nullptr;413    struct ggml_tensor * ssm_in_s    = nullptr;414    struct ggml_tensor * ssm_out_s   = nullptr;415    struct ggml_tensor * ssm_alpha_s = nullptr;416    struct ggml_tensor * ssm_beta_s  = nullptr;417 418    // input scales419    struct ggml_tensor * wq_in_s            = nullptr;420    struct ggml_tensor * wk_in_s            = nullptr;421    struct ggml_tensor * wv_in_s            = nullptr;422    struct ggml_tensor * wo_in_s            = nullptr;423    struct ggml_tensor * wqkv_in_s          = nullptr;424    struct ggml_tensor * wqkv_gate_in_s     = nullptr;425    struct ggml_tensor * ffn_gate_in_s      = nullptr;426    struct ggml_tensor * ffn_up_in_s        = nullptr;427    struct ggml_tensor * ffn_down_in_s      = nullptr;428    struct ggml_tensor * ffn_gate_exps_in_s = nullptr;429    struct ggml_tensor * ffn_down_exps_in_s = nullptr;430    struct ggml_tensor * ffn_up_exps_in_s   = nullptr;431    struct ggml_tensor * ffn_gate_shexp_in_s= nullptr;432    struct ggml_tensor * ffn_up_shexp_in_s  = nullptr;433    struct ggml_tensor * ffn_down_shexp_in_s= nullptr;434    struct ggml_tensor * ssm_in_in_s        = nullptr;435    struct ggml_tensor * ssm_out_in_s       = nullptr;436    struct ggml_tensor * ssm_alpha_in_s     = nullptr;437    struct ggml_tensor * ssm_beta_in_s      = nullptr;438 439    // altup & laurel440    struct ggml_tensor * per_layer_inp_gate   = nullptr;441    struct ggml_tensor * per_layer_proj       = nullptr;442    struct ggml_tensor * per_layer_post_norm  = nullptr;443    struct ggml_tensor * altup_correct_coef   = nullptr;444    struct ggml_tensor * altup_correct_scale  = nullptr;445    struct ggml_tensor * altup_predict_coef   = nullptr;446    struct ggml_tensor * altup_router         = nullptr;447    struct ggml_tensor * altup_router_norm    = nullptr;448    struct ggml_tensor * laurel_l             = nullptr;449    struct ggml_tensor * laurel_r             = nullptr;450    struct ggml_tensor * laurel_post_norm     = nullptr;451 452    // openai-moe453    struct ggml_tensor * attn_sinks = nullptr;454 455    // cogvlm456    struct ggml_tensor * visexp_attn_wqkv = nullptr;457    struct ggml_tensor * visexp_attn_wo   = nullptr;458    struct ggml_tensor * visexp_ffn_gate  = nullptr;459    struct ggml_tensor * visexp_ffn_down  = nullptr;460    struct ggml_tensor * visexp_ffn_up    = nullptr;461 462    // xIELU activation parameters for Apertus463    struct ggml_tensor * ffn_act_alpha_n = nullptr;464    struct ggml_tensor * ffn_act_alpha_p = nullptr;465    struct ggml_tensor * ffn_act_beta    = nullptr;466    struct ggml_tensor * ffn_act_eps     = nullptr;467 468    // Kimi Linear KDA (using ssm_ prefix for consistency)469    // Note: ssm_dt_b already exists above (mamba bias), reused for Kimi dt_bias470    struct ggml_tensor * ssm_q_conv = nullptr;471    struct ggml_tensor * ssm_k_conv = nullptr;472    struct ggml_tensor * ssm_v_conv = nullptr;473    struct ggml_tensor * ssm_f_a    = nullptr;474    struct ggml_tensor * ssm_f_b    = nullptr;475    struct ggml_tensor * ssm_beta   = nullptr;476    struct ggml_tensor * ssm_g_a    = nullptr;477    struct ggml_tensor * ssm_g_b    = nullptr;478    struct ggml_tensor * ssm_o_norm = nullptr;479 480    // DSA (deepseek sparse attention)481    struct ggml_tensor * indexer_k_norm   = nullptr;482    struct ggml_tensor * indexer_k_norm_b = nullptr;483    struct ggml_tensor * indexer_proj     = nullptr;484    struct ggml_tensor * indexer_attn_k   = nullptr;485    struct ggml_tensor * indexer_attn_q_b = nullptr; // note: for lora a/b, not bias486 487    // gemma4 layer output scale488    struct ggml_tensor * out_scale = nullptr;489 490    struct llama_layer_posnet posnet;491 492    struct llama_layer_convnext convnext;493 494    struct llama_layer_shortconv shortconv;495 496    struct llama_layer_nextn nextn;497};498 499struct llama_device {500    bool is_meta;501 502    ggml_backend_dev_t dev;503};504 505struct llama_meta_device_get_split_state_userdata {506    size_t                     n_devices;507    const struct llama_model * model;508};509 510struct ggml_backend_meta_split_state llama_meta_device_get_split_state(const struct ggml_tensor * tensor, void * userdata);511 512struct llama_model {513    llm_type type = LLM_TYPE_UNKNOWN;514    llm_arch arch = LLM_ARCH_UNKNOWN;515 516    std::string name = "n/a";517 518    llama_hparams hparams = {};519    llama_vocab   vocab;520 521    // for classifier models522    std::vector<std::string> classifier_labels;523 524    struct ggml_tensor * tok_embd   = nullptr;525    struct ggml_tensor * type_embd  = nullptr;526    struct ggml_tensor * pos_embd   = nullptr;527    struct ggml_tensor * tok_norm   = nullptr;528    struct ggml_tensor * tok_norm_b = nullptr;529 530    struct ggml_tensor * output_norm     = nullptr;531    struct ggml_tensor * output_norm_b   = nullptr;532    struct ggml_tensor * output          = nullptr;533    struct ggml_tensor * output_b        = nullptr;534    struct ggml_tensor * output_norm_enc = nullptr;535 536    // classifier537    struct ggml_tensor * cls       = nullptr;538    struct ggml_tensor * cls_b     = nullptr;539    struct ggml_tensor * cls_out   = nullptr;540    struct ggml_tensor * cls_out_b = nullptr;541    struct ggml_tensor * cls_norm  = nullptr;542 543    struct ggml_tensor * conv1d   = nullptr;544    struct ggml_tensor * conv1d_b = nullptr;545 546    // gemma3n altup547    struct ggml_tensor * altup_proj           = nullptr;548    struct ggml_tensor * altup_unembd_proj    = nullptr;549    struct ggml_tensor * per_layer_tok_embd   = nullptr;550    struct ggml_tensor * per_layer_model_proj = nullptr;551    struct ggml_tensor * per_layer_proj_norm  = nullptr;552 553    std::vector<llama_layer> layers;554 555    //Dense linear projections for SentenceTransformers models like embeddinggemma556    // For Sentence Transformers models structure see557    // https://sbert.net/docs/sentence_transformer/usage/custom_models.html#structure-of-sentence-transformer-models558    struct ggml_tensor * dense_2_out_layers   = nullptr;559    struct ggml_tensor * dense_2_out_layers_b = nullptr;560    struct ggml_tensor * dense_3_out_layers   = nullptr;561 562    // gguf metadata563    std::unordered_map<std::string, std::string> gguf_kv;564 565    // list of devices used in this model566    std::vector<llama_device> devices;567 568    // for quantize-stats only569    std::vector<std::pair<std::string, struct ggml_tensor *>> tensors_by_name;570 571    // for keeping track of associated LoRA adapters572    std::unordered_set<llama_adapter_lora *> loras;573 574    // statically allocated context for assigning575    struct llama_meta_device_get_split_state_userdata get_split_state_ud;576 577    int64_t t_load_us  = 0;578    int64_t t_start_us = 0;579 580    explicit llama_model(const struct llama_model_params & params);581    ~llama_model();582 583    void load_stats  (llama_model_loader & ml);584    void load_arch   (llama_model_loader & ml);585    void load_hparams(llama_model_loader & ml);586    void load_vocab  (llama_model_loader & ml);587    bool load_tensors(llama_model_loader & ml); // returns false if cancelled by progress_callback588 589    std::string arch_name() const;590    std::string type_name() const;591 592    std::string desc() const;593 594    size_t size() const; // file size595    size_t n_tensors() const;596    size_t n_devices() const;597    const float * tensor_split() const;598 599    uint32_t n_gpu_layers() const;600    llama_split_mode split_mode() const;601 602    std::map<ggml_backend_buffer_type_t, size_t> memory_breakdown() const;603 604    // total number of parameters in the model605    uint64_t n_elements() const;606 607    void print_info() const;608 609    ggml_backend_dev_t dev_layer(int il) const;610    ggml_backend_dev_t dev_output() const;611 612    ggml_backend_buffer_type_t select_buft(int il) const;613 614    bool has_tensor_overrides() const;615 616    const struct ggml_tensor * get_tensor(const char * name) const;617 618    float get_rope_freq_base (const llama_cparams & cparams, int il) const;619    float get_rope_freq_scale(const llama_cparams & cparams, int il) const;620 621    ggml_tensor * get_rope_factors(const llama_cparams & cparams, int il) const;622 623    // TODO: move this to new llm_arch_model_i interface624    llama_memory_i * create_memory(const llama_memory_params & params, const llama_cparams & cparams) const;625 626    // TODO: move this to new llm_arch_model_i interface627    ggml_cgraph * build_graph(const llm_graph_params & params) const;628 629private:630    llama_model_params params;631 632    struct impl;633    std::unique_ptr<impl> pimpl;634};635 636const char * llm_type_name(llm_type type);637 638// For internal test use639// TODO: remove640const std::vector<std::pair<std::string, ggml_tensor *>> & llama_internal_get_tensor_map(const llama_model * model);641