char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
98a01afd9
char/aliceai-t5-moe
1#pragma once 2 3#include "llama-model.h" 4#include "llama-graph.h" 5#include "llama-model-loader.h" 6 7// note: almost all graphs require at least sqrtf, so include cmath globally 8#include <cmath> 9#include <map> 10 11class llama_memory_hybrid_idx_context ; 12 13// ref: https://github.com/ggml-org/llama.cpp/pull/28068 14static inline ggml_tensor * build_gdn_l2_norm (ggml_context * ctx ,ggml_tensor * x ,float eps ) { 15const float n = x -> ne [0 ]; 16 17return ggml_scale (ctx ,ggml_rms_norm (ctx ,x ,eps /n ),1.0f /sqrtf (n )); 18} 19 20// 21// base classes 22// 23 24struct llm_build_mamba_base :public llm_graph_context { 25llm_build_mamba_base (const llm_graph_params & params ); 26 27virtual ~llm_build_mamba_base ()= default ; 28 29ggml_tensor * build_mamba_layer (llm_graph_input_rs * inp ,ggml_tensor * cur ,const llama_model & model ,const llama_ubatch & ubatch ,int il ); 30ggml_tensor * build_mamba2_layer (llm_graph_input_rs * inp ,ggml_tensor * cur ,const llama_model & model ,const llama_ubatch & ubatch ,int il )const ; 31 32}; 33 34struct llm_build_delta_net_base :public llm_graph_context { 35llm_build_delta_net_base (const llm_graph_params & params ); 36 37virtual ~llm_build_delta_net_base ()= default ; 38 39// returns pair of output and new state 40std ::pair < ggml_tensor * ,ggml_tensor *> build_delta_net_chunking ( 41ggml_tensor * q , 42ggml_tensor * k , 43ggml_tensor * v , 44ggml_tensor * g , 45ggml_tensor * b , 46ggml_tensor * s , 47int il ); 48 49// returns pair of output and new state 50std ::pair < ggml_tensor * ,ggml_tensor *> build_delta_net_autoregressive ( 51ggml_tensor * q , 52ggml_tensor * k , 53ggml_tensor * v , 54ggml_tensor * g , 55ggml_tensor * b , 56ggml_tensor * s , 57int il ); 58 59// use the ggml_gated_delta_net fused operator (K=1; state has shape [S_v, S_v, H_v, n_seqs]) 60std ::pair < ggml_tensor * ,ggml_tensor *> build_delta_net_fused ( 61ggml_tensor * q , 62ggml_tensor * k , 63ggml_tensor * v , 64ggml_tensor * g , 65ggml_tensor * b , 66ggml_tensor * s , 67int il ); 68 69// choose one of two implementations above based on the number of tokens 70std ::pair < ggml_tensor * ,ggml_tensor *> build_delta_net ( 71ggml_tensor * q , 72ggml_tensor * k , 73ggml_tensor * v , 74ggml_tensor * g , 75ggml_tensor * b , 76ggml_tensor * s , 77int il ); 78 79// read conv state from cache, concat with qkv_mixed, write back (single slot or per-token) 80// qkv_mixed: (qkv_dim, n_seq_tokens, n_seqs); returns conv_input: (kernel_size + n_seq_tokens - 1, channels, n_seqs) 81ggml_tensor * build_conv_state ( 82llm_graph_input_rs * inp , 83ggml_tensor * conv_states_all , 84ggml_tensor * qkv_mixed , 85int64_t conv_kernel_size , 86int64_t conv_channels , 87int il ); 88 89// run delta-net attention and write the new recurrent state(s) back to ssm_states_all 90// s: (head_v_dim, head_v_dim, num_v_heads, n_seqs); returns output: (head_v_dim, num_v_heads, n_seq_tokens, n_seqs) 91ggml_tensor * build_recurrent_attn ( 92llm_graph_input_rs * inp , 93ggml_tensor * ssm_states_all , 94ggml_tensor * q , 95ggml_tensor * k , 96ggml_tensor * v , 97ggml_tensor * g , 98ggml_tensor * b , 99ggml_tensor * s , 100int il ); 101}; 102 103struct llm_build_rwkv6_base :public llm_graph_context { 104const llama_model & model ; 105 106llm_build_rwkv6_base (const llama_model & model ,const llm_graph_params & params ); 107 108virtual ~llm_build_rwkv6_base ()= default ; 109 110ggml_tensor * build_rwkv6_channel_mix (const llama_layer * layer , 111ggml_tensor * cur , 112ggml_tensor * x_prev , 113llm_arch arch )const ; 114 115ggml_tensor * build_rwkv6_time_mix (llm_graph_input_rs * inp , 116ggml_tensor * cur , 117ggml_tensor * x_prev , 118const llama_ubatch & ubatch , 119int il )const ; 120}; 121 122// Base class for RWKV7-related models 123struct llm_build_rwkv7_base :public llm_graph_context { 124const llama_model & model ; 125 126llm_build_rwkv7_base (const llama_model & model ,const llm_graph_params & params ); 127 128virtual ~llm_build_rwkv7_base ()= default ; 129 130// RWKV7-specific graph building methods 131ggml_tensor * build_rwkv7_channel_mix (const llama_layer * layer , 132ggml_tensor * cur , 133ggml_tensor * x_prev , 134llm_arch arch )const ; 135ggml_tensor * build_rwkv7_time_mix (llm_graph_input_rs * inp , 136ggml_tensor * cur , 137ggml_tensor * x_prev , 138ggml_tensor *& first_layer_value , 139const llama_ubatch & ubatch , 140int il )const ; 141}; 142 143// 144// models 145// 146 147struct llama_model_llama :public llama_model_base { 148llama_model_llama (const struct llama_model_params & params ) :llama_model_base (params ) {} 149void load_arch_hparams (llama_model_loader & ml )override ; 150void load_arch_tensors (llama_model_loader & ml )override ; 151 152template < bool embed > 153struct graph :public llm_graph_context { 154graph (const llama_model & model ,const llm_graph_params & params ); 155 }; 156 157std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params )const override ; 158}; 159 160 161struct llama_model_llama4 :public llama_model_base { 162llama_model_llama4 (const struct llama_model_params & params ) :llama_model_base (params ) {} 163void load_arch_hparams (llama_model_loader & ml )override ; 164void load_arch_tensors (llama_model_loader & ml )override ; 165 166template < bool iswa > 167struct graph :public llm_graph_context { 168graph (const llama_model & model ,const llm_graph_params & params ); 169 }; 170 171std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params )const override ; 172}; 173 174 175struct llama_model_llama_embed :public llama_model_llama { 176llama_model_llama_embed (const struct llama_model_params & params ) :llama_model_llama (params ) {} 177// reuse load_arch_hparams and load_arch_tensors from llama_model_llama 178 179template < bool embed > 180using graph = llama_model_llama ::graph < embed > ; 181 182std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 183}; 184 185 186struct llama_model_maincoder : public llama_model_base { 187llama_model_maincoder( const struct llama_model_params & params) : llama_model_base ( params ) {} 188void load_arch_hparams ( llama_model_loader & ml) override; 189void load_arch_tensors ( llama_model_loader & ml) override; 190 191struct graph : public llm_graph_context { 192graph( const llama_model & model, const llm_graph_params & params); 193}; 194 195std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 196}; 197 198 199struct llama_model_talkie : public llama_model_base { 200llama_model_talkie( const struct llama_model_params & params) : llama_model_base ( params ) {} 201void load_arch_hparams ( llama_model_loader & ml) override; 202void load_arch_tensors ( llama_model_loader & ml) override; 203 204struct graph : public llm_graph_context { 205graph( const llama_model & model, const llm_graph_params & params); 206}; 207 208std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 209}; 210 211 212struct llama_model_deci : public llama_model_base { 213llama_model_deci( const struct llama_model_params & params) : llama_model_base ( params ) {} 214void load_arch_hparams ( llama_model_loader & ml) override; 215void load_arch_tensors ( llama_model_loader & ml) override; 216 217struct graph : public llm_graph_context { 218graph( const llama_model & model, const llm_graph_params & params); 219}; 220 221std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 222}; 223 224 225struct llama_model_baichuan : public llama_model_base { 226llama_model_baichuan( const struct llama_model_params & params) : llama_model_base ( params ) {} 227void load_arch_hparams ( llama_model_loader & ml) override; 228void load_arch_tensors ( llama_model_loader & ml) override; 229 230struct graph : public llm_graph_context { 231graph( const llama_model & model, const llm_graph_params & params); 232}; 233 234std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 235}; 236 237 238struct llama_model_falcon : public llama_model_base { 239llama_model_falcon( const struct llama_model_params & params) : llama_model_base ( params ) {} 240void load_arch_hparams ( llama_model_loader & ml) override; 241void load_arch_tensors ( llama_model_loader & ml) override; 242 243struct graph : public llm_graph_context { 244graph( const llama_model & model, const llm_graph_params & params); 245}; 246 247std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 248}; 249 250 251struct llama_model_grok : public llama_model_base { 252llama_model_grok( const struct llama_model_params & params) : llama_model_base ( params ) {} 253void load_arch_hparams ( llama_model_loader & ml) override; 254void load_arch_tensors ( llama_model_loader & ml) override; 255 256struct graph : public llm_graph_context { 257graph( const llama_model & model, const llm_graph_params & params); 258}; 259 260std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 261}; 262 263 264struct llama_model_starcoder : public llama_model_base { 265llama_model_starcoder( const struct llama_model_params & params) : llama_model_base ( params ) {} 266void load_arch_hparams ( llama_model_loader & ml) override; 267void load_arch_tensors ( llama_model_loader & ml) override; 268 269struct graph : public llm_graph_context { 270graph( const llama_model & model, const llm_graph_params & params); 271}; 272 273std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 274}; 275 276 277struct llama_model_refact : public llama_model_base { 278llama_model_refact( const struct llama_model_params & params) : llama_model_base ( params ) {} 279void load_arch_hparams ( llama_model_loader & ml) override; 280void load_arch_tensors ( llama_model_loader & ml) override; 281 282struct graph : public llm_graph_context { 283graph( const llama_model & model, const llm_graph_params & params); 284}; 285 286std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 287}; 288 289 290struct llama_model_bert : public llama_model_base { 291llama_model_bert( const struct llama_model_params & params) : llama_model_base ( params ) {} 292void load_arch_hparams ( llama_model_loader & ml) override; 293void load_arch_tensors ( llama_model_loader & ml) override; 294 295struct graph : public llm_graph_context { 296graph( const llama_model & model, const llm_graph_params & params); 297}; 298 299std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 300}; 301 302 303struct llama_model_jina_bert_v2 : public llama_model_base { 304llama_model_jina_bert_v2( const struct llama_model_params & params) : llama_model_base ( params ) {} 305void load_arch_hparams ( llama_model_loader & ml) override; 306void load_arch_tensors ( llama_model_loader & ml) override; 307 308using graph = llama_model_bert::graph; 309 310std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 311}; 312 313 314struct llama_model_jina_bert_v3 : public llama_model_base { 315llama_model_jina_bert_v3( const struct llama_model_params & params) : llama_model_base ( params ) {} 316void load_arch_hparams ( llama_model_loader & ml) override; 317void load_arch_tensors ( llama_model_loader & ml) override; 318 319using graph = llama_model_bert::graph; 320 321std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 322}; 323 324 325struct llama_model_nomic_bert : public llama_model_base { 326llama_model_nomic_bert( const struct llama_model_params & params) : llama_model_base ( params ) {} 327void load_arch_hparams ( llama_model_loader & ml) override; 328void load_arch_tensors ( llama_model_loader & ml) override; 329 330using graph = llama_model_bert::graph; 331 332std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 333}; 334 335 336struct llama_model_nomic_bert_moe : public llama_model_base { 337llama_model_nomic_bert_moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 338void load_arch_hparams ( llama_model_loader & ml) override; 339void load_arch_tensors ( llama_model_loader & ml) override; 340 341using graph = llama_model_bert::graph; 342 343std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 344}; 345 346 347struct llama_model_modern_bert : public llama_model_base { 348llama_model_modern_bert( const struct llama_model_params & params) : llama_model_base ( params ) {} 349void load_arch_hparams ( llama_model_loader & ml) override; 350void load_arch_tensors ( llama_model_loader & ml) override; 351 352struct graph : public llm_graph_context { 353graph( const llama_model & model, const llm_graph_params & params); 354}; 355 356std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 357}; 358 359 360struct llama_model_neo_bert : public llama_model_base { 361llama_model_neo_bert( const struct llama_model_params & params) : llama_model_base ( params ) {} 362void load_arch_hparams ( llama_model_loader & ml) override; 363void load_arch_tensors ( llama_model_loader & ml) override; 364 365struct graph : public llm_graph_context { 366graph( const llama_model & model, const llm_graph_params & params); 367}; 368 369std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 370}; 371 372 373struct llama_model_eurobert : public llama_model_base { 374llama_model_eurobert( const struct llama_model_params & params) : llama_model_base ( params ) {} 375void load_arch_hparams ( llama_model_loader & ml) override; 376void load_arch_tensors ( llama_model_loader & ml) override; 377 378struct graph : public llm_graph_context { 379graph( const llama_model & model, const llm_graph_params & params); 380}; 381 382std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 383}; 384 385 386struct llama_model_bloom : public llama_model_base { 387llama_model_bloom( const struct llama_model_params & params) : llama_model_base ( params ) {} 388void load_arch_hparams ( llama_model_loader & ml) override; 389void load_arch_tensors ( llama_model_loader & ml) override; 390 391struct graph : public llm_graph_context { 392graph( const llama_model & model, const llm_graph_params & params); 393}; 394 395std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 396}; 397 398 399// Quant-only stub for mmproj GGUFs 400// none of these are ever called, they only exist to satisfy the llama_model_base interface 401struct llama_model_clip : public llama_model_base { 402llama_model_clip( const struct llama_model_params & params) : llama_model_base ( params ) {} 403 404[[noreturn]] 405void load_arch_hparams ( llama_model_loader & ml) override; 406 407[[noreturn]] 408void load_arch_tensors ( llama_model_loader & ml) override; 409 410[[noreturn]] 411std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 412}; 413 414 415struct llama_model_mpt : public llama_model_base { 416llama_model_mpt( const struct llama_model_params & params) : llama_model_base ( params ) {} 417void load_arch_hparams ( llama_model_loader & ml) override; 418void load_arch_tensors ( llama_model_loader & ml) override; 419 420struct graph : public llm_graph_context { 421graph( const llama_model & model, const llm_graph_params & params); 422}; 423 424std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 425}; 426 427 428struct llama_model_stablelm : public llama_model_base { 429llama_model_stablelm( const struct llama_model_params & params) : llama_model_base ( params ) {} 430void load_arch_hparams ( llama_model_loader & ml) override; 431void load_arch_tensors ( llama_model_loader & ml) override; 432 433struct graph : public llm_graph_context { 434graph( const llama_model & model, const llm_graph_params & params); 435}; 436 437std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 438}; 439 440struct llama_model_mellum : public llama_model_base { 441llama_model_mellum( const struct llama_model_params & params) : llama_model_base ( params ) {} 442void load_arch_hparams ( llama_model_loader & ml) override; 443void load_arch_tensors ( llama_model_loader & ml) override; 444 445template < bool iswa > 446struct graph : public llm_graph_context { 447graph ( const llama_model & model, const llm_graph_params & params); 448}; 449 450std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 451}; 452 453struct llama_model_nanbeige : public llama_model_base { 454llama_model_nanbeige( const struct llama_model_params & params) : llama_model_base ( params ) {} 455void load_arch_hparams ( llama_model_loader & ml) override; 456void load_arch_tensors ( llama_model_loader & ml) override; 457 458int n_loops = 1 ; 459int n_layer_phys = 0 ; 460bool skip_loop_final_norm = false; 461 462struct graph : public llm_graph_context { 463graph( const llama_model & model, const llm_graph_params & params); 464}; 465 466std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 467}; 468 469struct llama_model_qwen : public llama_model_base { 470llama_model_qwen( const struct llama_model_params & params) : llama_model_base ( params ) {} 471void load_arch_hparams ( llama_model_loader & ml) override; 472void load_arch_tensors ( llama_model_loader & ml) override; 473 474struct graph : public llm_graph_context { 475graph( const llama_model & model, const llm_graph_params & params); 476}; 477 478std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 479}; 480 481 482struct llama_model_qwen2 : public llama_model_base { 483llama_model_qwen2( const struct llama_model_params & params) : llama_model_base ( params ) {} 484void load_arch_hparams ( llama_model_loader & ml) override; 485void load_arch_tensors ( llama_model_loader & ml) override; 486 487struct graph : public llm_graph_context { 488graph( const llama_model & model, const llm_graph_params & params); 489}; 490 491std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 492}; 493 494 495struct llama_model_dream : public llama_model_base { 496llama_model_dream( const struct llama_model_params & params) : llama_model_base ( params ) {} 497void load_arch_hparams ( llama_model_loader & ml) override; 498void load_arch_tensors ( llama_model_loader & ml) override; 499 500struct graph : public llm_graph_context { 501graph( const llama_model & model, const llm_graph_params & params); 502}; 503 504std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 505}; 506 507 508struct llama_model_llada : public llama_model_base { 509llama_model_llada( const struct llama_model_params & params) : llama_model_base ( params ) {} 510void load_arch_hparams ( llama_model_loader & ml) override; 511void load_arch_tensors ( llama_model_loader & ml) override; 512 513struct graph : public llm_graph_context { 514graph( const llama_model & model, const llm_graph_params & params); 515}; 516 517std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 518}; 519 520 521struct llama_model_llada_moe : public llama_model_base { 522llama_model_llada_moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 523void load_arch_hparams ( llama_model_loader & ml) override; 524void load_arch_tensors ( llama_model_loader & ml) override; 525 526struct graph : public llm_graph_context { 527graph( const llama_model & model, const llm_graph_params & params); 528}; 529 530std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 531}; 532 533 534struct llama_model_rnd1 : public llama_model_base { 535llama_model_rnd1( const struct llama_model_params & params) : llama_model_base ( params ) {} 536void load_arch_hparams ( llama_model_loader & ml) override; 537void load_arch_tensors ( llama_model_loader & ml) override; 538 539struct graph : public llm_graph_context { 540graph( const llama_model & model, const llm_graph_params & params); 541}; 542 543std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 544}; 545 546 547struct llama_model_qwen2vl : public llama_model_base { 548llama_model_qwen2vl( const struct llama_model_params & params) : llama_model_base ( params ) {} 549void load_arch_hparams ( llama_model_loader & ml) override; 550void load_arch_tensors ( llama_model_loader & ml) override; 551 552struct graph : public llm_graph_context { 553graph( const llama_model & model, const llm_graph_params & params); 554}; 555 556std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 557}; 558 559 560struct llama_model_qwen2moe : public llama_model_base { 561llama_model_qwen2moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 562void load_arch_hparams ( llama_model_loader & ml) override; 563void load_arch_tensors ( llama_model_loader & ml) override; 564 565struct graph : public llm_graph_context { 566graph( const llama_model & model, const llm_graph_params & params); 567}; 568 569std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 570}; 571 572 573struct llama_model_qwen3 : public llama_model_base { 574llama_model_qwen3( const struct llama_model_params & params) : llama_model_base ( params ) {} 575void load_arch_hparams ( llama_model_loader & ml) override; 576void load_arch_tensors ( llama_model_loader & ml) override; 577 578struct graph : public llm_graph_context { 579graph( const llama_model & model, const llm_graph_params & params); 580}; 581 582std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 583}; 584 585 586struct llama_model_qwen3moe : public llama_model_base { 587llama_model_qwen3moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 588void load_arch_hparams ( llama_model_loader & ml) override; 589void load_arch_tensors ( llama_model_loader & ml) override; 590 591struct graph : public llm_graph_context { 592graph( const llama_model & model, const llm_graph_params & params); 593}; 594 595std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 596}; 597 598 599struct llama_model_qwen3vl : public llama_model_base { 600llama_model_qwen3vl( const struct llama_model_params & params) : llama_model_base ( params ) {} 601void load_arch_hparams ( llama_model_loader & ml) override; 602void load_arch_tensors ( llama_model_loader & ml) override; 603 604struct graph : public llm_graph_context { 605graph( const llama_model & model, const llm_graph_params & params); 606}; 607 608std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 609}; 610 611 612struct llama_model_qwen3vlmoe : public llama_model_base { 613llama_model_qwen3vlmoe( const struct llama_model_params & params) : llama_model_base ( params ) {} 614void load_arch_hparams ( llama_model_loader & ml) override; 615void load_arch_tensors ( llama_model_loader & ml) override; 616 617struct graph : public llm_graph_context { 618graph( const llama_model & model, const llm_graph_params & params); 619}; 620 621std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 622}; 623 624 625struct llama_model_qwen3tts : public llama_model_qwen3vl { 626llama_model_qwen3tts( const struct llama_model_params & params) : llama_model_qwen3vl ( params ) {} 627}; 628 629 630struct llama_model_phi2 : public llama_model_base { 631llama_model_phi2( const struct llama_model_params & params) : llama_model_base ( params ) {} 632void load_arch_hparams ( llama_model_loader & ml) override; 633void load_arch_tensors ( llama_model_loader & ml) override; 634 635struct graph : public llm_graph_context { 636graph( const llama_model & model, const llm_graph_params & params); 637}; 638 639std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 640}; 641 642 643struct llama_model_phi3 : public llama_model_base { 644llama_model_phi3( const struct llama_model_params & params) : llama_model_base ( params ) {} 645void load_arch_hparams ( llama_model_loader & ml) override; 646void load_arch_tensors ( llama_model_loader & ml) override; 647 648template < bool iswa > 649struct graph : public llm_graph_context { 650graph ( const llama_model & model, const llm_graph_params & params); 651}; 652 653std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 654}; 655 656 657struct llama_model_phimoe : public llama_model_base { 658llama_model_phimoe( const struct llama_model_params & params) : llama_model_base ( params ) {} 659void load_arch_hparams ( llama_model_loader & ml) override; 660void load_arch_tensors ( llama_model_loader & ml) override; 661 662template < bool iswa > 663using graph = llama_model_phi3::graph < iswa > ; 664 665std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 666}; 667 668 669struct llama_model_plamo : public llama_model_base { 670llama_model_plamo( const struct llama_model_params & params) : llama_model_base ( params ) {} 671void load_arch_hparams ( llama_model_loader & ml) override; 672void load_arch_tensors ( llama_model_loader & ml) override; 673 674struct graph : public llm_graph_context { 675graph( const llama_model & model, const llm_graph_params & params); 676}; 677 678std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 679}; 680 681 682struct llama_model_plamo2 : public llama_model_base { 683llama_model_plamo2( const struct llama_model_params & params) : llama_model_base ( params ) {} 684void load_arch_hparams ( llama_model_loader & ml) override; 685void load_arch_tensors ( llama_model_loader & ml) override; 686 687struct graph : public llm_build_mamba_base { 688graph( const llama_model & model, const llm_graph_params & params); 689private : 690ggml_tensor * build_plamo2_mamba_layer ( llm_graph_input_rs * inp, ggml_tensor * cur, const llama_model & model, const llama_ubatch & ubatch, int il); 691ggml_tensor * build_plamo2_attn_layer ( llm_graph_input_attn_kv * inp, ggml_tensor * inp_pos, ggml_tensor * cur, 692const llama_model & model, int il); 693}; 694 695std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 696}; 697 698 699struct llama_model_plamo3 : public llama_model_base { 700llama_model_plamo3( const struct llama_model_params & params) : llama_model_base ( params ) {} 701void load_arch_hparams ( llama_model_loader & ml) override; 702void load_arch_tensors ( llama_model_loader & ml) override; 703 704template < bool iswa > 705struct graph : public llm_graph_context { 706graph ( const llama_model & model, const llm_graph_params & params); 707}; 708 709std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 710}; 711 712 713struct llama_model_gpt2 : public llama_model_base { 714llama_model_gpt2( const struct llama_model_params & params) : llama_model_base ( params ) {} 715void load_arch_hparams ( llama_model_loader & ml) override; 716void load_arch_tensors ( llama_model_loader & ml) override; 717 718struct graph : public llm_graph_context { 719graph( const llama_model & model, const llm_graph_params & params); 720}; 721 722std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 723}; 724 725 726struct llama_model_pockettts : public llama_model_base { 727llama_model_pockettts( const struct llama_model_params & params) : llama_model_base ( params ) {} 728void load_arch_hparams ( llama_model_loader & ml) override; 729void load_arch_tensors ( llama_model_loader & ml) override; 730 731struct graph : public llm_graph_context { 732graph( const llama_model & model, const llm_graph_params & params); 733}; 734 735std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 736}; 737 738 739struct llama_model_codeshell : public llama_model_base { 740llama_model_codeshell( const struct llama_model_params & params) : llama_model_base ( params ) {} 741void load_arch_hparams ( llama_model_loader & ml) override; 742void load_arch_tensors ( llama_model_loader & ml) override; 743 744struct graph : public llm_graph_context { 745graph( const llama_model & model, const llm_graph_params & params); 746}; 747 748std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 749}; 750 751 752struct llama_model_orion : public llama_model_base { 753llama_model_orion( const struct llama_model_params & params) : llama_model_base ( params ) {} 754void load_arch_hparams ( llama_model_loader & ml) override; 755void load_arch_tensors ( llama_model_loader & ml) override; 756 757struct graph : public llm_graph_context { 758graph( const llama_model & model, const llm_graph_params & params); 759}; 760 761std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 762}; 763 764 765struct llama_model_internlm2 : public llama_model_base { 766llama_model_internlm2( const struct llama_model_params & params) : llama_model_base ( params ) {} 767void load_arch_hparams ( llama_model_loader & ml) override; 768void load_arch_tensors ( llama_model_loader & ml) override; 769 770struct graph : public llm_graph_context { 771graph( const llama_model & model, const llm_graph_params & params); 772}; 773 774std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 775}; 776 777 778struct llama_model_minicpm3 : public llama_model_base { 779llama_model_minicpm3( const struct llama_model_params & params) : llama_model_base ( params ) {} 780void load_arch_hparams ( llama_model_loader & ml) override; 781void load_arch_tensors ( llama_model_loader & ml) override; 782 783struct graph : public llm_graph_context { 784graph( const llama_model & model, const llm_graph_params & params); 785}; 786 787std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 788}; 789 790 791struct llama_model_gemma : public llama_model_base { 792llama_model_gemma( const struct llama_model_params & params) : llama_model_base ( params ) {} 793void load_arch_hparams ( llama_model_loader & ml) override; 794void load_arch_tensors ( llama_model_loader & ml) override; 795 796struct graph : public llm_graph_context { 797graph( const llama_model & model, const llm_graph_params & params); 798}; 799 800std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 801}; 802 803 804struct llama_model_gemma2 : public llama_model_base { 805llama_model_gemma2( const struct llama_model_params & params) : llama_model_base ( params ) {} 806void load_arch_hparams ( llama_model_loader & ml) override; 807void load_arch_tensors ( llama_model_loader & ml) override; 808 809struct graph : public llm_graph_context { 810graph( const llama_model & model, const llm_graph_params & params); 811}; 812 813std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 814}; 815 816 817struct llama_model_gemma3 : public llama_model_base { 818llama_model_gemma3( const struct llama_model_params & params) : llama_model_base ( params ) {} 819void load_arch_hparams ( llama_model_loader & ml) override; 820void load_arch_tensors ( llama_model_loader & ml) override; 821 822template < bool iswa > 823struct graph : public llm_graph_context { 824graph ( const llama_model & model, const llm_graph_params & params); 825}; 826 827std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 828}; 829 830 831struct llama_model_gemma3n : public llama_model_base { 832llama_model_gemma3n( const struct llama_model_params & params) : llama_model_base ( params ) {} 833void load_arch_hparams ( llama_model_loader & ml) override; 834void load_arch_tensors ( llama_model_loader & ml) override; 835 836struct graph : public llm_graph_context { 837const llama_model & model; 838 839const int64_t n_embd_head; 840const int64_t n_embd_altup; 841const int64_t n_altup; 842const int i_altup_act; 843const int n_layer_sparsity = 10 ; // number of layers using activation sparsity 844const float f_sparsity_std_mul = 1.6448533535003662f ; // std_multiplier = normal_dist.icdf(0.95) 845 846graph( const llama_model & model, const llm_graph_params & params); 847ggml_tensor * calc_magnitude ( ggml_tensor * x); 848 849// TODO: refactor in common "per-layer" functionality [TAG_PER_LAYER] 850ggml_tensor * build_inp_per_layer (); 851ggml_tensor * project_per_layer_inputs ( ggml_tensor * inp_batch, ggml_tensor * inp_per_layer); 852 853ggml_tensor * gaussian_topk ( ggml_tensor * x); 854ggml_tensor * altup_compute_router_modalities ( ggml_tensor * x, int il); 855ggml_tensor * altup_predict ( ggml_tensor * cur, int il); 856ggml_tensor * laurel ( ggml_tensor * cur, int il); 857ggml_tensor * altup_correct ( ggml_tensor * predictions, ggml_tensor * activated, int il); 858}; 859 860std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 861}; 862 863 864struct llama_model_gemma4 : public llama_model_base { 865llama_model_gemma4( const struct llama_model_params & params) : llama_model_base ( params ) {} 866void load_arch_hparams ( llama_model_loader & ml) override; 867void load_arch_tensors ( llama_model_loader & ml) override; 868 869struct graph : public llm_graph_context { 870const llama_model & model; 871 872const int64_t n_embd_per_layer; 873 874graph( const llama_model & model, const llm_graph_params & params); 875 876// TODO: refactor in common "per-layer" functionality [TAG_PER_LAYER] 877ggml_tensor * build_inp_per_layer (); 878ggml_tensor * project_per_layer_inputs ( ggml_tensor * inp_batch, ggml_tensor * inp_per_layer); 879}; 880 881std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 882}; 883 884 885struct llama_model_gemma4_assistant : public llama_model_base { 886llama_model_gemma4_assistant( const struct llama_model_params & params) : llama_model_base ( params ) {} 887void load_arch_hparams ( llama_model_loader & ml) override; 888void load_arch_tensors ( llama_model_loader & ml) override; 889 890struct graph : public llm_graph_context { 891graph( const llama_model & model, const llm_graph_params & params); 892}; 893 894std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 895}; 896 897 898struct llama_model_gemma_embedding : public llama_model_base { 899llama_model_gemma_embedding( const struct llama_model_params & params) : llama_model_base ( params ) {} 900void load_arch_hparams ( llama_model_loader & ml) override; 901void load_arch_tensors ( llama_model_loader & ml) override; 902 903struct graph : public llm_graph_context { 904graph( const llama_model & model, const llm_graph_params & params); 905}; 906 907std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 908}; 909 910 911struct llama_model_starcoder2 : public llama_model_base { 912llama_model_starcoder2( const struct llama_model_params & params) : llama_model_base ( params ) {} 913void load_arch_hparams ( llama_model_loader & ml) override; 914void load_arch_tensors ( llama_model_loader & ml) override; 915 916struct graph : public llm_graph_context { 917graph( const llama_model & model, const llm_graph_params & params); 918}; 919 920std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 921}; 922 923 924struct llama_model_mamba : public llama_model_base { 925llama_model_mamba( const struct llama_model_params & params) : llama_model_base ( params ) {} 926void load_arch_hparams ( llama_model_loader & ml) override; 927void load_arch_tensors ( llama_model_loader & ml) override; 928 929struct graph : public llm_build_mamba_base { 930graph( const llama_model & model, const llm_graph_params & params); 931}; 932 933std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 934}; 935 936 937struct llama_model_mamba2 : public llama_model_base { 938llama_model_mamba2( const struct llama_model_params & params) : llama_model_base ( params ) {} 939void load_arch_hparams ( llama_model_loader & ml) override; 940void load_arch_tensors ( llama_model_loader & ml) override; 941 942using graph = llama_model_mamba::graph; 943 944std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 945}; 946 947 948struct llama_model_maple : public llama_model_base { 949llama_model_maple( const struct llama_model_params & params) : llama_model_base ( params ) {} 950void load_arch_hparams ( llama_model_loader & ml) override; 951void load_arch_tensors ( llama_model_loader & ml) override; 952 953struct graph : public llm_graph_context { 954graph( const llama_model & model, const llm_graph_params & params); 955}; 956 957std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 958}; 959 960 961struct llama_model_jamba : public llama_model_base { 962llama_model_jamba( const struct llama_model_params & params) : llama_model_base ( params ) {} 963void load_arch_hparams ( llama_model_loader & ml) override; 964void load_arch_tensors ( llama_model_loader & ml) override; 965 966struct graph : public llm_build_mamba_base { 967graph( const llama_model & model, const llm_graph_params & params); 968}; 969 970std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 971}; 972 973 974struct llama_model_xverse : public llama_model_base { 975llama_model_xverse( const struct llama_model_params & params) : llama_model_base ( params ) {} 976void load_arch_hparams ( llama_model_loader & ml) override; 977void load_arch_tensors ( llama_model_loader & ml) override; 978 979struct graph : public llm_graph_context { 980graph( const llama_model & model, const llm_graph_params & params); 981}; 982 983std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 984}; 985 986 987struct llama_model_command_r : public llama_model_base { 988llama_model_command_r( const struct llama_model_params & params) : llama_model_base ( params ) {} 989void load_arch_hparams ( llama_model_loader & ml) override; 990void load_arch_tensors ( llama_model_loader & ml) override; 991 992struct graph : public llm_graph_context { 993graph( const llama_model & model, const llm_graph_params & params); 994}; 995 996std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 997}; 998 999 1000struct llama_model_cohere2 : public llama_model_base { 1001llama_model_cohere2( const struct llama_model_params & params) : llama_model_base ( params ) {} 1002void load_arch_hparams ( llama_model_loader & ml) override; 1003void load_arch_tensors ( llama_model_loader & ml) override; 1004 1005struct graph : public llm_graph_context { 1006graph( const llama_model & model, const llm_graph_params & params); 1007}; 1008 1009std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1010}; 1011 1012 1013struct llama_model_cohere2moe : public llama_model_base { 1014llama_model_cohere2moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 1015void load_arch_hparams ( llama_model_loader & ml) override; 1016void load_arch_tensors ( llama_model_loader & ml) override; 1017 1018struct graph : public llm_graph_context { 1019graph( const llama_model & model, const llm_graph_params & params); 1020}; 1021 1022struct graph_mtp : public llm_graph_context { 1023graph_mtp( const llama_model & model, const llm_graph_params & params); 1024}; 1025 1026std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1027}; 1028 1029 1030struct llama_model_dbrx : public llama_model_base { 1031llama_model_dbrx( const struct llama_model_params & params) : llama_model_base ( params ) {} 1032void load_arch_hparams ( llama_model_loader & ml) override; 1033void load_arch_tensors ( llama_model_loader & ml) override; 1034 1035struct graph : public llm_graph_context { 1036graph( const llama_model & model, const llm_graph_params & params); 1037}; 1038 1039std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1040}; 1041 1042 1043struct llama_model_olmo : public llama_model_base { 1044llama_model_olmo( const struct llama_model_params & params) : llama_model_base ( params ) {} 1045void load_arch_hparams ( llama_model_loader & ml) override; 1046void load_arch_tensors ( llama_model_loader & ml) override; 1047 1048struct graph : public llm_graph_context { 1049graph( const llama_model & model, const llm_graph_params & params); 1050}; 1051 1052std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1053}; 1054 1055 1056struct llama_model_olmo2 : public llama_model_base { 1057llama_model_olmo2( const struct llama_model_params & params) : llama_model_base ( params ) {} 1058void load_arch_hparams ( llama_model_loader & ml) override; 1059void load_arch_tensors ( llama_model_loader & ml) override; 1060 1061template < bool iswa > 1062struct graph : public llm_graph_context { 1063graph ( const llama_model & model, const llm_graph_params & params); 1064}; 1065 1066std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1067}; 1068 1069 1070struct llama_model_olmoe : public llama_model_base { 1071llama_model_olmoe( const struct llama_model_params & params) : llama_model_base ( params ) {} 1072void load_arch_hparams ( llama_model_loader & ml) override; 1073void load_arch_tensors ( llama_model_loader & ml) override; 1074 1075struct graph : public llm_graph_context { 1076graph( const llama_model & model, const llm_graph_params & params); 1077}; 1078 1079std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1080}; 1081 1082 1083struct llama_model_muse_glimmer : public llama_model_base { 1084llama_model_muse_glimmer( const struct llama_model_params & params) : llama_model_base ( params ) {} 1085void load_arch_hparams ( llama_model_loader & ml) override; 1086void load_arch_tensors ( llama_model_loader & ml) override; 1087 1088struct graph : public llm_graph_context { 1089graph( const llama_model & model, const llm_graph_params & params); 1090}; 1091 1092std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1093}; 1094 1095 1096struct llama_model_openelm : public llama_model_base { 1097llama_model_openelm( const struct llama_model_params & params) : llama_model_base ( params ) {} 1098void load_arch_hparams ( llama_model_loader & ml) override; 1099void load_arch_tensors ( llama_model_loader & ml) override; 1100 1101struct graph : public llm_graph_context { 1102graph( const llama_model & model, const llm_graph_params & params); 1103}; 1104 1105std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1106}; 1107 1108 1109struct llama_model_gptneox : public llama_model_base { 1110llama_model_gptneox( const struct llama_model_params & params) : llama_model_base ( params ) {} 1111void load_arch_hparams ( llama_model_loader & ml) override; 1112void load_arch_tensors ( llama_model_loader & ml) override; 1113 1114struct graph : public llm_graph_context { 1115graph( const llama_model & model, const llm_graph_params & params); 1116}; 1117 1118std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1119}; 1120 1121 1122struct llama_model_arctic : public llama_model_base { 1123llama_model_arctic( const struct llama_model_params & params) : llama_model_base ( params ) {} 1124void load_arch_hparams ( llama_model_loader & ml) override; 1125void load_arch_tensors ( llama_model_loader & ml) override; 1126 1127struct graph : public llm_graph_context { 1128graph( const llama_model & model, const llm_graph_params & params); 1129}; 1130 1131std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1132}; 1133 1134 1135struct llama_model_deepseek : public llama_model_base { 1136llama_model_deepseek( const struct llama_model_params & params) : llama_model_base ( params ) {} 1137void load_arch_hparams ( llama_model_loader & ml) override; 1138void load_arch_tensors ( llama_model_loader & ml) override; 1139 1140struct graph : public llm_graph_context { 1141graph( const llama_model & model, const llm_graph_params & params); 1142}; 1143 1144std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1145}; 1146 1147 1148struct llama_model_deepseek2 : public llama_model_base { 1149llama_model_deepseek2( const struct llama_model_params & params) : llama_model_base ( params ) {} 1150void load_arch_hparams ( llama_model_loader & ml) override; 1151void load_arch_tensors ( llama_model_loader & ml) override; 1152 1153struct graph : public llm_graph_context { 1154graph( const llama_model & model, const llm_graph_params & params); 1155}; 1156 1157struct graph_mtp : public llm_graph_context { 1158graph_mtp( const llama_model & model, const llm_graph_params & params); 1159}; 1160 1161std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1162}; 1163 1164 1165struct llama_model_deepseek32 : public llama_model_base { 1166llama_model_deepseek32( const struct llama_model_params & params) : llama_model_base ( params ) {} 1167void load_arch_hparams ( llama_model_loader & ml) override; 1168void load_arch_tensors ( llama_model_loader & ml) override; 1169 1170struct graph : public llm_graph_context { 1171graph( const llama_model & model, const llm_graph_params & params); 1172}; 1173 1174struct graph_mtp : public llm_graph_context { 1175graph_mtp( const llama_model & model, const llm_graph_params & params); 1176}; 1177 1178std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1179}; 1180 1181 1182struct llama_model_dots3note : public llama_model_base { 1183llama_model_dots3note( const struct llama_model_params & params) : llama_model_base ( params ) {} 1184void load_arch_hparams ( llama_model_loader & ml) override; 1185void load_arch_tensors ( llama_model_loader & ml) override; 1186 1187struct graph : public llm_graph_context { 1188graph( const llama_model & model, const llm_graph_params & params); 1189}; 1190 1191std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1192}; 1193 1194struct llama_model_deepseek4 : public llama_model_base { 1195llama_model_deepseek4( const struct llama_model_params & params) : llama_model_base ( params ) {} 1196void load_arch_hparams ( llama_model_loader & ml) override; 1197void load_arch_tensors ( llama_model_loader & ml) override; 1198 1199struct graph : public llm_graph_context { 1200graph( const llm_graph_params & params) : llm_graph_context ( params ) {} 1201graph( const llama_model & model, const llm_graph_params & params); 1202 1203ggml_tensor * build_hc_pre ( 1204ggml_tensor * x, 1205ggml_tensor * hc_fn, 1206ggml_tensor * hc_scale, 1207ggml_tensor * hc_base, 1208ggml_tensor ** post, 1209ggml_tensor ** comb, 1210int il) const; 1211 1212ggml_tensor * build_hc_post ( 1213ggml_tensor * x, 1214ggml_tensor * residual, 1215ggml_tensor * post, 1216ggml_tensor * comb, 1217int il) const; 1218 1219ggml_tensor * build_hc_head ( 1220ggml_tensor * x, 1221ggml_tensor * hc_fn, 1222ggml_tensor * hc_scale, 1223ggml_tensor * hc_base) const; 1224 1225ggml_tensor * build_attention ( 1226const llama_model & model, 1227llm_graph_input_dsv4 * inp_dsv4, 1228ggml_tensor * cur, 1229ggml_tensor * inp_pos, 1230int il) const; 1231 1232ggml_tensor * build_attention ( 1233const llama_model & model, 1234llm_graph_input_attn_k_iswa * inp_mtp, 1235ggml_tensor * cur, 1236ggml_tensor * inp_pos, 1237int il) const; 1238 1239ggml_tensor * build_attention_impl ( 1240const llama_model & model, 1241llm_graph_input_dsv4 * inp_dsv4, 1242llm_graph_input_attn_k_iswa * inp_mtp, 1243ggml_tensor * cur, 1244ggml_tensor * inp_pos, 1245int il) const; 1246 1247ggml_tensor * build_hca_compressed_kv_from_state ( 1248ggml_tensor * kv_state, 1249ggml_tensor * score_state, 1250ggml_tensor * state_read_idxs, 1251ggml_tensor * comp_pos, 1252ggml_tensor * norm, 1253int64_t n_embd_head, 1254const char * name, 1255int il) const; 1256 1257ggml_tensor * build_overlap_compressed_kv_from_state ( 1258ggml_tensor * kv_state, 1259ggml_tensor * score_state, 1260ggml_tensor * state_read_idxs, 1261ggml_tensor * comp_pos, 1262ggml_tensor * norm, 1263int64_t ratio, 1264int64_t n_embd_head, 1265const char * name, 1266int il) const; 1267 1268ggml_tensor * build_lid_top_k ( 1269const llama_model & model, 1270llm_graph_input_dsv4 * inp_dsv4, 1271ggml_tensor * qr, 1272ggml_tensor * cur, 1273ggml_tensor * inp_pos, 1274int il) const; 1275 1276ggml_tensor * build_top_k_mask ( 1277ggml_tensor * kq_mask, 1278ggml_tensor * top_k, 1279const char * name, 1280int il) const; 1281 1282ggml_tensor * build_csa_lid_attention ( 1283const llama_model & model, 1284llm_graph_input_dsv4 * inp_dsv4, 1285llm_graph_input_dsv4_raw * inp_attn, 1286ggml_tensor * q, 1287ggml_tensor * kv, 1288ggml_tensor * qr, 1289ggml_tensor * cur, 1290ggml_tensor * inp_pos, 1291ggml_tensor * sinks, 1292float kq_scale, 1293int il) const; 1294 1295ggml_tensor * build_hca_attention ( 1296llm_graph_input_dsv4 * inp_dsv4, 1297llm_graph_input_dsv4_raw * inp_attn, 1298ggml_tensor * q, 1299ggml_tensor * kv, 1300ggml_tensor * sinks, 1301float kq_scale, 1302int il) const; 1303 1304ggml_tensor * build_raw_attention ( 1305llm_graph_input_dsv4_raw * inp_attn, 1306ggml_tensor * q, 1307ggml_tensor * kv, 1308ggml_tensor * sinks, 1309float kq_scale, 1310int il) const; 1311 1312ggml_tensor * build_hc_pre ( 1313ggml_tensor * x, 1314ggml_tensor * weights, 1315int il) const; 1316 1317ggml_tensor * build_hc_sinkhorn ( 1318ggml_tensor * comb, 1319int il) const; 1320}; 1321 1322struct graph_mtp : public graph { 1323graph_mtp( const llama_model & model, const llm_graph_params & params); 1324}; 1325 1326std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1327}; 1328 1329 1330struct llama_model_deepseek2ocr : public llama_model_base { 1331llama_model_deepseek2ocr( const struct llama_model_params & params) : llama_model_base ( params ) {} 1332void load_arch_hparams ( llama_model_loader & ml) override; 1333void load_arch_tensors ( llama_model_loader & ml) override; 1334 1335using graph = llama_model_deepseek2::graph; 1336 1337std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1338}; 1339 1340 1341struct llama_model_glm_dsa : public llama_model_base { 1342llama_model_glm_dsa( const struct llama_model_params & params) : llama_model_base ( params ) {} 1343void load_arch_hparams ( llama_model_loader & ml) override; 1344void load_arch_tensors ( llama_model_loader & ml) override; 1345 1346struct graph : public llm_graph_context { 1347graph( const llama_model & model, const llm_graph_params & params); 1348}; 1349 1350struct graph_mtp : public llm_graph_context { 1351graph_mtp( const llama_model & model, const llm_graph_params & params); 1352}; 1353 1354std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1355}; 1356 1357struct llama_model_eagle3 : public llama_model_base { 1358llama_model_eagle3( const struct llama_model_params & params) : llama_model_base ( params ) {} 1359void load_arch_hparams ( llama_model_loader & ml) override; 1360void load_arch_tensors ( llama_model_loader & ml) override; 1361 1362template < bool is_enc > 1363struct graph : public llm_graph_context { 1364graph ( const llama_model & model, const llm_graph_params & params); 1365 1366ggml_tensor * build_inp_embd_enc () const; 1367}; 1368 1369std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1370}; 1371 1372 1373struct llama_model_dflash : public llama_model_base { 1374llama_model_dflash( const struct llama_model_params & params) : llama_model_base ( params ) {} 1375void load_arch_hparams ( llama_model_loader & ml) override; 1376void load_arch_tensors ( llama_model_loader & ml) override; 1377 1378template < bool is_enc > 1379struct graph : public llm_graph_context { 1380graph ( const llama_model & model, const llm_graph_params & params); 1381 1382ggml_tensor * build_inp_embd_enc () const; 1383}; 1384 1385struct graph_dsv4 : public llama_model_deepseek4 ::graph { 1386graph_dsv4( const llama_model & model, const llm_graph_params & params); 1387}; 1388 1389std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1390}; 1391 1392 1393struct llama_model_mistral4 : public llama_model_deepseek2 { 1394llama_model_mistral4( const struct llama_model_params & params) : llama_model_deepseek2 ( params ) {} 1395// reuse load_arch_hparams and load_arch_tensors from llama_model_deepseek2 1396 1397using graph = llama_model_deepseek2::graph; 1398 1399std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1400}; 1401 1402 1403struct llama_model_chatglm : public llama_model_base { 1404llama_model_chatglm( const struct llama_model_params & params) : llama_model_base ( params ) {} 1405void load_arch_hparams ( llama_model_loader & ml) override; 1406void load_arch_tensors ( llama_model_loader & ml) override; 1407 1408struct graph : public llm_graph_context { 1409graph( const llama_model & model, const llm_graph_params & params); 1410}; 1411 1412std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1413}; 1414 1415 1416struct llama_model_glm4 : public llama_model_base { 1417llama_model_glm4( const struct llama_model_params & params) : llama_model_base ( params ) {} 1418void load_arch_hparams ( llama_model_loader & ml) override; 1419void load_arch_tensors ( llama_model_loader & ml) override; 1420 1421struct graph : public llm_graph_context { 1422graph( const llama_model & model, const llm_graph_params & params); 1423}; 1424 1425std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1426}; 1427 1428 1429struct llama_model_glm4_moe : public llama_model_base { 1430llama_model_glm4_moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 1431void load_arch_hparams ( llama_model_loader & ml) override; 1432void load_arch_tensors ( llama_model_loader & ml) override; 1433 1434struct graph : public llm_graph_context { 1435graph( const llama_model & model, const llm_graph_params & params); 1436}; 1437 1438struct graph_mtp : public llm_graph_context { 1439graph_mtp( const llama_model & model, const llm_graph_params & params); 1440}; 1441 1442std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1443}; 1444 1445 1446struct llama_model_bitnet : public llama_model_base { 1447llama_model_bitnet( const struct llama_model_params & params) : llama_model_base ( params ) {} 1448void load_arch_hparams ( llama_model_loader & ml) override; 1449void load_arch_tensors ( llama_model_loader & ml) override; 1450 1451struct graph : public llm_graph_context { 1452graph( const llama_model & model, const llm_graph_params & params); 1453}; 1454 1455std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1456}; 1457 1458 1459struct llama_model_t5 : public llama_model_base { 1460llama_model_t5( const struct llama_model_params & params) : llama_model_base ( params ) {} 1461void load_arch_hparams ( llama_model_loader & ml) override; 1462void load_arch_tensors ( llama_model_loader & ml) override; 1463 1464template < bool is_enc > 1465struct graph : public llm_graph_context { 1466graph ( const llama_model & model, const llm_graph_params & params); 1467}; 1468 1469std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1470}; 1471 1472 1473struct llama_model_aliceai_t5_moe : public llama_model_base { 1474llama_model_aliceai_t5_moe( const llama_model_params & params) : llama_model_base ( params ) {} 1475void load_arch_hparams ( llama_model_loader & ml) override; 1476void load_arch_tensors ( llama_model_loader & ml) override; 1477 1478uint32_t n_head_kv_enc = 0 ; 1479std ::vector < llama_layer > layers_enc; 1480 1481template < bool is_enc > 1482struct graph : public llm_graph_context { 1483graph ( const llama_model_aliceai_t5_moe & model, const llm_graph_params & params); 1484}; 1485 1486std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1487}; 1488 1489 1490struct llama_model_t5encoder : public llama_model_base { 1491llama_model_t5encoder( const struct llama_model_params & params) : llama_model_base ( params ) {} 1492void load_arch_hparams ( llama_model_loader & ml) override; 1493void load_arch_tensors ( llama_model_loader & ml) override; 1494 1495using graph = llama_model_t5::graph < true > ; 1496 1497std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1498}; 1499 1500 1501struct llama_model_jais : public llama_model_base { 1502llama_model_jais( const struct llama_model_params & params) : llama_model_base ( params ) {} 1503void load_arch_hparams ( llama_model_loader & ml) override; 1504void load_arch_tensors ( llama_model_loader & ml) override; 1505 1506struct graph : public llm_graph_context { 1507graph( const llama_model & model, const llm_graph_params & params); 1508}; 1509 1510std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1511}; 1512 1513 1514struct llama_model_jais2 : public llama_model_base { 1515llama_model_jais2( const struct llama_model_params & params) : llama_model_base ( params ) {} 1516void load_arch_hparams ( llama_model_loader & ml) override; 1517void load_arch_tensors ( llama_model_loader & ml) override; 1518 1519struct graph : public llm_graph_context { 1520graph( const llama_model & model, const llm_graph_params & params); 1521}; 1522 1523std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1524}; 1525 1526 1527struct llama_model_nemotron : public llama_model_base { 1528llama_model_nemotron( const struct llama_model_params & params) : llama_model_base ( params ) {} 1529void load_arch_hparams ( llama_model_loader & ml) override; 1530void load_arch_tensors ( llama_model_loader & ml) override; 1531 1532struct graph : public llm_graph_context { 1533graph( const llama_model & model, const llm_graph_params & params); 1534}; 1535 1536std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1537}; 1538 1539 1540struct llama_model_nemotron_h : public llama_model_base { 1541llama_model_nemotron_h( const struct llama_model_params & params) : llama_model_base ( params ) {} 1542void load_arch_hparams ( llama_model_loader & ml) override; 1543void load_arch_tensors ( llama_model_loader & ml) override; 1544 1545struct graph : public llm_build_mamba_base { 1546graph( const llama_model & model, const llm_graph_params & params); 1547ggml_tensor * build_ffn_layer ( ggml_tensor * cur, const llama_model & model, int il); 1548ggml_tensor * build_attention_layer ( ggml_tensor * cur, llm_graph_input_attn_kv * inp_attn, 1549const llama_model & model, int64_t n_embd_head, int il); 1550}; 1551 1552std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1553}; 1554 1555 1556struct llama_model_nemotron_h_moe : public llama_model_nemotron_h { 1557llama_model_nemotron_h_moe( const struct llama_model_params & params) : llama_model_nemotron_h ( params ) {} 1558// reuse load_arch_hparams and load_arch_tensors from llama_model_nemotron_h 1559 1560using graph = llama_model_nemotron_h::graph; 1561 1562struct graph_mtp : public llm_graph_context { 1563graph_mtp( const llama_model & model, const llm_graph_params & params); 1564}; 1565 1566std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1567}; 1568 1569 1570struct llama_model_exaone : public llama_model_base { 1571llama_model_exaone( const struct llama_model_params & params) : llama_model_base ( params ) {} 1572void load_arch_hparams ( llama_model_loader & ml) override; 1573void load_arch_tensors ( llama_model_loader & ml) override; 1574 1575struct graph : public llm_graph_context { 1576graph( const llama_model & model, const llm_graph_params & params); 1577}; 1578 1579std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1580}; 1581 1582 1583struct llama_model_exaone4 : public llama_model_base { 1584llama_model_exaone4( const struct llama_model_params & params) : llama_model_base ( params ) {} 1585void load_arch_hparams ( llama_model_loader & ml) override; 1586void load_arch_tensors ( llama_model_loader & ml) override; 1587 1588template < bool iswa > 1589struct graph : public llm_graph_context { 1590graph ( const llama_model & model, const llm_graph_params & params); 1591}; 1592 1593std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1594}; 1595 1596 1597struct llama_model_exaone_moe : public llama_model_base { 1598llama_model_exaone_moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 1599void load_arch_hparams ( llama_model_loader & ml) override; 1600void load_arch_tensors ( llama_model_loader & ml) override; 1601 1602struct graph : public llm_graph_context { 1603graph( const llama_model & model, const llm_graph_params & params); 1604}; 1605 1606std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1607}; 1608 1609 1610struct llama_model_rwkv6 : public llama_model_base { 1611llama_model_rwkv6( const struct llama_model_params & params) : llama_model_base ( params ) {} 1612void load_arch_hparams ( llama_model_loader & ml) override; 1613void load_arch_tensors ( llama_model_loader & ml) override; 1614 1615struct graph : public llm_build_rwkv6_base { 1616graph( const llama_model & model, const llm_graph_params & params); 1617}; 1618 1619std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1620}; 1621 1622 1623struct llama_model_rwkv6qwen2 : public llama_model_base { 1624llama_model_rwkv6qwen2( const struct llama_model_params & params) : llama_model_base ( params ) {} 1625void load_arch_hparams ( llama_model_loader & ml) override; 1626void load_arch_tensors ( llama_model_loader & ml) override; 1627 1628struct graph : public llm_build_rwkv6_base { 1629graph( const llama_model & model, const llm_graph_params & params); 1630}; 1631 1632std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1633}; 1634 1635 1636struct llama_model_rwkv7 : public llama_model_base { 1637llama_model_rwkv7( const struct llama_model_params & params) : llama_model_base ( params ) {} 1638void load_arch_hparams ( llama_model_loader & ml) override; 1639void load_arch_tensors ( llama_model_loader & ml) override; 1640 1641struct graph : public llm_build_rwkv7_base { 1642graph( const llama_model & model, const llm_graph_params & params); 1643}; 1644 1645std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1646}; 1647 1648 1649struct llama_model_arwkv7 : public llama_model_base { 1650llama_model_arwkv7( const struct llama_model_params & params) : llama_model_base ( params ) {} 1651void load_arch_hparams ( llama_model_loader & ml) override; 1652void load_arch_tensors ( llama_model_loader & ml) override; 1653 1654struct graph : public llm_build_rwkv7_base { 1655graph( const llama_model & model, const llm_graph_params & params); 1656}; 1657 1658std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1659}; 1660 1661 1662struct llama_model_granite : public llama_model_base { 1663llama_model_granite( const struct llama_model_params & params) : llama_model_base ( params ) {} 1664void load_arch_hparams ( llama_model_loader & ml) override; 1665void load_arch_tensors ( llama_model_loader & ml) override; 1666 1667struct graph : public llm_graph_context { 1668graph( const llama_model & model, const llm_graph_params & params); 1669 1670private : 1671ggml_tensor * build_attention_layer ( 1672ggml_tensor * cur, 1673ggml_tensor * inp_pos, 1674llm_graph_input_attn_kv * inp_attn, 1675const llama_model & model, 1676const int64_t n_embd_head, 1677const int il); 1678 1679ggml_tensor * build_layer_ffn ( 1680ggml_tensor * cur, 1681ggml_tensor * inpSA, 1682const llama_model & model, 1683const int il); 1684}; 1685 1686std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1687}; 1688 1689 1690struct llama_model_granite_moe : public llama_model_base { 1691llama_model_granite_moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 1692void load_arch_hparams ( llama_model_loader & ml) override; 1693void load_arch_tensors ( llama_model_loader & ml) override; 1694 1695using graph = llama_model_granite::graph; 1696 1697std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1698}; 1699 1700 1701struct llama_model_granite_switch : public llama_model_base { 1702llama_model_granite_switch( const struct llama_model_params & params) : llama_model_base ( params ) {} 1703void load_arch_hparams ( llama_model_loader & ml) override; 1704void load_arch_tensors ( llama_model_loader & ml) override; 1705 1706uint32_t n_adapters = 0 ; 1707uint32_t max_lora_rank = 0 ; 1708float router_gain = 15.0f ; 1709 1710std ::unordered_map < llama_token, int32_t > adapter_token_to_slot; 1711std ::unordered_map < llama_token, llama_token > adapter_token_to_substitute; 1712 1713struct graph : public llm_graph_context { 1714graph( const llama_model & model, const llm_graph_params & params); 1715 1716private : 1717ggml_tensor * build_switched_lora_delta ( 1718ggml_tensor * lora_a, 1719ggml_tensor * lora_b, 1720ggml_tensor * cur, 1721ggml_tensor * ids); 1722 1723ggml_tensor * build_switched_lora_mm ( 1724ggml_tensor * w, 1725ggml_tensor * lora_a, 1726ggml_tensor * lora_b, 1727ggml_tensor * cur, 1728ggml_tensor * ids); 1729 1730ggml_tensor * build_attention_layer ( 1731ggml_tensor * cur, 1732ggml_tensor * inp_pos, 1733ggml_tensor * adapter_ids, 1734llm_graph_input_attn_kv * inp_attn, 1735const llama_model & model, 1736const int64_t n_embd_head, 1737const int il); 1738 1739ggml_tensor * build_layer_ffn ( 1740ggml_tensor * cur, 1741ggml_tensor * inpSA, 1742ggml_tensor * adapter_ids, 1743const llama_model & model, 1744const int il); 1745}; 1746 1747std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1748}; 1749 1750 1751struct llama_model_minicpm : public llama_model_base { 1752llama_model_minicpm( const struct llama_model_params & params) : llama_model_base ( params ) {} 1753void load_arch_hparams ( llama_model_loader & ml) override; 1754void load_arch_tensors ( llama_model_loader & ml) override; 1755 1756using graph = llama_model_granite::graph; 1757 1758std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1759}; 1760 1761 1762struct llama_model_granite_hybrid : public llama_model_base { 1763llama_model_granite_hybrid( const struct llama_model_params & params) : llama_model_base ( params ) {} 1764void load_arch_hparams ( llama_model_loader & ml) override; 1765void load_arch_tensors ( llama_model_loader & ml) override; 1766 1767struct graph : public llm_build_mamba_base { 1768graph( const llama_model & model, const llm_graph_params & params); 1769ggml_tensor * build_layer_ffn ( ggml_tensor * cur, ggml_tensor * inpSA, const llama_model & model, const int il); 1770ggml_tensor * build_attention_layer ( ggml_tensor * cur, ggml_tensor * inp_pos, llm_graph_input_attn_kv * inp_attn, 1771const llama_model & model, const int64_t n_embd_head, const int il); 1772}; 1773 1774std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1775}; 1776 1777 1778struct llama_model_granite_swa : public llama_model_base { 1779llama_model_granite_swa( const struct llama_model_params & params) : llama_model_base ( params ) {} 1780void load_arch_hparams ( llama_model_loader & ml) override; 1781void load_arch_tensors ( llama_model_loader & ml) override; 1782 1783struct graph : public llm_graph_context { 1784graph( const llama_model & model, const llm_graph_params & params); 1785 1786private : 1787ggml_tensor * build_attention_layer ( 1788ggml_tensor * cur, 1789ggml_tensor * inp_pos, 1790llm_graph_input_attn_kv_iswa * inp_attn, 1791const llama_model & model, 1792const int64_t n_embd_head, 1793const int il); 1794 1795ggml_tensor * build_layer_ffn ( 1796ggml_tensor * cur, 1797ggml_tensor * inpSA, 1798const llama_model & model, 1799const int il); 1800}; 1801 1802std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1803}; 1804 1805 1806struct llama_model_chameleon : public llama_model_base { 1807llama_model_chameleon( const struct llama_model_params & params) : llama_model_base ( params ) {} 1808void load_arch_hparams ( llama_model_loader & ml) override; 1809void load_arch_tensors ( llama_model_loader & ml) override; 1810 1811struct graph : public llm_graph_context { 1812graph( const llama_model & model, const llm_graph_params & params); 1813}; 1814 1815std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1816}; 1817 1818 1819struct llama_model_wavtokenizer_dec : public llama_model_base { 1820llama_model_wavtokenizer_dec( const struct llama_model_params & params) : llama_model_base ( params ) {} 1821void load_arch_hparams ( llama_model_loader & ml) override; 1822void load_arch_tensors ( llama_model_loader & ml) override; 1823 1824struct graph : public llm_graph_context { 1825graph( const llama_model & model, const llm_graph_params & params); 1826}; 1827 1828std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1829}; 1830 1831 1832struct llama_model_plm : public llama_model_base { 1833llama_model_plm( const struct llama_model_params & params) : llama_model_base ( params ) {} 1834void load_arch_hparams ( llama_model_loader & ml) override; 1835void load_arch_tensors ( llama_model_loader & ml) override; 1836 1837struct graph : public llm_graph_context { 1838graph( const llama_model & model, const llm_graph_params & params); 1839}; 1840 1841std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1842}; 1843 1844 1845struct llama_model_bailingmoe : public llama_model_base { 1846llama_model_bailingmoe( const struct llama_model_params & params) : llama_model_base ( params ) {} 1847void load_arch_hparams ( llama_model_loader & ml) override; 1848void load_arch_tensors ( llama_model_loader & ml) override; 1849 1850struct graph : public llm_graph_context { 1851graph( const llama_model & model, const llm_graph_params & params); 1852}; 1853 1854std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1855}; 1856 1857 1858struct llama_model_bailingmoe2 : public llama_model_base { 1859llama_model_bailingmoe2( const struct llama_model_params & params) : llama_model_base ( params ) {} 1860void load_arch_hparams ( llama_model_loader & ml) override; 1861void load_arch_tensors ( llama_model_loader & ml) override; 1862 1863struct graph : public llm_graph_context { 1864graph( const llama_model & model, const llm_graph_params & params); 1865}; 1866 1867std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1868}; 1869 1870 1871struct llama_model_bailingmoe3 : public llama_model_base { 1872llama_model_bailingmoe3( const struct llama_model_params & params) : llama_model_base ( params ) {} 1873void load_arch_hparams ( llama_model_loader & ml) override; 1874void load_arch_tensors ( llama_model_loader & ml) override; 1875 1876struct graph : public llm_build_delta_net_base { 1877graph( const llama_model & model, const llm_graph_params & params); 1878 1879const llama_model & model; 1880}; 1881 1882struct graph_mtp : public llm_graph_context { 1883graph_mtp( const llama_model & model, const llm_graph_params & params); 1884}; 1885 1886std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1887}; 1888 1889 1890struct llama_model_seed_oss : public llama_model_base { 1891llama_model_seed_oss( const struct llama_model_params & params) : llama_model_base ( params ) {} 1892void load_arch_hparams ( llama_model_loader & ml) override; 1893void load_arch_tensors ( llama_model_loader & ml) override; 1894 1895struct graph : public llm_graph_context { 1896graph( const llama_model & model, const llm_graph_params & params); 1897}; 1898 1899std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1900}; 1901 1902 1903struct llama_model_dots1 : public llama_model_base { 1904llama_model_dots1( const struct llama_model_params & params) : llama_model_base ( params ) {} 1905void load_arch_hparams ( llama_model_loader & ml) override; 1906void load_arch_tensors ( llama_model_loader & ml) override; 1907 1908struct graph : public llm_graph_context { 1909graph( const llama_model & model, const llm_graph_params & params); 1910}; 1911 1912std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1913}; 1914 1915 1916struct llama_model_arcee : public llama_model_base { 1917llama_model_arcee( const struct llama_model_params & params) : llama_model_base ( params ) {} 1918void load_arch_hparams ( llama_model_loader & ml) override; 1919void load_arch_tensors ( llama_model_loader & ml) override; 1920 1921struct graph : public llm_graph_context { 1922graph( const llama_model & model, const llm_graph_params & params); 1923}; 1924 1925std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1926}; 1927 1928 1929struct llama_model_afmoe : public llama_model_base { 1930llama_model_afmoe( const struct llama_model_params & params) : llama_model_base ( params ) {} 1931void load_arch_hparams ( llama_model_loader & ml) override; 1932void load_arch_tensors ( llama_model_loader & ml) override; 1933 1934struct graph : public llm_graph_context { 1935graph( const llama_model & model, const llm_graph_params & params); 1936}; 1937 1938std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1939}; 1940 1941 1942struct llama_model_laguna : public llama_model_base { 1943llama_model_laguna( const struct llama_model_params & params) : llama_model_base ( params ) {} 1944void load_arch_hparams ( llama_model_loader & ml) override; 1945void load_arch_tensors ( llama_model_loader & ml) override; 1946 1947struct graph : public llm_graph_context { 1948graph( const llama_model & model, const llm_graph_params & params); 1949}; 1950 1951std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1952}; 1953 1954 1955struct llama_model_ernie4_5 : public llama_model_base { 1956llama_model_ernie4_5( const struct llama_model_params & params) : llama_model_base ( params ) {} 1957void load_arch_hparams ( llama_model_loader & ml) override; 1958void load_arch_tensors ( llama_model_loader & ml) override; 1959 1960struct graph : public llm_graph_context { 1961graph( const llama_model & model, const llm_graph_params & params); 1962}; 1963 1964std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1965}; 1966 1967 1968struct llama_model_ernie4_5_moe : public llama_model_ernie4_5 { 1969llama_model_ernie4_5_moe( const struct llama_model_params & params) : llama_model_ernie4_5 ( params ) {} 1970// reuse load_arch_hparams and load_arch_tensors from llama_model_ernie4_5 1971 1972struct graph : public llm_graph_context { 1973graph( const llama_model & model, const llm_graph_params & params); 1974}; 1975 1976std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1977}; 1978 1979 1980struct llama_model_paddleocr : public llama_model_ernie4_5 { 1981llama_model_paddleocr( const struct llama_model_params & params) : llama_model_ernie4_5 ( params ) {} 1982// reuse load_arch_hparams and load_arch_tensors from llama_model_ernie4_5 1983 1984struct graph : public llm_graph_context { 1985graph( const llama_model & model, const llm_graph_params & params); 1986}; 1987 1988std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 1989}; 1990 1991 1992struct llama_model_hunyuan_moe : public llama_model_base { 1993llama_model_hunyuan_moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 1994void load_arch_hparams ( llama_model_loader & ml) override; 1995void load_arch_tensors ( llama_model_loader & ml) override; 1996 1997struct graph : public llm_graph_context { 1998graph( const llama_model & model, const llm_graph_params & params); 1999}; 2000 2001std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2002}; 2003 2004struct llama_model_hy_v3 : public llama_model_base { 2005llama_model_hy_v3( const struct llama_model_params & params) : llama_model_base ( params ) {} 2006void load_arch_hparams ( llama_model_loader & ml) override; 2007void load_arch_tensors ( llama_model_loader & ml) override; 2008 2009struct graph : public llm_graph_context { 2010graph( const llama_model & model, const llm_graph_params & params); 2011}; 2012 2013struct graph_mtp : public llm_graph_context { 2014graph_mtp( const llama_model & model, const llm_graph_params & params); 2015}; 2016 2017std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2018}; 2019 2020 2021struct llama_model_hy_v4 : public llama_model_base { 2022llama_model_hy_v4( const struct llama_model_params & params) : llama_model_base ( params ) {} 2023void load_arch_hparams ( llama_model_loader & ml) override; 2024void load_arch_tensors ( llama_model_loader & ml) override; 2025 2026struct graph : public llm_graph_context { 2027graph( const llama_model & model, const llm_graph_params & params); 2028 2029// iHC (independent Hyper-Connections): pre reduces the hc streams to one and returns the 2030// per-stream post gates, post writes the sublayer output back into the streams, head 2031// collapses the streams before the final norm. 2032ggml_tensor * build_hc_pre ( 2033ggml_tensor * x, 2034ggml_tensor * hc_fn, 2035ggml_tensor * hc_scale, 2036ggml_tensor * hc_base, 2037ggml_tensor ** post, 2038int il) const; 2039 2040ggml_tensor * build_hc_post ( 2041ggml_tensor * x, 2042ggml_tensor * residual, 2043ggml_tensor * post, 2044int il) const; 2045 2046ggml_tensor * build_hc_head ( 2047ggml_tensor * x, 2048ggml_tensor * hc_fn, 2049ggml_tensor * hc_scale, 2050ggml_tensor * hc_base) const; 2051 2052ggml_tensor * build_attention ( 2053const llama_model & model, 2054llm_graph_input_attn_k * inp_attn, 2055ggml_tensor * cur, 2056ggml_tensor * inp_pos, 2057float kq_scale, 2058int il) const; 2059 2060// DSA lightning indexer: top-k KV positions for this layer. Only "full" layers compute 2061// it, "shared" layers reuse the last preceding full layer result through last_top_k. 2062ggml_tensor * build_indexer_top_k ( 2063const llama_model & model, 2064llm_graph_input_attn_k_dsa * inp_attn_dsa, 2065ggml_tensor * cur, 2066ggml_tensor * qr, 2067ggml_tensor * inp_pos, 2068int il) const; 2069 2070ggml_tensor * build_attention_dsa ( 2071const llama_model & model, 2072llm_graph_input_attn_k_dsa * inp_attn_dsa, 2073ggml_tensor * cur, 2074ggml_tensor * inp_pos, 2075ggml_tensor ** last_top_k, 2076float kq_scale, 2077int il) const; 2078}; 2079 2080std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2081}; 2082 2083 2084struct llama_model_hunyuan_vl : public llama_model_base { 2085llama_model_hunyuan_vl( const struct llama_model_params & params) : llama_model_base ( params ) {} 2086void load_arch_hparams ( llama_model_loader & ml) override; 2087void load_arch_tensors ( llama_model_loader & ml) override; 2088 2089struct graph : public llm_graph_context { 2090graph( const llama_model & model, const llm_graph_params & params); 2091}; 2092 2093std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2094}; 2095 2096 2097struct llama_model_hunyuan_dense : public llama_model_hunyuan_vl { 2098llama_model_hunyuan_dense( const struct llama_model_params & params) : llama_model_hunyuan_vl ( params ) {} 2099// reuse load_arch_hparams and load_arch_tensors from llama_model_hunyuan_vl 2100 2101using graph = llama_model_hunyuan_vl::graph; 2102 2103std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2104}; 2105 2106 2107struct llama_model_smollm3 : public llama_model_base { 2108llama_model_smollm3( const struct llama_model_params & params) : llama_model_base ( params ) {} 2109void load_arch_hparams ( llama_model_loader & ml) override; 2110void load_arch_tensors ( llama_model_loader & ml) override; 2111 2112struct graph : public llm_graph_context { 2113graph( const llama_model & model, const llm_graph_params & params); 2114}; 2115 2116std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2117}; 2118 2119 2120struct llama_model_openai_moe : public llama_model_base { 2121llama_model_openai_moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 2122void load_arch_hparams ( llama_model_loader & ml) override; 2123void load_arch_tensors ( llama_model_loader & ml) override; 2124 2125struct graph : public llm_graph_context { 2126graph( const llama_model & model, const llm_graph_params & params); 2127}; 2128 2129std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2130}; 2131 2132 2133struct llama_model_falcon_h1 : public llama_model_base { 2134llama_model_falcon_h1( const struct llama_model_params & params) : llama_model_base ( params ) {} 2135void load_arch_hparams ( llama_model_loader & ml) override; 2136void load_arch_tensors ( llama_model_loader & ml) override; 2137 2138struct graph : public llm_build_mamba_base { 2139graph( const llama_model & model, const llm_graph_params & params); 2140}; 2141 2142std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2143}; 2144 2145 2146struct llama_model_lfm2 : public llama_model_base { 2147llama_model_lfm2( const struct llama_model_params & params) : llama_model_base ( params ) {} 2148void load_arch_hparams ( llama_model_loader & ml) override; 2149void load_arch_tensors ( llama_model_loader & ml) override; 2150 2151template < bool iswa > 2152struct graph : public llm_graph_context { 2153graph ( const llama_model & model, const llm_graph_params & params); 2154}; 2155 2156std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2157}; 2158 2159 2160struct llama_model_lfm2moe : public llama_model_base { 2161llama_model_lfm2moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 2162void load_arch_hparams ( llama_model_loader & ml) override; 2163void load_arch_tensors ( llama_model_loader & ml) override; 2164 2165template < bool iswa > 2166using graph = llama_model_lfm2::graph < iswa > ; 2167 2168std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2169}; 2170 2171 2172struct llama_model_smallthinker : public llama_model_base { 2173llama_model_smallthinker( const struct llama_model_params & params) : llama_model_base ( params ) {} 2174void load_arch_hparams ( llama_model_loader & ml) override; 2175void load_arch_tensors ( llama_model_loader & ml) override; 2176 2177template < bool iswa > 2178struct graph : public llm_graph_context { 2179graph ( const llama_model & model, const llm_graph_params & params); 2180}; 2181 2182std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2183}; 2184 2185 2186struct llama_model_grovemoe : public llama_model_base { 2187llama_model_grovemoe( const struct llama_model_params & params) : llama_model_base ( params ) {} 2188void load_arch_hparams ( llama_model_loader & ml) override; 2189void load_arch_tensors ( llama_model_loader & ml) override; 2190 2191struct graph : public llm_graph_context { 2192graph( const llama_model & model, const llm_graph_params & params); 2193}; 2194 2195std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2196}; 2197 2198 2199struct llama_model_apertus : public llama_model_base { 2200llama_model_apertus( const struct llama_model_params & params) : llama_model_base ( params ) {} 2201void load_arch_hparams ( llama_model_loader & ml) override; 2202void load_arch_tensors ( llama_model_loader & ml) override; 2203 2204struct graph : public llm_graph_context { 2205graph( const llama_model & model, const llm_graph_params & params); 2206}; 2207 2208std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2209}; 2210 2211 2212struct llama_model_minimax_01 : public llama_model_base { 2213llama_model_minimax_01( const struct llama_model_params & params) : llama_model_base ( params ) {} 2214void load_arch_hparams ( llama_model_loader & ml) override; 2215void load_arch_tensors ( llama_model_loader & ml) override; 2216 2217struct graph : public llm_graph_context { 2218graph( const llama_model & model, const llm_graph_params & params); 2219}; 2220 2221std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2222}; 2223 2224 2225struct llama_model_minimax_m2 : public llama_model_base { 2226llama_model_minimax_m2( const struct llama_model_params & params) : llama_model_base ( params ) {} 2227void load_arch_hparams ( llama_model_loader & ml) override; 2228void load_arch_tensors ( llama_model_loader & ml) override; 2229 2230struct graph : public llm_graph_context { 2231graph( const llama_model & model, const llm_graph_params & params); 2232}; 2233 2234std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2235}; 2236 2237struct msa_params { 2238int blk ; 2239int topk_blocks ; 2240int local ; 2241}; 2242 2243struct llama_model_minimax_m3 : public llama_model_base { 2244llama_model_minimax_m3( const struct llama_model_params & params) : llama_model_base ( params ) {} 2245void load_arch_hparams ( llama_model_loader & ml) override; 2246void load_arch_tensors ( llama_model_loader & ml) override; 2247msa_params msa_p; 2248struct graph : public llm_graph_context { 2249graph( const llama_model & model, const llm_graph_params & params); 2250 2251ggml_tensor * build_attn_msa_fa ( 2252ggml_tensor * q_cur, // [D, HQ, S] f32 2253ggml_tensor * k, // [D, n_keys, 1, C] C = HKV or HKV*n_stream 2254ggml_tensor * v, // [D, n_keys, 1, C] 2255ggml_tensor * mask, // [n_keys, R, 1, C] f16, R = HQ*T/(Gp*C) 2256int64_t Gp, float kq_scale, int il) const; 2257}; 2258std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2259}; 2260 2261struct llama_model_cogvlm : public llama_model_base { 2262llama_model_cogvlm( const struct llama_model_params & params) : llama_model_base ( params ) {} 2263void load_arch_hparams ( llama_model_loader & ml) override; 2264void load_arch_tensors ( llama_model_loader & ml) override; 2265 2266struct graph : public llm_graph_context { 2267graph( const llama_model & model, const llm_graph_params & params); 2268}; 2269 2270std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2271}; 2272 2273 2274struct llama_model_pangu_embed : public llama_model_base { 2275llama_model_pangu_embed( const struct llama_model_params & params) : llama_model_base ( params ) {} 2276void load_arch_hparams ( llama_model_loader & ml) override; 2277void load_arch_tensors ( llama_model_loader & ml) override; 2278 2279struct graph : public llm_graph_context { 2280graph( const llama_model & model, const llm_graph_params & params); 2281}; 2282 2283std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2284}; 2285 2286 2287struct llama_model_qwen3next : public llama_model_base { 2288llama_model_qwen3next( const struct llama_model_params & params) : llama_model_base ( params ) {} 2289void load_arch_hparams ( llama_model_loader & ml) override; 2290void load_arch_tensors ( llama_model_loader & ml) override; 2291 2292struct graph : public llm_build_delta_net_base { 2293graph( const llama_model & model, const llm_graph_params & params); 2294private : 2295ggml_tensor * build_layer_attn ( 2296llm_graph_input_attn_kv * inp_attn, 2297ggml_tensor * cur, 2298ggml_tensor * inp_pos, 2299int il); 2300 2301ggml_tensor * build_layer_attn_linear ( 2302llm_graph_input_rs * inp, 2303ggml_tensor * cur, 2304int il); 2305 2306ggml_tensor * build_layer_ffn ( 2307ggml_tensor * cur, 2308int il); 2309 2310ggml_tensor * build_norm_gated ( 2311ggml_tensor * input, 2312ggml_tensor * weights, 2313ggml_tensor * gate, 2314int layer); 2315 2316// returns pair of qkv, z 2317std ::pair < ggml_tensor * , ggml_tensor *> build_qkvz ( 2318ggml_tensor * input, 2319int il); 2320 2321const llama_model & model; 2322}; 2323 2324struct graph_mtp : public llm_graph_context { 2325graph_mtp( const llama_model & model, const llm_graph_params & params); 2326}; 2327 2328std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2329}; 2330 2331 2332struct llama_model_qwen35 : public llama_model_base { 2333llama_model_qwen35( const struct llama_model_params & params) : llama_model_base ( params ) {} 2334void load_arch_hparams ( llama_model_loader & ml) override; 2335void load_arch_tensors ( llama_model_loader & ml) override; 2336 2337struct graph : public llm_build_delta_net_base { 2338graph( const llama_model & model, const llm_graph_params & params); 2339private : 2340ggml_tensor * build_layer_attn ( 2341llm_graph_input_attn_kv * inp_attn, 2342ggml_tensor * cur, 2343ggml_tensor * inp_pos, 2344int * sections, 2345int il); 2346 2347ggml_tensor * build_layer_attn_linear ( 2348llm_graph_input_rs * inp, 2349ggml_tensor * cur, 2350int il); 2351 2352ggml_tensor * build_layer_ffn ( 2353ggml_tensor * cur, 2354int il); 2355 2356ggml_tensor * build_norm_gated ( 2357ggml_tensor * input, 2358ggml_tensor * weights, 2359ggml_tensor * gate, 2360int layer); 2361 2362// returns pair of qkv, z 2363std ::pair < ggml_tensor * , ggml_tensor *> build_qkvz ( 2364ggml_tensor * input, 2365int il); 2366 2367const llama_model & model; 2368}; 2369 2370struct graph_mtp : public llm_graph_context { 2371graph_mtp( const llama_model & model, const llm_graph_params & params); 2372}; 2373 2374std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2375}; 2376 2377 2378struct llama_model_qwen4exp : public llama_model_base { 2379llama_model_qwen4exp( const struct llama_model_params & params) : llama_model_base ( params ) {} 2380 2381class llm_graph_input_qsa; 2382 2383void load_arch_hparams ( llama_model_loader & ml) override; 2384void load_arch_tensors ( llama_model_loader & ml) override; 2385 2386struct graph : public llm_build_delta_net_base { 2387graph( const llama_model & model, const llm_graph_params & params); 2388private : 2389// HC replaces every layer norm: residual is [n_embd, hc, n_tokens] 2390ggml_tensor * build_hc_mix ( 2391ggml_tensor * x, 2392ggml_tensor * w_norm, 2393ggml_tensor * w_down, 2394ggml_tensor * w_up, 2395ggml_tensor * w_inject, 2396ggml_tensor ** inject, 2397int il); 2398 2399ggml_tensor * build_hc_combine ( 2400ggml_tensor * residual, 2401ggml_tensor * block_out, 2402ggml_tensor * inject, 2403int il); 2404 2405ggml_tensor * build_layer_attn ( 2406llm_graph_input_attn_kv * inp_attn, 2407const llama_memory_hybrid_idx_context * mctx_hyb, 2408ggml_tensor * cur, 2409ggml_tensor * inp_pos, 2410int * sections, 2411int il); 2412 2413// dense self-attention restricted to the cells that top_k names 2414ggml_tensor * build_attn_qsa ( 2415llm_graph_input_attn_kv * inp, 2416ggml_tensor * q_cur, 2417ggml_tensor * k_cur, 2418ggml_tensor * v_cur, 2419ggml_tensor * top_k, 2420float kq_scale, 2421int il); 2422 2423// the QSA cache layout inputs do not depend on the layer, only on its compress ratio, 2424// so the layers sharing a ratio share one input set 2425std ::map < uint32_t, llm_graph_input_qsa *> qsa_inps; 2426 2427// QSA: token indices this layer's queries may attend to, or nullptr for dense 2428ggml_tensor * build_qsa_top_k ( 2429const llama_memory_hybrid_idx_context * mctx_hyb, 2430ggml_tensor * cur, 2431ggml_tensor * inp_pos, 2432ggml_tensor * kq_mask, 2433int * sections, 2434int il); 2435 2436ggml_tensor * build_layer_attn_linear ( 2437llm_graph_input_rs * inp, 2438ggml_tensor * cur, 2439int il); 2440 2441ggml_tensor * build_layer_ffn ( 2442ggml_tensor * cur, 2443int il); 2444 2445ggml_tensor * build_norm_gated ( 2446ggml_tensor * input, 2447ggml_tensor * weights, 2448ggml_tensor * gate, 2449int layer); 2450 2451// build_rs writes the state tensor in place, so one gather per cache tensor is reused 2452std ::map < ggml_tensor * , ggml_tensor *> rs_rows; 2453 2454// one conv history per cache tensor: delta-net and PLE each have their own 2455ggml_tensor * build_conv_state_at ( 2456llm_graph_input_rs * inp, 2457ggml_tensor * conv_states_all, 2458ggml_tensor * x, 2459int64_t state_cols, 2460int64_t channels, 2461int il); 2462 2463ggml_tensor * build_inp_ple ( 2464const llama_memory_hybrid_idx_context * mctx_hyb); 2465 2466ggml_tensor * build_ple ( 2467llm_graph_input_rs * inp, 2468ggml_tensor * emb, 2469ggml_tensor * hidden, 2470int il); 2471 2472// returns pair of qkv, z 2473std ::pair < ggml_tensor * , ggml_tensor *> build_qkvz ( 2474ggml_tensor * input, 2475int il); 2476 2477const llama_model & model; 2478}; 2479 2480std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2481}; 2482 2483struct llama_model_qwen35moe : public llama_model_base { 2484llama_model_qwen35moe( const struct llama_model_params & params) : llama_model_base ( params ) {} 2485void load_arch_hparams ( llama_model_loader & ml) override; 2486void load_arch_tensors ( llama_model_loader & ml) override; 2487 2488struct graph : public llm_build_delta_net_base { 2489graph( const llama_model & model, const llm_graph_params & params); 2490private : 2491ggml_tensor * build_layer_attn ( 2492llm_graph_input_attn_kv * inp_attn, 2493ggml_tensor * cur, 2494ggml_tensor * inp_pos, 2495int * sections, 2496int il); 2497 2498ggml_tensor * build_layer_attn_linear ( 2499llm_graph_input_rs * inp, 2500ggml_tensor * cur, 2501int il); 2502 2503ggml_tensor * build_layer_ffn ( 2504ggml_tensor * cur, 2505int il); 2506 2507ggml_tensor * build_norm_gated ( 2508ggml_tensor * input, 2509ggml_tensor * weights, 2510ggml_tensor * gate, 2511int layer); 2512 2513// returns pair of qkv, z 2514std ::pair < ggml_tensor * , ggml_tensor *> build_qkvz ( 2515ggml_tensor * input, 2516int il); 2517 2518const llama_model & model; 2519}; 2520 2521struct graph_mtp : public llm_graph_context { 2522graph_mtp( const llama_model & model, const llm_graph_params & params); 2523}; 2524 2525std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2526}; 2527 2528 2529struct llama_model_mistral3 : public llama_model_base { 2530llama_model_mistral3( const struct llama_model_params & params) : llama_model_base ( params ) {} 2531void load_arch_hparams ( llama_model_loader & ml) override; 2532void load_arch_tensors ( llama_model_loader & ml) override; 2533 2534struct graph : public llm_graph_context { 2535graph( const llama_model & model, const llm_graph_params & params); 2536}; 2537 2538std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2539}; 2540 2541 2542struct llama_model_mimo2 : public llama_model_base { 2543llama_model_mimo2( const struct llama_model_params & params) : llama_model_base ( params ) {} 2544void load_arch_hparams ( llama_model_loader & ml) override; 2545void load_arch_tensors ( llama_model_loader & ml) override; 2546 2547struct graph : public llm_graph_context { 2548graph( const llama_model & model, const llm_graph_params & params); 2549}; 2550 2551struct graph_mtp : public llm_graph_context { 2552graph_mtp( const llama_model & model, const llm_graph_params & params); 2553}; 2554 2555std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2556}; 2557 2558 2559struct llama_model_kimi_k3 : public llama_model_base { 2560llama_model_kimi_k3( const struct llama_model_params & params) : llama_model_base ( params ) {} 2561void load_arch_hparams ( llama_model_loader & ml) override; 2562void load_arch_tensors ( llama_model_loader & ml) override; 2563 2564struct graph : public llm_build_delta_net_base { 2565graph( const llama_model & model, const llm_graph_params & params); 2566 2567const llama_model & model; 2568 2569// Cross-layer residual attention (K3's `_apply_attn_res`). 2570ggml_tensor * resi_stack = nullptr ; 2571 2572void res_push ( ggml_tensor * cur, int64_t n_embd, int64_t n_tokens); 2573ggml_tensor * res_mix ( ggml_tensor * cur, ggml_tensor * score_w, 2574int64_t n_tokens, int il); 2575 2576ggml_tensor * build_kda_layer ( ggml_tensor * cur, const llama_layer & layer, 2577llm_graph_input_rs * inp_rs, 2578int64_t d_conv, int64_t head_dim, int64_t n_head_kda, 2579int64_t d_inner, int64_t n_seq_tokens, int64_t n_seqs, int il); 2580 2581ggml_tensor * build_mla_layer ( ggml_tensor * cur, const llama_layer & layer, 2582llm_graph_input_attn_k * inp_attn_k, 2583llm_graph_input_attn_kv * inp_attn_kv, 2584int64_t n_embd_head_k_mla, int64_t n_embd_head_v_mla, 2585int64_t kv_lora_rank, int64_t n_embd_head_qk_rope, 2586int64_t n_embd_head_qk_nope, float kq_scale, int il); 2587 2588ggml_tensor * build_latent_moe ( ggml_tensor * cur, const llama_layer & layer, 2589int64_t n_embd_latent, int il); 2590}; 2591 2592std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2593}; 2594 2595struct llama_model_kimi_linear : public llama_model_base { 2596llama_model_kimi_linear( const struct llama_model_params & params) : llama_model_base ( params ) {} 2597void load_arch_hparams ( llama_model_loader & ml) override; 2598void load_arch_tensors ( llama_model_loader & ml) override; 2599 2600struct graph : public llm_build_delta_net_base { 2601graph( const llama_model & model, const llm_graph_params & params); 2602 2603std ::pair < ggml_tensor * , ggml_tensor *> build_kda_autoregressive ( 2604ggml_tensor * q, 2605ggml_tensor * k, 2606ggml_tensor * v, 2607ggml_tensor * gk, 2608ggml_tensor * beta, 2609ggml_tensor * state, 2610int il); 2611 2612std ::pair < ggml_tensor * , ggml_tensor *> build_kda_chunking ( 2613ggml_tensor * q, 2614ggml_tensor * k, 2615ggml_tensor * v, 2616ggml_tensor * gk, 2617ggml_tensor * beta, 2618ggml_tensor * state, 2619ggml_tensor * causal_mask, 2620ggml_tensor * identity, 2621ggml_tensor * diag_mask, 2622int il); 2623 2624const llama_model & model; 2625}; 2626 2627std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2628}; 2629 2630 2631struct llama_model_step35 : public llama_model_base { 2632llama_model_step35( const struct llama_model_params & params) : llama_model_base ( params ) {} 2633void load_arch_hparams ( llama_model_loader & ml) override; 2634void load_arch_tensors ( llama_model_loader & ml) override; 2635 2636struct graph : public llm_graph_context { 2637graph( const llama_model & model, const llm_graph_params & params); 2638}; 2639 2640struct graph_mtp : public llm_graph_context { 2641graph_mtp( const llama_model & model, const llm_graph_params & params); 2642}; 2643 2644std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override; 2645}; 2646 2647 2648struct llama_model_spark2_5 : public llama_model_base { 2649llama_model_spark2_5( const struct llama_model_params & params) : llama_model_base ( params ) {} 2650void load_arch_hparams ( llama_model_loader & ml) override; 2651void load_arch_tensors ( llama_model_loader & ml) override; 2652 2653struct graph : public llm_graph_context { 2654graph( const llama_model & model, const llm_graph_params & params); 2655}; 2656 2657std ::unique_ptr < llm_graph_context > build_arch_graph (const llm_graph_params & params) const override ; 2658};