Team Ai
Datasetpublic

Brunobkr/llama.cpp_AlgMor24_github

ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes3kdownloads
llama-arch.cpp1043 linesDownload Raw Back to src
1#include "llama-arch.h"2 3#include "llama-impl.h"4 5#include <map>6#include <vector>7 8static const std::map<llm_arch, const char *> LLM_ARCH_NAMES = {9    { LLM_ARCH_CLIP,             "clip"             }, // dummy, only used by llama-quantize10    { LLM_ARCH_LLAMA,            "llama"            },11    { LLM_ARCH_LLAMA4,           "llama4"           },12    { LLM_ARCH_DECI,             "deci"             },13    { LLM_ARCH_FALCON,           "falcon"           },14    { LLM_ARCH_GROK,             "grok"             },15    { LLM_ARCH_GPT2,             "gpt2"             },16    { LLM_ARCH_GPTJ,             "gptj"             },17    { LLM_ARCH_GPTNEOX,          "gptneox"          },18    { LLM_ARCH_MPT,              "mpt"              },19    { LLM_ARCH_BAICHUAN,         "baichuan"         },20    { LLM_ARCH_STARCODER,        "starcoder"        },21    { LLM_ARCH_REFACT,           "refact"           },22    { LLM_ARCH_BERT,             "bert"             },23    { LLM_ARCH_MODERN_BERT,      "modern-bert"      },24    { LLM_ARCH_NOMIC_BERT,       "nomic-bert"       },25    { LLM_ARCH_NOMIC_BERT_MOE,   "nomic-bert-moe"   },26    { LLM_ARCH_NEO_BERT,         "neo-bert"         },27    { LLM_ARCH_JINA_BERT_V2,     "jina-bert-v2"     },28    { LLM_ARCH_JINA_BERT_V3,     "jina-bert-v3"     },29    { LLM_ARCH_EUROBERT,         "eurobert"         },30    { LLM_ARCH_BLOOM,            "bloom"            },31    { LLM_ARCH_STABLELM,         "stablelm"         },32    { LLM_ARCH_QWEN,             "qwen"             },33    { LLM_ARCH_QWEN2,            "qwen2"            },34    { LLM_ARCH_QWEN2MOE,         "qwen2moe"         },35    { LLM_ARCH_QWEN2VL,          "qwen2vl"          },36    { LLM_ARCH_QWEN3,            "qwen3"            },37    { LLM_ARCH_QWEN3MOE,         "qwen3moe"         },38    { LLM_ARCH_QWEN3NEXT,        "qwen3next"        },39    { LLM_ARCH_QWEN3VL,          "qwen3vl"          },40    { LLM_ARCH_QWEN3VLMOE,       "qwen3vlmoe"       },41    { LLM_ARCH_QWEN35,           "qwen35"           },42    { LLM_ARCH_QWEN35MOE,        "qwen35moe"        },43    { LLM_ARCH_PHI2,             "phi2"             },44    { LLM_ARCH_PHI3,             "phi3"             },45    { LLM_ARCH_PHIMOE,           "phimoe"           },46    { LLM_ARCH_PLAMO,            "plamo"            },47    { LLM_ARCH_PLAMO2,           "plamo2"           },48    { LLM_ARCH_PLAMO3,           "plamo3"           },49    { LLM_ARCH_CODESHELL,        "codeshell"        },50    { LLM_ARCH_ORION,            "orion"            },51    { LLM_ARCH_INTERNLM2,        "internlm2"        },52    { LLM_ARCH_MINICPM,          "minicpm"          },53    { LLM_ARCH_MINICPM3,         "minicpm3"         },54    { LLM_ARCH_GEMMA,            "gemma"            },55    { LLM_ARCH_GEMMA2,           "gemma2"           },56    { LLM_ARCH_GEMMA3,           "gemma3"           },57    { LLM_ARCH_GEMMA3N,          "gemma3n"          },58    { LLM_ARCH_GEMMA4,           "gemma4"           },59    { LLM_ARCH_GEMMA4_ASSISTANT, "gemma4-assistant" },60    { LLM_ARCH_GEMMA_EMBEDDING,  "gemma-embedding"  },61    { LLM_ARCH_STARCODER2,       "starcoder2"       },62    { LLM_ARCH_MAMBA,            "mamba"            },63    { LLM_ARCH_MAMBA2,           "mamba2"           },64    { LLM_ARCH_JAMBA,            "jamba"            },65    { LLM_ARCH_FALCON_H1,        "falcon-h1"        },66    { LLM_ARCH_XVERSE,           "xverse"           },67    { LLM_ARCH_COMMAND_R,        "command-r"        },68    { LLM_ARCH_COHERE2,          "cohere2"          },69    { LLM_ARCH_COHERE2MOE,       "cohere2moe"       },70    { LLM_ARCH_DBRX,             "dbrx"             },71    { LLM_ARCH_OLMO,             "olmo"             },72    { LLM_ARCH_OLMO2,            "olmo2"            },73    { LLM_ARCH_OLMOE,            "olmoe"            },74    { LLM_ARCH_MUSE_GLIMMER,     "muse-glimmer"     },75    { LLM_ARCH_OPENELM,          "openelm"          },76    { LLM_ARCH_ARCTIC,           "arctic"           },77    { LLM_ARCH_DEEPSEEK,         "deepseek"         },78    { LLM_ARCH_DEEPSEEK2,        "deepseek2"        },79    { LLM_ARCH_DEEPSEEK2OCR,     "deepseek2-ocr"    },80    { LLM_ARCH_DEEPSEEK32,       "deepseek32"       },81    { LLM_ARCH_DEEPSEEK4,        "deepseek4"        },82    { LLM_ARCH_CHATGLM,          "chatglm"          },83    { LLM_ARCH_GLM4,             "glm4"             },84    { LLM_ARCH_GLM4_MOE,         "glm4moe"          },85    { LLM_ARCH_GLM_DSA,          "glm-dsa"          },86    { LLM_ARCH_BITNET,           "bitnet"           },87    { LLM_ARCH_T5,               "t5"               },88    { LLM_ARCH_T5ENCODER,        "t5encoder"        },89    { LLM_ARCH_JAIS,             "jais"             },90    { LLM_ARCH_JAIS2,            "jais2"            },91    { LLM_ARCH_NEMOTRON,         "nemotron"         },92    { LLM_ARCH_NEMOTRON_H,       "nemotron_h"       },93    { LLM_ARCH_NEMOTRON_H_MOE,   "nemotron_h_moe"   },94    { LLM_ARCH_EXAONE,           "exaone"           },95    { LLM_ARCH_EXAONE4,          "exaone4"          },96    { LLM_ARCH_EXAONE_MOE,       "exaone-moe"       },97    { LLM_ARCH_RWKV6,            "rwkv6"            },98    { LLM_ARCH_RWKV6QWEN2,       "rwkv6qwen2"       },99    { LLM_ARCH_RWKV7,            "rwkv7"            },100    { LLM_ARCH_ARWKV7,           "arwkv7"           },101    { LLM_ARCH_GRANITE,          "granite"          },102    { LLM_ARCH_GRANITE_MOE,      "granitemoe"       },103    { LLM_ARCH_GRANITE_HYBRID,   "granitehybrid"    },104    { LLM_ARCH_GRANITE_SWITCH,   "graniteswitch"    },105    { LLM_ARCH_CHAMELEON,        "chameleon"        },106    { LLM_ARCH_WAVTOKENIZER_DEC, "wavtokenizer-dec" },107    { LLM_ARCH_PLM,              "plm"              },108    { LLM_ARCH_BAILINGMOE,       "bailingmoe"       },109    { LLM_ARCH_BAILINGMOE2,      "bailingmoe2"      },110    { LLM_ARCH_DOTS1,            "dots1"            },111    { LLM_ARCH_ARCEE,            "arcee"            },112    { LLM_ARCH_AFMOE,            "afmoe"            },113    { LLM_ARCH_LAGUNA,           "laguna"           },114    { LLM_ARCH_ERNIE4_5,         "ernie4_5"         },115    { LLM_ARCH_ERNIE4_5_MOE,     "ernie4_5-moe"     },116    { LLM_ARCH_HUNYUAN_MOE,      "hunyuan-moe"      },117    { LLM_ARCH_HUNYUAN_DENSE,    "hunyuan-dense"    },118    { LLM_ARCH_HUNYUAN_VL,       "hunyuan_vl"       },119    { LLM_ARCH_HY_V3,            "hy_v3"            },120    { LLM_ARCH_SMOLLM3,          "smollm3"          },121    { LLM_ARCH_OPENAI_MOE,       "gpt-oss"          },122    { LLM_ARCH_LFM2,             "lfm2"             },123    { LLM_ARCH_LFM2MOE,          "lfm2moe"          },124    { LLM_ARCH_DREAM,            "dream"            },125    { LLM_ARCH_SMALLTHINKER,     "smallthinker"     },126    { LLM_ARCH_LLADA,            "llada"            },127    { LLM_ARCH_LLADA_MOE,        "llada-moe"        },128    { LLM_ARCH_SEED_OSS,         "seed_oss"         },129    { LLM_ARCH_GROVEMOE,         "grovemoe"         },130    { LLM_ARCH_APERTUS,          "apertus"          },131    { LLM_ARCH_MINIMAX_M2,       "minimax-m2"       },132    { LLM_ARCH_MINIMAX_M3,       "minimax-m3"       },133    { LLM_ARCH_COGVLM,           "cogvlm"           },134    { LLM_ARCH_RND1,             "rnd1"             },135    { LLM_ARCH_PANGU_EMBED,      "pangu-embedded"   },136    { LLM_ARCH_MISTRAL3,         "mistral3"         },137    { LLM_ARCH_EAGLE3,           "eagle3"           },138    { LLM_ARCH_DFLASH,           "dflash"           },139    { LLM_ARCH_MISTRAL4,         "mistral4"         },140    { LLM_ARCH_PADDLEOCR,        "paddleocr"        },141    { LLM_ARCH_MIMO2,            "mimo2"            },142    { LLM_ARCH_STEP35,           "step35"           },143    { LLM_ARCH_LLAMA_EMBED,      "llama-embed"      },144    { LLM_ARCH_MAINCODER,        "maincoder"        },145    { LLM_ARCH_KIMI_LINEAR,      "kimi-linear"      },146    { LLM_ARCH_TALKIE,           "talkie"           },147    { LLM_ARCH_MELLUM,           "mellum"           },148    { LLM_ARCH_NANBEIGE,         "nanbeige"         },149    { LLM_ARCH_QWEN3TTS,         "qwen3tts"         },150    { LLM_ARCH_UNKNOWN,          "(unknown)"        },151};152 153static const std::map<llm_kv, const char *> LLM_KV_NAMES = {154    { LLM_KV_GENERAL_TYPE,                     "general.type"                          },155    { LLM_KV_GENERAL_ARCHITECTURE,             "general.architecture"                  },156    { LLM_KV_GENERAL_QUANTIZATION_VERSION,     "general.quantization_version"          },157    { LLM_KV_GENERAL_ALIGNMENT,                "general.alignment"                     },158    { LLM_KV_GENERAL_FILE_TYPE,                "general.file_type"                     },159    { LLM_KV_GENERAL_SAMPLING_SEQUENCE,        "general.sampling.sequence"             },160    { LLM_KV_GENERAL_SAMPLING_TOP_K,           "general.sampling.top_k"                },161    { LLM_KV_GENERAL_SAMPLING_TOP_P,           "general.sampling.top_p"                },162    { LLM_KV_GENERAL_SAMPLING_MIN_P,           "general.sampling.min_p"                },163    { LLM_KV_GENERAL_SAMPLING_XTC_PROBABILITY, "general.sampling.xtc_probability"      },164    { LLM_KV_GENERAL_SAMPLING_XTC_THRESHOLD,   "general.sampling.xtc_threshold"        },165    { LLM_KV_GENERAL_SAMPLING_TEMP,            "general.sampling.temp"                 },166    { LLM_KV_GENERAL_SAMPLING_PENALTY_LAST_N,  "general.sampling.penalty_last_n"       },167    { LLM_KV_GENERAL_SAMPLING_PENALTY_REPEAT,  "general.sampling.penalty_repeat"       },168    { LLM_KV_GENERAL_SAMPLING_MIROSTAT,        "general.sampling.mirostat"             },169    { LLM_KV_GENERAL_SAMPLING_MIROSTAT_TAU,    "general.sampling.mirostat_tau"         },170    { LLM_KV_GENERAL_SAMPLING_MIROSTAT_ETA,    "general.sampling.mirostat_eta"         },171    { LLM_KV_GENERAL_NAME,                     "general.name"                          },172    { LLM_KV_GENERAL_AUTHOR,                   "general.author"                        },173    { LLM_KV_GENERAL_VERSION,                  "general.version"                       },174    { LLM_KV_GENERAL_URL,                      "general.url"                           },175    { LLM_KV_GENERAL_DESCRIPTION,              "general.description"                   },176    { LLM_KV_GENERAL_LICENSE,                  "general.license"                       },177    { LLM_KV_GENERAL_SOURCE_URL,               "general.source.url"                    },178    { LLM_KV_GENERAL_SOURCE_HF_REPO,           "general.source.huggingface.repository" },179 180    { LLM_KV_VOCAB_SIZE,                        "%s.vocab_size"                        },181    { LLM_KV_CONTEXT_LENGTH,                    "%s.context_length"                    },182    { LLM_KV_EMBEDDING_LENGTH,                  "%s.embedding_length"                  },183    { LLM_KV_EMBEDDING_LENGTH_OUT,              "%s.embedding_length_out"              },184    { LLM_KV_EMBEDDING_LENGTH_PER_LAYER,        "%s.embedding_length_per_layer_input"  },185    { LLM_KV_FEATURES_LENGTH,                   "%s.features_length"                   },186    { LLM_KV_BLOCK_COUNT,                       "%s.block_count"                       },187    { LLM_KV_LEADING_DENSE_BLOCK_COUNT,         "%s.leading_dense_block_count"         },188    { LLM_KV_FEED_FORWARD_LENGTH,               "%s.feed_forward_length"               },189    { LLM_KV_EXPERT_FEED_FORWARD_LENGTH,        "%s.expert_feed_forward_length"        },190    { LLM_KV_EXPERT_SHARED_FEED_FORWARD_LENGTH, "%s.expert_shared_feed_forward_length" },191    { LLM_KV_EXPERT_CHUNK_FEED_FORWARD_LENGTH,  "%s.expert_chunk_feed_forward_length"  },192    { LLM_KV_SWIGLU_CLAMP_EXP,                  "%s.swiglu_clamp_exp"                  },193    { LLM_KV_SWIGLU_CLAMP_SHEXP,                "%s.swiglu_clamp_shexp"                },194    { LLM_KV_USE_PARALLEL_RESIDUAL,             "%s.use_parallel_residual"             },195    { LLM_KV_TENSOR_DATA_LAYOUT,                "%s.tensor_data_layout"                },196    { LLM_KV_EXPERT_COUNT,                      "%s.expert_count"                      },197    { LLM_KV_EXPERT_USED_COUNT,                 "%s.expert_used_count"                 },198    { LLM_KV_EXPERT_SHARED_COUNT,               "%s.expert_shared_count"               },199    { LLM_KV_EXPERT_GROUP_COUNT,                "%s.expert_group_count"                },200    { LLM_KV_EXPERT_GROUP_USED_COUNT,           "%s.expert_group_used_count"           },201    { LLM_KV_EXPERT_WEIGHTS_SCALE,              "%s.expert_weights_scale"              },202    { LLM_KV_EXPERT_WEIGHTS_NORM,               "%s.expert_weights_norm"               },203    { LLM_KV_EXPERT_GATING_FUNC,                "%s.expert_gating_func"                },204    { LLM_KV_EXPERT_GROUP_SCALE,                "%s.expert_group_scale"                },205    { LLM_KV_EXPERTS_PER_GROUP,                 "%s.experts_per_group"                 },206    { LLM_KV_MOE_EVERY_N_LAYERS,                "%s.moe_every_n_layers"                },207    { LLM_KV_MOE_LATENT_SIZE,                   "%s.moe_latent_size"                   },208    { LLM_KV_NEXTN_PREDICT_LAYERS,              "%s.nextn_predict_layers"              },209    { LLM_KV_NUM_DEEPSTACK_LAYERS,              "%s.n_deepstack_layers"                },210    { LLM_KV_DEEPSTACK_MAPPING,                 "%s.deepstack_mapping"                 },211    { LLM_KV_HIDDEN_ACT,                        "%s.hidden_activation"                 },212    { LLM_KV_POOLING_TYPE,                      "%s.pooling_type"                      },213    { LLM_KV_LOGIT_SCALE,                       "%s.logit_scale"                       },214    { LLM_KV_DECODER_START_TOKEN_ID,            "%s.decoder_start_token_id"            },215    { LLM_KV_DECODER_BLOCK_COUNT,               "%s.decoder_block_count"               },216    { LLM_KV_ATTN_LOGIT_SOFTCAPPING,            "%s.attn_logit_softcapping"            },217    { LLM_KV_ROUTER_LOGIT_SOFTCAPPING,          "%s.router_logit_softcapping"          },218    { LLM_KV_FINAL_LOGIT_SOFTCAPPING,           "%s.final_logit_softcapping"           },219    { LLM_KV_SWIN_NORM,                         "%s.swin_norm"                         },220    { LLM_KV_RESCALE_EVERY_N_LAYERS,            "%s.rescale_every_n_layers"            },221    { LLM_KV_TIME_MIX_EXTRA_DIM,                "%s.time_mix_extra_dim"                },222    { LLM_KV_TIME_DECAY_EXTRA_DIM,              "%s.time_decay_extra_dim"              },223    { LLM_KV_RESIDUAL_SCALE,                    "%s.residual_scale"                    },224    { LLM_KV_EMBEDDING_SCALE,                   "%s.embedding_scale"                   },225    { LLM_KV_ADAPTER_COUNT,                     "%s.adapters.count"                    },226    { LLM_KV_ADAPTER_TOKEN_IDS_ACTIVATE,        "%s.adapters.token_ids_activate"       },227    { LLM_KV_ADAPTER_TOKEN_IDS_SUBSTITUTE,      "%s.adapters.token_ids_substitute"     },228    { LLM_KV_ADAPTER_LORA_RANK,                 "%s.adapters.lora_rank"                },229    { LLM_KV_ADAPTER_ROUTER_GAIN,               "%s.adapters.router_gain"              },230    { LLM_KV_TOKEN_SHIFT_COUNT,                 "%s.token_shift_count"                 },231    { LLM_KV_INTERLEAVE_MOE_LAYER_STEP,         "%s.interleave_moe_layer_step"         },232    { LLM_KV_FULL_ATTENTION_INTERVAL,           "%s.full_attention_interval"           },233    { LLM_KV_NUM_LOOPS,                         "%s.num_loops"                         },234    { LLM_KV_SKIP_LOOP_FINAL_NORM,              "%s.skip_loop_final_norm"              },235 236    { LLM_KV_ATTENTION_HEAD_COUNT,                   "%s.attention.head_count"                   },237    { LLM_KV_ATTENTION_HEAD_COUNT_KV,                "%s.attention.head_count_kv"                },238    { LLM_KV_ATTENTION_MAX_ALIBI_BIAS,               "%s.attention.max_alibi_bias"               },239    { LLM_KV_ATTENTION_CLAMP_KQV,                    "%s.attention.clamp_kqv"                    },240    { LLM_KV_ATTENTION_KEY_LENGTH,                   "%s.attention.key_length"                   },241    { LLM_KV_ATTENTION_VALUE_LENGTH,                 "%s.attention.value_length"                 },242    { LLM_KV_ATTENTION_LAYERNORM_EPS,                "%s.attention.layer_norm_epsilon"           },243    { LLM_KV_ATTENTION_LAYERNORM_RMS_EPS,            "%s.attention.layer_norm_rms_epsilon"       },244    { LLM_KV_ATTENTION_GROUPNORM_EPS,                "%s.attention.group_norm_epsilon"           },245    { LLM_KV_ATTENTION_GROUPNORM_GROUPS,             "%s.attention.group_norm_groups"            },246    { LLM_KV_ATTENTION_CAUSAL,                       "%s.attention.causal"                       },247    { LLM_KV_ATTENTION_Q_LORA_RANK,                  "%s.attention.q_lora_rank"                  },248    { LLM_KV_ATTENTION_KV_LORA_RANK,                 "%s.attention.kv_lora_rank"                 },249    { LLM_KV_ATTENTION_DECAY_LORA_RANK,              "%s.attention.decay_lora_rank"              },250    { LLM_KV_ATTENTION_ICLR_LORA_RANK,               "%s.attention.iclr_lora_rank"               },251    { LLM_KV_ATTENTION_VALUE_RESIDUAL_MIX_LORA_RANK, "%s.attention.value_residual_mix_lora_rank" },252    { LLM_KV_ATTENTION_GATE_LORA_RANK,               "%s.attention.gate_lora_rank"               },253    { LLM_KV_ATTENTION_RELATIVE_BUCKETS_COUNT,       "%s.attention.relative_buckets_count"       },254    { LLM_KV_ATTENTION_SLIDING_WINDOW,               "%s.attention.sliding_window"               },255    { LLM_KV_ATTENTION_SLIDING_WINDOW_PATTERN,       "%s.attention.sliding_window_pattern"       },256    { LLM_KV_ATTENTION_SCALE,                        "%s.attention.scale"                        },257    { LLM_KV_ATTENTION_OUTPUT_SCALE,                 "%s.attention.output_scale"                 },258    { LLM_KV_ATTENTION_VALUE_SCALE,                  "%s.attention.value_scale"                  },259    { LLM_KV_ATTENTION_TEMPERATURE_LENGTH,           "%s.attention.temperature_length"           },260    { LLM_KV_ATTENTION_TEMPERATURE_SCALE,            "%s.attention.temperature_scale"            },261    { LLM_KV_ATTENTION_KEY_LENGTH_MLA,               "%s.attention.key_length_mla"               },262    { LLM_KV_ATTENTION_VALUE_LENGTH_MLA,             "%s.attention.value_length_mla"             },263    { LLM_KV_ATTENTION_KEY_LENGTH_SWA,               "%s.attention.key_length_swa"               },264    { LLM_KV_ATTENTION_VALUE_LENGTH_SWA,             "%s.attention.value_length_swa"             },265    { LLM_KV_ATTENTION_INDEXER_HEAD_COUNT,           "%s.attention.indexer.head_count"           },266    { LLM_KV_ATTENTION_INDEXER_KEY_LENGTH,           "%s.attention.indexer.key_length"           },267    { LLM_KV_ATTENTION_INDEXER_TOP_K,                "%s.attention.indexer.top_k"                },268    { LLM_KV_ATTENTION_INDEXER_BLOCK_SIZE,           "%s.attention.indexer.block_size"           },269    { LLM_KV_ATTENTION_INDEXER_LOCAL_BLOCKS,         "%s.attention.indexer.local_blocks"         },270    { LLM_KV_ATTENTION_INDEXER_TYPES,                "%s.attention.indexer.types"                },271    { LLM_KV_ATTENTION_OUTPUT_GROUP_COUNT,           "%s.attention.output_group_count"           },272    { LLM_KV_ATTENTION_OUTPUT_LORA_RANK,             "%s.attention.output_lora_rank"             },273    { LLM_KV_ATTENTION_COMPRESS_ROPE_FREQ_BASE,      "%s.attention.compress_rope_freq_base"      },274    { LLM_KV_ATTENTION_COMPRESS_RATIOS,              "%s.attention.compress_ratios"              },275    { LLM_KV_ATTENTION_SHARED_KV_LAYERS,             "%s.attention.shared_kv_layers"             },276    { LLM_KV_ATTENTION_RECURRENT_LAYERS,             "%s.attention.recurrent_layers"             },277 278    { LLM_KV_HYPER_CONNECTION_COUNT,                 "%s.hyper_connection.count"                 },279    { LLM_KV_HYPER_CONNECTION_SINKHORN_ITERATIONS,   "%s.hyper_connection.sinkhorn_iterations"   },280    { LLM_KV_HYPER_CONNECTION_EPSILON,               "%s.hyper_connection.epsilon"               },281 282    { LLM_KV_HASH_LAYER_COUNT,                       "%s.hash_layer_count"                       },283 284    { LLM_KV_ROPE_DIMENSION_COUNT,           "%s.rope.dimension_count"                 },285    { LLM_KV_ROPE_DIMENSION_COUNT_SWA,       "%s.rope.dimension_count_swa"             },286    { LLM_KV_ROPE_DIMENSION_SECTIONS,        "%s.rope.dimension_sections"              },287    { LLM_KV_ROPE_FREQ_BASE,                 "%s.rope.freq_base"                       },288    { LLM_KV_ROPE_FREQ_BASE_SWA,             "%s.rope.freq_base_swa"                   },289    { LLM_KV_ROPE_SCALE_LINEAR,              "%s.rope.scale_linear"                    },290    { LLM_KV_ROPE_SCALING_TYPE,              "%s.rope.scaling.type"                    },291    { LLM_KV_ROPE_SCALING_FACTOR,            "%s.rope.scaling.factor"                  },292    { LLM_KV_ROPE_SCALING_ALPHA,             "%s.rope.scaling.alpha"                   },293    { LLM_KV_ROPE_SCALING_ATTN_FACTOR,       "%s.rope.scaling.attn_factor"             },294    { LLM_KV_ROPE_SCALING_ORIG_CTX_LEN,      "%s.rope.scaling.original_context_length" },295    { LLM_KV_ROPE_SCALING_FINETUNED,         "%s.rope.scaling.finetuned"               },296    { LLM_KV_ROPE_SCALING_YARN_LOG_MUL,      "%s.rope.scaling.yarn_log_multiplier"     },297    { LLM_KV_ROPE_SCALING_YARN_EXT_FACTOR,   "%s.rope.scaling.yarn_ext_factor"         },298    { LLM_KV_ROPE_SCALING_YARN_ATTN_FACTOR,  "%s.rope.scaling.yarn_attn_factor"        },299    { LLM_KV_ROPE_SCALING_YARN_BETA_FAST,    "%s.rope.scaling.yarn_beta_fast"          },300    { LLM_KV_ROPE_SCALING_YARN_BETA_SLOW,    "%s.rope.scaling.yarn_beta_slow"          },301 302    { LLM_KV_SPLIT_NO,            "split.no"            },303    { LLM_KV_SPLIT_COUNT,         "split.count"         },304    { LLM_KV_SPLIT_TENSORS_COUNT, "split.tensors.count" },305 306    { LLM_KV_SSM_CONV_KERNEL,    "%s.ssm.conv_kernel"    },307    { LLM_KV_SSM_INNER_SIZE,     "%s.ssm.inner_size"     },308    { LLM_KV_SSM_STATE_SIZE,     "%s.ssm.state_size"     },309    { LLM_KV_SSM_TIME_STEP_RANK, "%s.ssm.time_step_rank" },310    { LLM_KV_SSM_GROUP_COUNT,    "%s.ssm.group_count"    },311    { LLM_KV_SSM_DT_B_C_RMS,     "%s.ssm.dt_b_c_rms"     },312 313    { LLM_KV_KDA_HEAD_DIM, "%s.kda.head_dim" },314 315    { LLM_KV_WKV_HEAD_SIZE, "%s.wkv.head_size" },316 317    { LLM_KV_POSNET_EMBEDDING_LENGTH, "%s.posnet.embedding_length" },318    { LLM_KV_POSNET_BLOCK_COUNT,      "%s.posnet.block_count"      },319 320    { LLM_KV_CONVNEXT_EMBEDDING_LENGTH, "%s.convnext.embedding_length" },321    { LLM_KV_CONVNEXT_BLOCK_COUNT,      "%s.convnext.block_count"      },322 323    { LLM_KV_CLASSIFIER_OUTPUT_LABELS, "%s.classifier.output_labels" },324 325    { LLM_KV_TARGET_LAYERS,         "%s.target_layers"        },326    { LLM_KV_TARGET_HIDDEN_SIZE,    "%s.target_hidden_size"   },327    { LLM_KV_NORM_BEFORE_RESIDUAL,  "%s.norm_before_residual" },328    { LLM_KV_NORM_BEFORE_FC,        "%s.norm_before_fc"       },329 330    { LLM_KV_SHORTCONV_L_CACHE, "%s.shortconv.l_cache" },331    // sentence-transformers dense modules feature dims332    { LLM_KV_DENSE_2_FEAT_IN,        "%s.dense_2_feat_in"  },333    { LLM_KV_DENSE_2_FEAT_OUT,       "%s.dense_2_feat_out" },334    { LLM_KV_DENSE_3_FEAT_IN,        "%s.dense_3_feat_in"  },335    { LLM_KV_DENSE_3_FEAT_OUT,       "%s.dense_3_feat_out" },336 337    { LLM_KV_TOKENIZER_MODEL,                    "tokenizer.ggml.model"                    },338    { LLM_KV_TOKENIZER_PRE,                      "tokenizer.ggml.pre"                      },339    { LLM_KV_TOKENIZER_LIST,                     "tokenizer.ggml.tokens"                   },340    { LLM_KV_TOKENIZER_TOKEN_TYPE,               "tokenizer.ggml.token_type"               },341    { LLM_KV_TOKENIZER_TOKEN_TYPE_COUNT,         "tokenizer.ggml.token_type_count"         },342    { LLM_KV_TOKENIZER_SCORES,                   "tokenizer.ggml.scores"                   },343    { LLM_KV_TOKENIZER_MERGES,                   "tokenizer.ggml.merges"                   },344    { LLM_KV_TOKENIZER_BOS_ID,                   "tokenizer.ggml.bos_token_id"             },345    { LLM_KV_TOKENIZER_EOS_ID,                   "tokenizer.ggml.eos_token_id"             },346    { LLM_KV_TOKENIZER_EOT_ID,                   "tokenizer.ggml.eot_token_id"             },347    { LLM_KV_TOKENIZER_EOM_ID,                   "tokenizer.ggml.eom_token_id"             },348    { LLM_KV_TOKENIZER_UNK_ID,                   "tokenizer.ggml.unknown_token_id"         },349    { LLM_KV_TOKENIZER_SEP_ID,                   "tokenizer.ggml.seperator_token_id"       },350    { LLM_KV_TOKENIZER_PAD_ID,                   "tokenizer.ggml.padding_token_id"         },351    { LLM_KV_TOKENIZER_CLS_ID,                   "tokenizer.ggml.cls_token_id"             },352    { LLM_KV_TOKENIZER_MASK_ID,                  "tokenizer.ggml.mask_token_id"            },353    { LLM_KV_TOKENIZER_ADD_BOS,                  "tokenizer.ggml.add_bos_token"            },354    { LLM_KV_TOKENIZER_ADD_EOS,                  "tokenizer.ggml.add_eos_token"            },355    { LLM_KV_TOKENIZER_ADD_SEP,                  "tokenizer.ggml.add_sep_token"            },356    { LLM_KV_TOKENIZER_ADD_PREFIX,               "tokenizer.ggml.add_space_prefix"         },357    { LLM_KV_TOKENIZER_REMOVE_EXTRA_WS,          "tokenizer.ggml.remove_extra_whitespaces" },358    { LLM_KV_TOKENIZER_PRECOMPILED_CHARSMAP,     "tokenizer.ggml.precompiled_charsmap"     },359    { LLM_KV_TOKENIZER_HF_JSON,                  "tokenizer.huggingface.json"              },360    { LLM_KV_TOKENIZER_RWKV,                     "tokenizer.rwkv.world"                    },361    { LLM_KV_TOKENIZER_CHAT_TEMPLATE,            "tokenizer.chat_template"                 },362    { LLM_KV_TOKENIZER_NORMALIZER_LOWERCASE,     "tokenizer.ggml.normalizer.lowercase"     },363    { LLM_KV_TOKENIZER_NORMALIZER_STRIP_ACCENTS, "tokenizer.ggml.normalizer.strip_accents" },364    { LLM_KV_TOKENIZER_FIM_PRE_ID,               "tokenizer.ggml.fim_pre_token_id"         },365    { LLM_KV_TOKENIZER_FIM_SUF_ID,               "tokenizer.ggml.fim_suf_token_id"         },366    { LLM_KV_TOKENIZER_FIM_MID_ID,               "tokenizer.ggml.fim_mid_token_id"         },367    { LLM_KV_TOKENIZER_FIM_PAD_ID,               "tokenizer.ggml.fim_pad_token_id"         },368    { LLM_KV_TOKENIZER_FIM_REP_ID,               "tokenizer.ggml.fim_rep_token_id"         },369    { LLM_KV_TOKENIZER_FIM_SEP_ID,               "tokenizer.ggml.fim_sep_token_id"         },370    { LLM_KV_TOKENIZER_SUPPRESS_TOKENS,          "tokenizer.ggml.suppress_tokens"          },371 372    { LLM_KV_ADAPTER_TYPE,                    "adapter.type"               },373    { LLM_KV_ADAPTER_LORA_ALPHA,              "adapter.lora.alpha"         },374    { LLM_KV_ADAPTER_LORA_TASK_NAME,          "adapter.lora.task_name"     },375    { LLM_KV_ADAPTER_LORA_PROMPT_PREFIX,      "adapter.lora.prompt_prefix" },376    { LLM_KV_ADAPTER_ALORA_INVOCATION_TOKENS, "adapter.alora.invocation_tokens" },377 378    { LLM_KV_XIELU_ALPHA_N,         "xielu.alpha_n"         },379    { LLM_KV_XIELU_ALPHA_P,         "xielu.alpha_p"         },380    { LLM_KV_XIELU_BETA,            "xielu.beta"            },381    { LLM_KV_XIELU_EPS,             "xielu.eps"             },382 383    // deprecated384    { LLM_KV_TOKENIZER_PREFIX_ID, "tokenizer.ggml.prefix_token_id" },385    { LLM_KV_TOKENIZER_SUFFIX_ID, "tokenizer.ggml.suffix_token_id" },386    { LLM_KV_TOKENIZER_MIDDLE_ID, "tokenizer.ggml.middle_token_id" },387};388 389static const std::map<llm_tensor, const char *> LLM_TENSOR_NAMES = {390    { LLM_TENSOR_TOKEN_EMBD,                             "token_embd" },391    { LLM_TENSOR_OUTPUT_NORM,                            "output_norm" },392    { LLM_TENSOR_OUTPUT_NORM_LFM2,                       "token_embd_norm" }, // fix for wrong tensor name393    { LLM_TENSOR_OUTPUT,                                 "output" },394    { LLM_TENSOR_ROPE_FREQS,                             "rope_freqs" },395    { LLM_TENSOR_ATTN_NORM,                              "blk.%d.attn_norm" },396    { LLM_TENSOR_ATTN_Q,                                 "blk.%d.attn_q" },397    { LLM_TENSOR_ATTN_K,                                 "blk.%d.attn_k" },398    { LLM_TENSOR_ATTN_V,                                 "blk.%d.attn_v" },399    { LLM_TENSOR_ATTN_OUT,                               "blk.%d.attn_output" },400    { LLM_TENSOR_ATTN_ROT_EMBD,                          "blk.%d.attn_rot_embd" },401    { LLM_TENSOR_FFN_GATE_INP,                           "blk.%d.ffn_gate_inp" },402    { LLM_TENSOR_FFN_NORM,                               "blk.%d.ffn_norm" },403    { LLM_TENSOR_FFN_GATE,                               "blk.%d.ffn_gate" },404    { LLM_TENSOR_FFN_DOWN,                               "blk.%d.ffn_down" },405    { LLM_TENSOR_FFN_UP,                                 "blk.%d.ffn_up" },406    { LLM_TENSOR_FFN_GATE_EXP,                           "blk.%d.ffn_gate.%d" },407    { LLM_TENSOR_FFN_DOWN_EXP,                           "blk.%d.ffn_down.%d" },408    { LLM_TENSOR_FFN_UP_EXP,                             "blk.%d.ffn_up.%d" },409    { LLM_TENSOR_FFN_GATE_EXPS,                          "blk.%d.ffn_gate_exps" },410    { LLM_TENSOR_FFN_GATE_UP_EXPS,                       "blk.%d.ffn_gate_up_exps" },411    { LLM_TENSOR_FFN_DOWN_EXPS,                          "blk.%d.ffn_down_exps" },412    { LLM_TENSOR_FFN_UP_EXPS,                            "blk.%d.ffn_up_exps" },413    { LLM_TENSOR_ATTN_POST_NORM,                         "blk.%d.post_attention_norm" },414    { LLM_TENSOR_ATTN_Q_NORM,                            "blk.%d.attn_q_norm" },415    { LLM_TENSOR_ATTN_K_NORM,                            "blk.%d.attn_k_norm" },416    { LLM_TENSOR_ATTN_GATE,                              "blk.%d.attn_gate" },417    { LLM_TENSOR_FFN_POST_NORM,                          "blk.%d.post_ffw_norm" },418    { LLM_TENSOR_FFN_POST_NORM_1,                        "blk.%d.post_ffw_norm_1" },419    { LLM_TENSOR_FFN_POST_NORM_2,                        "blk.%d.post_ffw_norm_2" },420    { LLM_TENSOR_FFN_PRE_NORM_2,                         "blk.%d.pre_ffw_norm_2" },421    { LLM_TENSOR_FFN_GATE_SHEXP,                         "blk.%d.ffn_gate_shexp" },422    { LLM_TENSOR_FFN_UP_SHEXP,                           "blk.%d.ffn_up_shexp" },423    { LLM_TENSOR_FFN_DOWN_SHEXP,                         "blk.%d.ffn_down_shexp" },424    { LLM_TENSOR_FFN_EXP_PROBS_B,                        "blk.%d.exp_probs_b" },425    { LLM_TENSOR_FFN_LATENT_DOWN,                        "blk.%d.ffn_latent_down" },426    { LLM_TENSOR_FFN_LATENT_UP,                          "blk.%d.ffn_latent_up" },427    { LLM_TENSOR_ATTN_NORM_2,                            "blk.%d.attn_norm_2" },428    { LLM_TENSOR_ATTN_QKV,                               "blk.%d.attn_qkv" },429    { LLM_TENSOR_LAYER_OUT_NORM,                         "blk.%d.layer_output_norm" },430    { LLM_TENSOR_LAYER_OUT_SCALE,                        "blk.%d.layer_output_scale" },431    { LLM_TENSOR_ATTN_OUT_NORM,                          "blk.%d.attn_output_norm" },432    { LLM_TENSOR_POS_EMBD,                               "position_embd" },433    { LLM_TENSOR_FFN_ACT,                                "blk.%d.ffn.act" },434    { LLM_TENSOR_TOKEN_EMBD_NORM,                        "token_embd_norm" },435    { LLM_TENSOR_TOKEN_TYPES,                            "token_types" },436    { LLM_TENSOR_CLS,                                    "cls" },437    { LLM_TENSOR_CLS_OUT,                                "cls.output" },438    { LLM_TENSOR_CLS_NORM,                               "cls.norm" },439    { LLM_TENSOR_ENC_OUTPUT_NORM,                        "enc.output_norm" },440    { LLM_TENSOR_FFN_GATE_INP_SHEXP,                     "blk.%d.ffn_gate_inp_shexp" },441    { LLM_TENSOR_SSM_A_NOSCAN,                           "blk.%d.ssm_a" },442    { LLM_TENSOR_SSM_CONV1D,                             "blk.%d.ssm_conv1d" },443    { LLM_TENSOR_SSM_DT,                                 "blk.%d.ssm_dt" },444    { LLM_TENSOR_SSM_BETA_ALPHA,                         "blk.%d.ssm_ba" },445    { LLM_TENSOR_SSM_ALPHA,                              "blk.%d.ssm_alpha" },446    { LLM_TENSOR_SSM_IN,                                 "blk.%d.ssm_in" },447    { LLM_TENSOR_SSM_NORM,                               "blk.%d.ssm_norm" },448    { LLM_TENSOR_SSM_OUT,                                "blk.%d.ssm_out" },449    { LLM_TENSOR_ROPE_FACTORS_LONG,                      "rope_factors_long" },450    { LLM_TENSOR_ROPE_FACTORS_SHORT,                     "rope_factors_short" },451    { LLM_TENSOR_SSM_X,                                  "blk.%d.ssm_x" },452    { LLM_TENSOR_SSM_A,                                  "blk.%d.ssm_a" },453    { LLM_TENSOR_SSM_D,                                  "blk.%d.ssm_d" },454    { LLM_TENSOR_SSM_DT_NORM,                            "blk.%d.ssm_dt_norm" },455    { LLM_TENSOR_SSM_B_NORM,                             "blk.%d.ssm_b_norm" },456    { LLM_TENSOR_SSM_C_NORM,                             "blk.%d.ssm_c_norm" },457    { LLM_TENSOR_SSM_CONV1D_Q,                           "blk.%d.ssm_conv1d_q" },458    { LLM_TENSOR_SSM_CONV1D_K,                           "blk.%d.ssm_conv1d_k" },459    { LLM_TENSOR_SSM_CONV1D_V,                           "blk.%d.ssm_conv1d_v" },460    { LLM_TENSOR_SSM_F_A,                                "blk.%d.ssm_f_a" },461    { LLM_TENSOR_SSM_F_B,                                "blk.%d.ssm_f_b" },462    { LLM_TENSOR_SSM_BETA,                               "blk.%d.ssm_beta" },463    { LLM_TENSOR_SSM_G_A,                                "blk.%d.ssm_g_a" },464    { LLM_TENSOR_SSM_G_B,                                "blk.%d.ssm_g_b" },465    { LLM_TENSOR_SSM_NORM,                               "blk.%d.ssm_norm" },466    { LLM_TENSOR_ATTN_Q_A_NORM,                          "blk.%d.attn_q_a_norm" },467    { LLM_TENSOR_ATTN_KV_A_NORM,                         "blk.%d.attn_kv_a_norm" },468    { LLM_TENSOR_ATTN_Q_A,                               "blk.%d.attn_q_a" },469    { LLM_TENSOR_ATTN_Q_B,                               "blk.%d.attn_q_b" },470    { LLM_TENSOR_ATTN_KV_A_MQA,                          "blk.%d.attn_kv_a_mqa" },471    { LLM_TENSOR_ATTN_KV_B,                              "blk.%d.attn_kv_b" },472    { LLM_TENSOR_ATTN_KV,                                "blk.%d.attn_kv" },473    { LLM_TENSOR_ATTN_KV_NORM,                           "blk.%d.attn_kv_a_norm" },474    { LLM_TENSOR_ATTN_OUT_A,                             "blk.%d.attn_output_a" },475    { LLM_TENSOR_ATTN_OUT_B,                             "blk.%d.attn_output_b" },476    { LLM_TENSOR_HC_HEAD_FN,                             "output_hc_fn" },477    { LLM_TENSOR_HC_HEAD_BASE,                           "output_hc_base" },478    { LLM_TENSOR_HC_HEAD_SCALE,                          "output_hc_scale" },479    { LLM_TENSOR_HC_ATTN_FN,                             "blk.%d.hc_attn_fn" },480    { LLM_TENSOR_HC_ATTN_BASE,                           "blk.%d.hc_attn_base" },481    { LLM_TENSOR_HC_ATTN_SCALE,                          "blk.%d.hc_attn_scale" },482    { LLM_TENSOR_HC_FFN_FN,                              "blk.%d.hc_ffn_fn" },483    { LLM_TENSOR_HC_FFN_BASE,                            "blk.%d.hc_ffn_base" },484    { LLM_TENSOR_HC_FFN_SCALE,                           "blk.%d.hc_ffn_scale" },485    { LLM_TENSOR_ATTN_COMPRESSOR_WKV,                    "blk.%d.attn_compressor_kv" },486    { LLM_TENSOR_ATTN_COMPRESSOR_WGATE,                  "blk.%d.attn_compressor_gate" },487    { LLM_TENSOR_ATTN_COMPRESSOR_APE,                    "blk.%d.attn_compressor_ape" },488    { LLM_TENSOR_ATTN_COMPRESSOR_NORM,                   "blk.%d.attn_compressor_norm" },489    { LLM_TENSOR_PER_LAYER_TOKEN_EMBD,                   "per_layer_token_embd" },490    { LLM_TENSOR_PER_LAYER_MODEL_PROJ,                   "per_layer_model_proj" },491    { LLM_TENSOR_PER_LAYER_PROJ_NORM,                    "per_layer_proj_norm" },492    { LLM_TENSOR_ALTUP_UNEMBD_PROJ,                      "altup_unembd_proj" },493    { LLM_TENSOR_ALTUP_PROJ,                             "altup_proj" },494    { LLM_TENSOR_PER_LAYER_INP_GATE,                     "blk.%d.inp_gate" },495    { LLM_TENSOR_PER_LAYER_PROJ,                         "blk.%d.proj" },496    { LLM_TENSOR_PER_LAYER_POST_NORM,                    "blk.%d.post_norm" },497    { LLM_TENSOR_ALTUP_CORRECT_COEF,                     "blk.%d.altup_correct_coef" },498    { LLM_TENSOR_ALTUP_CORRECT_SCALE,                    "blk.%d.altup_correct_scale" },499    { LLM_TENSOR_ALTUP_PREDICT_COEF,                     "blk.%d.altup_predict_coef" },500    { LLM_TENSOR_ALTUP_ROUTER,                           "blk.%d.altup_router" },501    { LLM_TENSOR_ALTUP_ROUTER_NORM,                      "blk.%d.altup_router_norm" },502    { LLM_TENSOR_LAUREL_L,                               "blk.%d.laurel_l" },503    { LLM_TENSOR_LAUREL_R,                               "blk.%d.laurel_r" },504    { LLM_TENSOR_LAUREL_POST_NORM,                       "blk.%d.laurel_post_norm" },505    { LLM_TENSOR_DENSE_2_OUT,                            "dense_2" },506    { LLM_TENSOR_DENSE_3_OUT,                            "dense_3" },507    { LLM_TENSOR_FFN_NORM_EXPS,                          "blk.%d.ffn_norm_exps" },508    { LLM_TENSOR_ATTN_K_B,                               "blk.%d.attn_k_b" },509    { LLM_TENSOR_ATTN_V_B,                               "blk.%d.attn_v_b" },510    { LLM_TENSOR_NEXTN_PROJ_PRE,                         "nextn.pre_projection" },511    { LLM_TENSOR_NEXTN_PROJ_POST,                        "nextn.post_projection" },512    { LLM_TENSOR_NEXTN_EH_PROJ,                          "blk.%d.nextn.eh_proj" },513    { LLM_TENSOR_NEXTN_EMBED_TOKENS,                     "blk.%d.nextn.embed_tokens" },514    { LLM_TENSOR_NEXTN_ENORM,                            "blk.%d.nextn.enorm" },515    { LLM_TENSOR_NEXTN_HNORM,                            "blk.%d.nextn.hnorm" },516    { LLM_TENSOR_NEXTN_SHARED_HEAD_HEAD,                 "blk.%d.nextn.shared_head_head" },517    { LLM_TENSOR_NEXTN_SHARED_HEAD_NORM,                 "blk.%d.nextn.shared_head_norm" },518    { LLM_TENSOR_ATTN_SUB_NORM,                          "blk.%d.attn_sub_norm" },519    { LLM_TENSOR_FFN_SUB_NORM,                           "blk.%d.ffn_sub_norm" },520    { LLM_TENSOR_DEC_OUTPUT_NORM,                        "dec.output_norm" },521    { LLM_TENSOR_DEC_ATTN_NORM,                          "dec.blk.%d.attn_norm" },522    { LLM_TENSOR_DEC_ATTN_Q,                             "dec.blk.%d.attn_q" },523    { LLM_TENSOR_DEC_ATTN_K,                             "dec.blk.%d.attn_k" },524    { LLM_TENSOR_DEC_ATTN_V,                             "dec.blk.%d.attn_v" },525    { LLM_TENSOR_DEC_ATTN_OUT,                           "dec.blk.%d.attn_o" },526    { LLM_TENSOR_DEC_ATTN_REL_B,                         "dec.blk.%d.attn_rel_b" },527    { LLM_TENSOR_DEC_CROSS_ATTN_NORM,                    "dec.blk.%d.cross_attn_norm" },528    { LLM_TENSOR_DEC_CROSS_ATTN_Q,                       "dec.blk.%d.cross_attn_q" },529    { LLM_TENSOR_DEC_CROSS_ATTN_K,                       "dec.blk.%d.cross_attn_k" },530    { LLM_TENSOR_DEC_CROSS_ATTN_V,                       "dec.blk.%d.cross_attn_v" },531    { LLM_TENSOR_DEC_CROSS_ATTN_OUT,                     "dec.blk.%d.cross_attn_o" },532    { LLM_TENSOR_DEC_CROSS_ATTN_REL_B,                   "dec.blk.%d.cross_attn_rel_b" },533    { LLM_TENSOR_DEC_FFN_NORM,                           "dec.blk.%d.ffn_norm" },534    { LLM_TENSOR_DEC_FFN_GATE,                           "dec.blk.%d.ffn_gate" },535    { LLM_TENSOR_DEC_FFN_DOWN,                           "dec.blk.%d.ffn_down" },536    { LLM_TENSOR_DEC_FFN_UP,                             "dec.blk.%d.ffn_up" },537    { LLM_TENSOR_ENC_ATTN_NORM,                          "enc.blk.%d.attn_norm" },538    { LLM_TENSOR_ENC_ATTN_Q,                             "enc.blk.%d.attn_q" },539    { LLM_TENSOR_ENC_ATTN_K,                             "enc.blk.%d.attn_k" },540    { LLM_TENSOR_ENC_ATTN_V,                             "enc.blk.%d.attn_v" },541    { LLM_TENSOR_ENC_ATTN_OUT,                           "enc.blk.%d.attn_o" },542    { LLM_TENSOR_ENC_ATTN_REL_B,                         "enc.blk.%d.attn_rel_b" },543    { LLM_TENSOR_ENC_FFN_NORM,                           "enc.blk.%d.ffn_norm" },544    { LLM_TENSOR_ENC_FFN_GATE,                           "enc.blk.%d.ffn_gate" },545    { LLM_TENSOR_ENC_FFN_DOWN,                           "enc.blk.%d.ffn_down" },546    { LLM_TENSOR_ENC_FFN_UP,                             "enc.blk.%d.ffn_up" },547    { LLM_TENSOR_TIME_MIX_W1,                            "blk.%d.time_mix_w1" },548    { LLM_TENSOR_TIME_MIX_W2,                            "blk.%d.time_mix_w2" },549    { LLM_TENSOR_TIME_MIX_LERP_X,                        "blk.%d.time_mix_lerp_x" },550    { LLM_TENSOR_TIME_MIX_LERP_W,                        "blk.%d.time_mix_lerp_w" },551    { LLM_TENSOR_TIME_MIX_LERP_K,                        "blk.%d.time_mix_lerp_k" },552    { LLM_TENSOR_TIME_MIX_LERP_V,                        "blk.%d.time_mix_lerp_v" },553    { LLM_TENSOR_TIME_MIX_LERP_R,                        "blk.%d.time_mix_lerp_r" },554    { LLM_TENSOR_TIME_MIX_LERP_G,                        "blk.%d.time_mix_lerp_g" },555    { LLM_TENSOR_TIME_MIX_LERP_FUSED,                    "blk.%d.time_mix_lerp_fused" },556    { LLM_TENSOR_TIME_MIX_FIRST,                         "blk.%d.time_mix_first" },557    { LLM_TENSOR_TIME_MIX_DECAY,                         "blk.%d.time_mix_decay" },558    { LLM_TENSOR_TIME_MIX_DECAY_W1,                      "blk.%d.time_mix_decay_w1" },559    { LLM_TENSOR_TIME_MIX_DECAY_W2,                      "blk.%d.time_mix_decay_w2" },560    { LLM_TENSOR_TIME_MIX_KEY,                           "blk.%d.time_mix_key" },561    { LLM_TENSOR_TIME_MIX_VALUE,                         "blk.%d.time_mix_value" },562    { LLM_TENSOR_TIME_MIX_RECEPTANCE,                    "blk.%d.time_mix_receptance" },563    { LLM_TENSOR_TIME_MIX_GATE,                          "blk.%d.time_mix_gate" },564    { LLM_TENSOR_TIME_MIX_LN,                            "blk.%d.time_mix_ln" },565    { LLM_TENSOR_TIME_MIX_OUTPUT,                        "blk.%d.time_mix_output" },566    { LLM_TENSOR_CHANNEL_MIX_LERP_K,                     "blk.%d.channel_mix_lerp_k" },567    { LLM_TENSOR_CHANNEL_MIX_LERP_R,                     "blk.%d.channel_mix_lerp_r" },568    { LLM_TENSOR_CHANNEL_MIX_KEY,                        "blk.%d.channel_mix_key" },569    { LLM_TENSOR_CHANNEL_MIX_VALUE,                      "blk.%d.channel_mix_value" },570    { LLM_TENSOR_CHANNEL_MIX_RECEPTANCE,                 "blk.%d.channel_mix_receptance" },571    { LLM_TENSOR_TIME_MIX_W0,                            "blk.%d.time_mix_w0" },572    { LLM_TENSOR_TIME_MIX_A0,                            "blk.%d.time_mix_a0" },573    { LLM_TENSOR_TIME_MIX_A1,                            "blk.%d.time_mix_a1" },574    { LLM_TENSOR_TIME_MIX_A2,                            "blk.%d.time_mix_a2" },575    { LLM_TENSOR_TIME_MIX_V0,                            "blk.%d.time_mix_v0" },576    { LLM_TENSOR_TIME_MIX_V1,                            "blk.%d.time_mix_v1" },577    { LLM_TENSOR_TIME_MIX_V2,                            "blk.%d.time_mix_v2" },578    { LLM_TENSOR_TIME_MIX_G1,                            "blk.%d.time_mix_g1" },579    { LLM_TENSOR_TIME_MIX_G2,                            "blk.%d.time_mix_g2" },580    { LLM_TENSOR_TIME_MIX_K_K,                           "blk.%d.time_mix_k_k" },581    { LLM_TENSOR_TIME_MIX_K_A,                           "blk.%d.time_mix_k_a" },582    { LLM_TENSOR_TIME_MIX_R_K,                           "blk.%d.time_mix_r_k" },583    { LLM_TENSOR_CONV1D,                                 "conv1d" },584    { LLM_TENSOR_CONVNEXT_DW,                            "convnext.%d.dw" },585    { LLM_TENSOR_CONVNEXT_NORM,                          "convnext.%d.norm" },586    { LLM_TENSOR_CONVNEXT_PW1,                           "convnext.%d.pw1" },587    { LLM_TENSOR_CONVNEXT_PW2,                           "convnext.%d.pw2" },588    { LLM_TENSOR_CONVNEXT_GAMMA,                         "convnext.%d.gamma" },589    { LLM_TENSOR_POS_NET_CONV1,                          "posnet.%d.conv1" },590    { LLM_TENSOR_POS_NET_CONV2,                          "posnet.%d.conv2" },591    { LLM_TENSOR_POS_NET_NORM,                           "posnet.%d.norm" },592    { LLM_TENSOR_POS_NET_NORM1,                          "posnet.%d.norm1" },593    { LLM_TENSOR_POS_NET_NORM2,                          "posnet.%d.norm2" },594    { LLM_TENSOR_POS_NET_ATTN_NORM,                      "posnet.%d.attn_norm" },595    { LLM_TENSOR_POS_NET_ATTN_Q,                         "posnet.%d.attn_q" },596    { LLM_TENSOR_POS_NET_ATTN_K,                         "posnet.%d.attn_k" },597    { LLM_TENSOR_POS_NET_ATTN_V,                         "posnet.%d.attn_v" },598    { LLM_TENSOR_POS_NET_ATTN_OUT,                       "posnet.%d.attn_output" },599    { LLM_TENSOR_ATTN_SINKS,                             "blk.%d.attn_sinks" },600    { LLM_TENSOR_SHORTCONV_CONV,                         "blk.%d.shortconv.conv" },601    { LLM_TENSOR_SHORTCONV_INPROJ,                       "blk.%d.shortconv.in_proj" },602    { LLM_TENSOR_SHORTCONV_OUTPROJ,                      "blk.%d.shortconv.out_proj" },603    { LLM_TENSOR_FFN_GATE_CHEXPS,                        "blk.%d.ffn_gate_chexps" },604    { LLM_TENSOR_FFN_DOWN_CHEXPS,                        "blk.%d.ffn_down_chexps" },605    { LLM_TENSOR_FFN_UP_CHEXPS,                          "blk.%d.ffn_up_chexps" },606    { LLM_TENSOR_VISEXP_ATTN_QKV,                        "blk.%d.vis_attn_qkv" },607    { LLM_TENSOR_VISEXP_ATTN_OUT,                        "blk.%d.vis_attn_output" },608    { LLM_TENSOR_VISEXP_FFN_GATE,                        "blk.%d.vis_gate" },609    { LLM_TENSOR_VISEXP_FFN_DOWN,                        "blk.%d.vis_down" },610    { LLM_TENSOR_VISEXP_FFN_UP,                          "blk.%d.vis_up" },611    { LLM_TENSOR_INDEXER_K_NORM,                         "blk.%d.indexer.k_norm" },612    { LLM_TENSOR_INDEXER_PROJ,                           "blk.%d.indexer.proj" },613    { LLM_TENSOR_INDEXER_ATTN_K,                         "blk.%d.indexer.attn_k" },614    { LLM_TENSOR_INDEXER_ATTN_Q_B,                       "blk.%d.indexer.attn_q_b" },615    { LLM_TENSOR_INDEXER_Q_PROJ,                         "blk.%d.indexer.q_proj" },616    { LLM_TENSOR_INDEXER_K_PROJ,                         "blk.%d.indexer.k_proj" },617    { LLM_TENSOR_INDEXER_Q_NORM,                         "blk.%d.indexer.q_norm" },618    { LLM_TENSOR_INDEXER_COMPRESSOR_WKV,                 "blk.%d.indexer_compressor_kv" },619    { LLM_TENSOR_INDEXER_COMPRESSOR_WGATE,               "blk.%d.indexer_compressor_gate" },620    { LLM_TENSOR_INDEXER_COMPRESSOR_APE,                 "blk.%d.indexer_compressor_ape" },621    { LLM_TENSOR_INDEXER_COMPRESSOR_NORM,                "blk.%d.indexer_compressor_norm" },622    { LLM_TENSOR_FFN_GATE_TID2EID,                       "blk.%d.ffn_gate_tid2eid" },623    { LLM_TENSOR_MASKED_EMBD_CENTROIDS,                  "masked_embd_centroids" },624    { LLM_TENSOR_MASKED_EMBD_ORDERING,                   "masked_embd_ordering" },625    { LLM_TENSOR_FC,                                     "fc" },626    { LLM_TENSOR_D2T,                                    "d2t" },627    { LLM_TENSOR_DSPARK_MARKOV_W1,                       "markov_w1" },628    { LLM_TENSOR_DSPARK_MARKOV_W2,                       "markov_w2" },629    { LLM_TENSOR_DSPARK_CONF_PROJ,                       "conf_proj" },630};631 632// declare information about the model weight tensors:633// - the layer in which the tensor is going to be used. this is needed in order to assign the correct buffer type for the weight634// - the operator which is going to use the weight. this is needed to determine if the respective backend supports the operator635//636// for example, input layers are usually assigned to CPU/host buffer types637//638// a mismatch between the declared information and the actual layer/op in which the tensor is used can lead to sub-optimal639//   assignment of the buffer types and extra overhead during computation640// example: https://github.com/ggml-org/llama.cpp/pull/17548641//642static const std::map<llm_tensor, llm_tensor_info> LLM_TENSOR_INFOS = {643    {LLM_TENSOR_TOKEN_EMBD,                 {LLM_TENSOR_LAYER_INPUT,     GGML_OP_GET_ROWS}},644    {LLM_TENSOR_POS_EMBD,                   {LLM_TENSOR_LAYER_INPUT,     GGML_OP_GET_ROWS}},645    {LLM_TENSOR_TOKEN_TYPES,                {LLM_TENSOR_LAYER_INPUT,     GGML_OP_GET_ROWS}},646    {LLM_TENSOR_TOKEN_EMBD_NORM,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},  // do the norms on the first layer (not the input layer)647    {LLM_TENSOR_OUTPUT,                     {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},648    {LLM_TENSOR_CLS,                        {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},649    {LLM_TENSOR_CLS_OUT,                    {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},650    {LLM_TENSOR_CLS_NORM,                   {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL}},651    {LLM_TENSOR_DENSE_2_OUT,                {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}}, // Dense layer output652    {LLM_TENSOR_DENSE_3_OUT,                {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}}, // Dense layer output653    {LLM_TENSOR_OUTPUT_NORM,                {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL}},654    {LLM_TENSOR_OUTPUT_NORM_LFM2,           {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL}},655    {LLM_TENSOR_DEC_OUTPUT_NORM,            {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL}},656    {LLM_TENSOR_ENC_OUTPUT_NORM,            {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL}},657    {LLM_TENSOR_ROPE_FREQS,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ROPE}},658    {LLM_TENSOR_ROPE_FACTORS_LONG,          {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ROPE}},659    {LLM_TENSOR_ROPE_FACTORS_SHORT,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ROPE}},660    {LLM_TENSOR_ATTN_Q,                     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},661    {LLM_TENSOR_ATTN_K,                     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},662    {LLM_TENSOR_ATTN_V,                     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},663    {LLM_TENSOR_ATTN_QKV,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},664    {LLM_TENSOR_ATTN_OUT,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},665    {LLM_TENSOR_ATTN_GATE,                  {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},666    {LLM_TENSOR_FFN_GATE,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},667    {LLM_TENSOR_FFN_DOWN,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},668    {LLM_TENSOR_FFN_UP,                     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},669    {LLM_TENSOR_FFN_DOWN_SHEXP,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},670    {LLM_TENSOR_FFN_GATE_SHEXP,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},671    {LLM_TENSOR_FFN_UP_SHEXP,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},672    {LLM_TENSOR_ATTN_Q_A,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},673    {LLM_TENSOR_ATTN_Q_B,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},674    {LLM_TENSOR_ATTN_KV_A_MQA,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},675    {LLM_TENSOR_ATTN_KV_B,                  {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},676    {LLM_TENSOR_ATTN_KV,                    {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},677    {LLM_TENSOR_ATTN_KV_NORM,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},678    {LLM_TENSOR_ATTN_OUT_A,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},679    {LLM_TENSOR_ATTN_OUT_B,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},680    {LLM_TENSOR_HC_HEAD_FN,                 {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},681    {LLM_TENSOR_HC_HEAD_BASE,               {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_ADD}},682    {LLM_TENSOR_HC_HEAD_SCALE,              {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL}},683    {LLM_TENSOR_HC_ATTN_FN,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},684    {LLM_TENSOR_HC_ATTN_BASE,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},685    {LLM_TENSOR_HC_ATTN_SCALE,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},686    {LLM_TENSOR_HC_FFN_FN,                  {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},687    {LLM_TENSOR_HC_FFN_BASE,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},688    {LLM_TENSOR_HC_FFN_SCALE,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},689    {LLM_TENSOR_ATTN_COMPRESSOR_WKV,        {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},690    {LLM_TENSOR_ATTN_COMPRESSOR_WGATE,      {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},691    {LLM_TENSOR_ATTN_COMPRESSOR_APE,        {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},692    {LLM_TENSOR_ATTN_COMPRESSOR_NORM,       {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},693    {LLM_TENSOR_ATTN_K_B,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},694    {LLM_TENSOR_ATTN_V_B,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},695    {LLM_TENSOR_ATTN_SINKS,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_SCALE}},696    {LLM_TENSOR_DEC_ATTN_Q,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},697    {LLM_TENSOR_DEC_ATTN_K,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},698    {LLM_TENSOR_DEC_ATTN_V,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},699    {LLM_TENSOR_DEC_ATTN_OUT,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},700    {LLM_TENSOR_DEC_CROSS_ATTN_Q,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},701    {LLM_TENSOR_DEC_CROSS_ATTN_K,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},702    {LLM_TENSOR_DEC_CROSS_ATTN_V,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},703    {LLM_TENSOR_DEC_CROSS_ATTN_OUT,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},704    {LLM_TENSOR_DEC_FFN_GATE,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},705    {LLM_TENSOR_DEC_FFN_DOWN,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},706    {LLM_TENSOR_DEC_FFN_UP,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},707    {LLM_TENSOR_ENC_ATTN_Q,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},708    {LLM_TENSOR_ENC_ATTN_K,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},709    {LLM_TENSOR_ENC_ATTN_V,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},710    {LLM_TENSOR_ENC_ATTN_OUT,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},711    {LLM_TENSOR_ENC_FFN_GATE,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},712    {LLM_TENSOR_ENC_FFN_DOWN,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},713    {LLM_TENSOR_ENC_FFN_UP,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},714    {LLM_TENSOR_FFN_GATE_INP_SHEXP,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},715    {LLM_TENSOR_FFN_GATE_INP,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},716    {LLM_TENSOR_SSM_IN,                     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},717    {LLM_TENSOR_SSM_X,                      {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},718    {LLM_TENSOR_SSM_DT,                     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},719    {LLM_TENSOR_SSM_OUT,                    {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},720    {LLM_TENSOR_SSM_ALPHA,                  {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},721    {LLM_TENSOR_SSM_BETA_ALPHA,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},722    {LLM_TENSOR_TIME_MIX_W1,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},723    {LLM_TENSOR_TIME_MIX_W2,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},724    {LLM_TENSOR_TIME_MIX_A1,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},725    {LLM_TENSOR_TIME_MIX_A2,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},726    {LLM_TENSOR_TIME_MIX_V1,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},727    {LLM_TENSOR_TIME_MIX_V2,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},728    {LLM_TENSOR_TIME_MIX_G1,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},729    {LLM_TENSOR_TIME_MIX_G2,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},730    {LLM_TENSOR_TIME_MIX_DECAY_W1,          {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},731    {LLM_TENSOR_TIME_MIX_DECAY_W2,          {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},732    {LLM_TENSOR_TIME_MIX_KEY,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},733    {LLM_TENSOR_TIME_MIX_VALUE,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},734    {LLM_TENSOR_TIME_MIX_RECEPTANCE,        {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},735    {LLM_TENSOR_TIME_MIX_GATE,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},736    {LLM_TENSOR_TIME_MIX_OUTPUT,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},737    {LLM_TENSOR_CHANNEL_MIX_KEY,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},738    {LLM_TENSOR_CHANNEL_MIX_RECEPTANCE,     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},739    {LLM_TENSOR_CHANNEL_MIX_VALUE,          {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},740    {LLM_TENSOR_FFN_ACT,                    {LLM_TENSOR_LAYER_REPEATING, GGML_OP_DIV}},741    {LLM_TENSOR_SSM_CONV1D,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_SSM_CONV}},742    {LLM_TENSOR_SSM_A,                      {LLM_TENSOR_LAYER_REPEATING, GGML_OP_SSM_SCAN}},743    {LLM_TENSOR_SSM_A_NOSCAN,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}}, // a version of SSM_A used for MUL instead of SSM_SCAN744    {LLM_TENSOR_SSM_DT_NORM,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},745    {LLM_TENSOR_SSM_B_NORM,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},746    {LLM_TENSOR_SSM_C_NORM,                 {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},747    {LLM_TENSOR_SSM_D,                      {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},748    {LLM_TENSOR_SSM_NORM,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},749    // Kimi KDA - Conv tensors are 4D [d_conv, 1, d_inner, 1], reshaped to 2D at runtime750    {LLM_TENSOR_SSM_CONV1D_Q,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},751    {LLM_TENSOR_SSM_CONV1D_K,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},752    {LLM_TENSOR_SSM_CONV1D_V,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},753    {LLM_TENSOR_SSM_F_A,                    {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},754    {LLM_TENSOR_SSM_F_B,                    {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},755    {LLM_TENSOR_SSM_BETA,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},756    {LLM_TENSOR_SSM_G_A,                    {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},757    {LLM_TENSOR_SSM_G_B,                    {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},758    {LLM_TENSOR_TIME_MIX_LERP_X,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},759    {LLM_TENSOR_TIME_MIX_LN,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},760    {LLM_TENSOR_CHANNEL_MIX_LERP_K,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},761    {LLM_TENSOR_CHANNEL_MIX_LERP_R,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},762    {LLM_TENSOR_TIME_MIX_K_K,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},763    {LLM_TENSOR_TIME_MIX_K_A,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},764    {LLM_TENSOR_TIME_MIX_R_K,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},765    {LLM_TENSOR_TIME_MIX_LERP_W,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},766    {LLM_TENSOR_TIME_MIX_LERP_K,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},767    {LLM_TENSOR_TIME_MIX_LERP_V,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},768    {LLM_TENSOR_TIME_MIX_LERP_R,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},769    {LLM_TENSOR_TIME_MIX_LERP_G,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},770    {LLM_TENSOR_TIME_MIX_LERP_FUSED,        {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},771    {LLM_TENSOR_TIME_MIX_DECAY,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},772    {LLM_TENSOR_TIME_MIX_W0,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},773    {LLM_TENSOR_TIME_MIX_A0,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},774    {LLM_TENSOR_TIME_MIX_V0,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},775    {LLM_TENSOR_TIME_MIX_FIRST,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_RWKV_WKV6}},776    {LLM_TENSOR_ATTN_NORM,                  {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},777    {LLM_TENSOR_ATTN_NORM_2,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},778    {LLM_TENSOR_ATTN_OUT_NORM,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},779    {LLM_TENSOR_ATTN_POST_NORM,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},780    {LLM_TENSOR_FFN_NORM,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},781    {LLM_TENSOR_FFN_PRE_NORM_2,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},782    {LLM_TENSOR_FFN_POST_NORM_1,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},783    {LLM_TENSOR_FFN_POST_NORM_2,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},784    {LLM_TENSOR_FFN_POST_NORM,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},785    {LLM_TENSOR_FFN_NORM_EXPS,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},786    {LLM_TENSOR_ATTN_Q_NORM,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},787    {LLM_TENSOR_ATTN_K_NORM,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},788    {LLM_TENSOR_LAYER_OUT_NORM,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},789    {LLM_TENSOR_LAYER_OUT_SCALE,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},790    {LLM_TENSOR_ATTN_Q_A_NORM,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},791    {LLM_TENSOR_ATTN_KV_A_NORM,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},792    {LLM_TENSOR_ATTN_SUB_NORM,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},793    {LLM_TENSOR_FFN_SUB_NORM,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},794    {LLM_TENSOR_DEC_ATTN_NORM,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},795    {LLM_TENSOR_DEC_CROSS_ATTN_NORM,        {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},796    {LLM_TENSOR_DEC_FFN_NORM,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},797    {LLM_TENSOR_ENC_ATTN_NORM,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},798    {LLM_TENSOR_ENC_FFN_NORM,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},799    {LLM_TENSOR_DEC_ATTN_REL_B,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},800    {LLM_TENSOR_ENC_ATTN_REL_B,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},801    {LLM_TENSOR_FFN_DOWN_EXPS,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},802    {LLM_TENSOR_FFN_GATE_EXPS,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},803    {LLM_TENSOR_FFN_UP_EXPS,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},804    {LLM_TENSOR_FFN_GATE_UP_EXPS,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},805    {LLM_TENSOR_FFN_DOWN_CHEXPS,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},806    {LLM_TENSOR_FFN_GATE_CHEXPS,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},807    {LLM_TENSOR_FFN_UP_CHEXPS,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},808    {LLM_TENSOR_FFN_EXP_PROBS_B,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},809    // altup / laurel (gemma 3n)810    {LLM_TENSOR_PER_LAYER_TOKEN_EMBD,       {LLM_TENSOR_LAYER_INPUT,     GGML_OP_GET_ROWS}},811    {LLM_TENSOR_PER_LAYER_MODEL_PROJ,       {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},812    {LLM_TENSOR_PER_LAYER_PROJ_NORM,        {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},813    {LLM_TENSOR_ALTUP_PROJ,                 {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},814    {LLM_TENSOR_ALTUP_UNEMBD_PROJ,          {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},815    {LLM_TENSOR_PER_LAYER_INP_GATE,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},816    {LLM_TENSOR_PER_LAYER_PROJ,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},817    {LLM_TENSOR_PER_LAYER_POST_NORM,        {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},818    {LLM_TENSOR_ALTUP_CORRECT_COEF,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},819    {LLM_TENSOR_ALTUP_CORRECT_SCALE,        {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},820    {LLM_TENSOR_ALTUP_PREDICT_COEF,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},821    {LLM_TENSOR_ALTUP_ROUTER,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},822    {LLM_TENSOR_ALTUP_ROUTER_NORM,          {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},823    {LLM_TENSOR_LAUREL_L,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},824    {LLM_TENSOR_LAUREL_R,                   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},825    {LLM_TENSOR_LAUREL_POST_NORM,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},826    // this tensor is loaded for T5, but never used827    {LLM_TENSOR_DEC_CROSS_ATTN_REL_B,       {LLM_TENSOR_LAYER_REPEATING, GGML_OP_NONE}},828    {LLM_TENSOR_CONV1D,                     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_IM2COL}},829    {LLM_TENSOR_POS_NET_NORM,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},830    {LLM_TENSOR_POS_NET_NORM1,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},831    {LLM_TENSOR_POS_NET_NORM2,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},832    {LLM_TENSOR_POS_NET_CONV1,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_IM2COL}},833    {LLM_TENSOR_POS_NET_CONV2,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_IM2COL}},834    {LLM_TENSOR_POS_NET_ATTN_NORM,          {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},835    {LLM_TENSOR_POS_NET_ATTN_Q,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},836    {LLM_TENSOR_POS_NET_ATTN_K,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},837    {LLM_TENSOR_POS_NET_ATTN_V,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},838    {LLM_TENSOR_POS_NET_ATTN_OUT,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},839    {LLM_TENSOR_CONVNEXT_DW,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_IM2COL}},840    {LLM_TENSOR_CONVNEXT_NORM,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},841    {LLM_TENSOR_CONVNEXT_PW1,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},842    {LLM_TENSOR_CONVNEXT_PW2,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},843    {LLM_TENSOR_CONVNEXT_GAMMA,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},844    {LLM_TENSOR_SHORTCONV_CONV,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_SSM_CONV}},845    {LLM_TENSOR_SHORTCONV_INPROJ,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},846    {LLM_TENSOR_SHORTCONV_OUTPROJ,          {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},847    {LLM_TENSOR_VISEXP_ATTN_QKV,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},848    {LLM_TENSOR_VISEXP_ATTN_OUT,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},849    {LLM_TENSOR_VISEXP_FFN_GATE,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},850    {LLM_TENSOR_VISEXP_FFN_DOWN,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},851    {LLM_TENSOR_VISEXP_FFN_UP,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},852    {LLM_TENSOR_INDEXER_K_NORM,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},853    {LLM_TENSOR_INDEXER_PROJ,               {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},854    {LLM_TENSOR_INDEXER_ATTN_K,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},855    {LLM_TENSOR_INDEXER_ATTN_Q_B,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},856    {LLM_TENSOR_INDEXER_Q_PROJ,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},857    {LLM_TENSOR_INDEXER_K_PROJ,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},858    {LLM_TENSOR_INDEXER_Q_NORM,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},859    {LLM_TENSOR_INDEXER_COMPRESSOR_WKV,     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},860    {LLM_TENSOR_INDEXER_COMPRESSOR_WGATE,   {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},861    {LLM_TENSOR_INDEXER_COMPRESSOR_APE,     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},862    {LLM_TENSOR_INDEXER_COMPRESSOR_NORM,    {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},863    {LLM_TENSOR_FFN_GATE_TID2EID,           {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},864    {LLM_TENSOR_NEXTN_PROJ_PRE,             {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},865    {LLM_TENSOR_NEXTN_PROJ_POST,            {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},866    // NextN/MTP tensors are stored per-block (blk.%d.nextn.*) even though only the867    // last nextn_predict_layers blocks carry them. Classify as LAYER_REPEATING so868    // the model loader doesn't fault on the block index.869    {LLM_TENSOR_NEXTN_EH_PROJ,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},870    {LLM_TENSOR_NEXTN_EMBED_TOKENS,         {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},871    {LLM_TENSOR_NEXTN_ENORM,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},872    {LLM_TENSOR_NEXTN_HNORM,                {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},873    {LLM_TENSOR_NEXTN_SHARED_HEAD_HEAD,     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},874    {LLM_TENSOR_NEXTN_SHARED_HEAD_NORM,     {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},875    // Nemotron 3 Super876    // latent projections feed ggml_mul_mat, the buft probe must use MUL_MAT to keep them on GPU877    {LLM_TENSOR_FFN_LATENT_DOWN,            {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},878    {LLM_TENSOR_FFN_LATENT_UP,              {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},879    {LLM_TENSOR_MASKED_EMBD_CENTROIDS,      {LLM_TENSOR_LAYER_INPUT,     GGML_OP_NONE}},880    {LLM_TENSOR_MASKED_EMBD_ORDERING,       {LLM_TENSOR_LAYER_INPUT,     GGML_OP_NONE}},881    // eagle3882    {LLM_TENSOR_FC,                         {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},883    {LLM_TENSOR_D2T,                        {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_GET_ROWS}},884    // dspark885    {LLM_TENSOR_DSPARK_MARKOV_W1,           {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_GET_ROWS}},886    {LLM_TENSOR_DSPARK_MARKOV_W2,           {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},887    {LLM_TENSOR_DSPARK_CONF_PROJ,           {LLM_TENSOR_LAYER_OUTPUT,    GGML_OP_MUL_MAT}},888};889 890LLM_KV::LLM_KV(llm_arch arch, const char * suffix) : arch(arch), suffix(suffix) {}891 892std::string LLM_KV::operator()(llm_kv kv) const {893    std::string name = ::format(LLM_KV_NAMES.at(kv), LLM_ARCH_NAMES.at(arch));894 895    if (suffix != nullptr) {896        name += ".";897        name += suffix;898    }899 900    return name;901}902 903LLM_TN_IMPL::LLM_TN_IMPL(llm_arch arch, llm_tensor tensor, const char * suffix, int bid, int xid)904    : arch(arch), tensor(tensor), suffix(suffix), bid(bid), xid(xid) {}905 906std::string LLM_TN_IMPL::str() const {907    if (LLM_TENSOR_NAMES.find(tensor) == LLM_TENSOR_NAMES.end()) {908        GGML_ABORT("unknown tensor name for tensor id %d", static_cast<int>(tensor));909    }910 911    std::string name = ::format(LLM_TENSOR_NAMES.at(tensor), bid, xid);912    if (suffix != nullptr) {913        name += ".";914        name += suffix;915    }916 917    return name;918}919 920std::vector<llm_arch> llm_arch_all() {921    std::vector<llm_arch> ret;922    ret.reserve(LLM_ARCH_NAMES.size());923    for (const auto & [arch, _] : LLM_ARCH_NAMES) {924        ret.push_back(arch);925    }926    return ret;927}928 929const char * llm_arch_name(llm_arch arch) {930    auto it = LLM_ARCH_NAMES.find(arch);931    if (it == LLM_ARCH_NAMES.end()) {932        return "unknown";933    }934    return it->second;935}936 937llm_arch llm_arch_from_string(const std::string & name) {938    for (const auto & kv : LLM_ARCH_NAMES) { // NOLINT939        if (kv.second == name) {940            return kv.first;941        }942    }943 944    return LLM_ARCH_UNKNOWN;945}946 947const llm_tensor_info & llm_tensor_info_for(llm_tensor tensor) {948    return LLM_TENSOR_INFOS.at(tensor);949}950 951bool llm_arch_is_recurrent(const llm_arch & arch) {952    switch (arch) {953        case LLM_ARCH_MAMBA:954        case LLM_ARCH_MAMBA2:955        case LLM_ARCH_RWKV6:956        case LLM_ARCH_RWKV6QWEN2:957        case LLM_ARCH_RWKV7:958        case LLM_ARCH_ARWKV7:959            return true;960        default:961            return false;962    }963}964 965bool llm_arch_is_hybrid(const llm_arch & arch) {966    switch (arch) {967        case LLM_ARCH_JAMBA:968        case LLM_ARCH_FALCON_H1:969        case LLM_ARCH_PLAMO2:970        case LLM_ARCH_GRANITE_HYBRID:971        case LLM_ARCH_LFM2:972        case LLM_ARCH_LFM2MOE:973        case LLM_ARCH_NEMOTRON_H:974        case LLM_ARCH_NEMOTRON_H_MOE:975        case LLM_ARCH_QWEN3NEXT:976        case LLM_ARCH_KIMI_LINEAR:977        case LLM_ARCH_QWEN35:978        case LLM_ARCH_QWEN35MOE:979        case LLM_ARCH_DEEPSEEK4:980            return true;981        default:982            return false;983    }984}985 986bool llm_arch_is_diffusion(const llm_arch & arch) {987    switch (arch) {988        case LLM_ARCH_DREAM:989        case LLM_ARCH_LLADA:990        case LLM_ARCH_LLADA_MOE:991        case LLM_ARCH_RND1:992            return true;993        default:994            return false;995    }996}997 998bool llm_arch_supports_rs_rollback(const llm_arch & arch) {999    switch (arch) {1000        case LLM_ARCH_QWEN35:1001        case LLM_ARCH_QWEN35MOE:1002        case LLM_ARCH_DEEPSEEK4:1003            return true;1004        default:1005            return false;1006    }1007}1008 1009bool llm_arch_supports_sm_tensor(const llm_arch & arch) {1010    switch (arch) {1011        case LLM_ARCH_GROK:1012        case LLM_ARCH_MPT:1013        case LLM_ARCH_PLAMO2:1014        case LLM_ARCH_MINICPM3:1015        case LLM_ARCH_GEMMA3N:1016        case LLM_ARCH_MAMBA:1017        case LLM_ARCH_MAMBA2:1018        case LLM_ARCH_JAMBA:1019        case LLM_ARCH_FALCON_H1:1020        case LLM_ARCH_OLMO2:1021        case LLM_ARCH_OLMOE:1022        case LLM_ARCH_DEEPSEEK2:1023        case LLM_ARCH_DEEPSEEK32:1024        case LLM_ARCH_DEEPSEEK4:1025        case LLM_ARCH_GLM_DSA:1026        case LLM_ARCH_BITNET:1027        case LLM_ARCH_T5:1028        case LLM_ARCH_NEMOTRON_H:1029        case LLM_ARCH_NEMOTRON_H_MOE:1030        case LLM_ARCH_GRANITE_HYBRID:1031        case LLM_ARCH_LFM2:1032        case LLM_ARCH_LFM2MOE:1033        case LLM_ARCH_MINIMAX_M2:1034        case LLM_ARCH_MINIMAX_M3:1035        case LLM_ARCH_MISTRAL4:1036        case LLM_ARCH_KIMI_LINEAR:1037        case LLM_ARCH_QWEN3TTS:1038            return false;1039        default:1040            return true;1041    }1042}1043 
Brunobkr/llama.cpp_AlgMor24_github · Team Ai