@@ -93,12 +93,14 @@ static const std::map<llm_arch, const char *> LLM_ARCH_NAMES = {
9393 { LLM_ARCH_SMOLLM3, " smollm3" },
9494 { LLM_ARCH_OPENAI_MOE, " gpt-oss" },
9595 { LLM_ARCH_LFM2, " lfm2" },
96+ { LLM_ARCH_LFM2MOE, " lfm2moe" },
9697 { LLM_ARCH_DREAM, " dream" },
9798 { LLM_ARCH_SMALLTHINKER, " smallthinker" },
9899 { LLM_ARCH_LLADA, " llada" },
99100 { LLM_ARCH_LLADA_MOE, " llada-moe" },
100101 { LLM_ARCH_SEED_OSS, " seed_oss" },
101102 { LLM_ARCH_GROVEMOE, " grovemoe" },
103+ { LLM_ARCH_APERTUS, " apertus" },
102104 { LLM_ARCH_UNKNOWN, " (unknown)" },
103105};
104106
@@ -217,6 +219,11 @@ static const std::map<llm_kv, const char *> LLM_KV_NAMES = {
217219 { LLM_KV_CLASSIFIER_OUTPUT_LABELS, " %s.classifier.output_labels" },
218220
219221 { LLM_KV_SHORTCONV_L_CACHE, " %s.shortconv.l_cache" },
222+ // sentence-transformers dense modules feature dims
223+ { LLM_KV_DENSE_2_FEAT_IN, " %s.dense_2_feat_in" },
224+ { LLM_KV_DENSE_2_FEAT_OUT, " %s.dense_2_feat_out" },
225+ { LLM_KV_DENSE_3_FEAT_IN, " %s.dense_3_feat_in" },
226+ { LLM_KV_DENSE_3_FEAT_OUT, " %s.dense_3_feat_out" },
220227
221228 { LLM_KV_TOKENIZER_MODEL, " tokenizer.ggml.model" },
222229 { LLM_KV_TOKENIZER_PRE, " tokenizer.ggml.pre" },
@@ -256,6 +263,11 @@ static const std::map<llm_kv, const char *> LLM_KV_NAMES = {
256263 { LLM_KV_ADAPTER_LORA_PROMPT_PREFIX, " adapter.lora.prompt_prefix" },
257264 { LLM_KV_ADAPTER_ALORA_INVOCATION_TOKENS, " adapter.alora.invocation_tokens" },
258265
266+ { LLM_KV_XIELU_ALPHA_N, " xielu.alpha_n" },
267+ { LLM_KV_XIELU_ALPHA_P, " xielu.alpha_p" },
268+ { LLM_KV_XIELU_BETA, " xielu.beta" },
269+ { LLM_KV_XIELU_EPS, " xielu.eps" },
270+
259271 // deprecated
260272 { LLM_KV_TOKENIZER_PREFIX_ID, " tokenizer.ggml.prefix_token_id" },
261273 { LLM_KV_TOKENIZER_SUFFIX_ID, " tokenizer.ggml.suffix_token_id" },
@@ -1064,6 +1076,8 @@ static const std::map<llm_arch, std::map<llm_tensor, const char *>> LLM_TENSOR_N
10641076 { LLM_TENSOR_TOKEN_EMBD, " token_embd" },
10651077 { LLM_TENSOR_OUTPUT_NORM, " output_norm" },
10661078 { LLM_TENSOR_OUTPUT, " output" },
1079+ { LLM_TENSOR_DENSE_2_OUT, " dense_2" },
1080+ { LLM_TENSOR_DENSE_3_OUT, " dense_3" },
10671081 { LLM_TENSOR_ATTN_NORM, " blk.%d.attn_norm" },
10681082 { LLM_TENSOR_ATTN_Q, " blk.%d.attn_q" },
10691083 { LLM_TENSOR_ATTN_Q_NORM, " blk.%d.attn_q_norm" },
@@ -2098,6 +2112,32 @@ static const std::map<llm_arch, std::map<llm_tensor, const char *>> LLM_TENSOR_N
20982112 { LLM_TENSOR_OUTPUT, " output" },
20992113 }
21002114 },
2115+ {
2116+ LLM_ARCH_LFM2MOE,
2117+ {
2118+ { LLM_TENSOR_ATTN_NORM, " blk.%d.attn_norm" },
2119+ { LLM_TENSOR_ATTN_Q, " blk.%d.attn_q" },
2120+ { LLM_TENSOR_ATTN_K, " blk.%d.attn_k" },
2121+ { LLM_TENSOR_ATTN_V, " blk.%d.attn_v" },
2122+ { LLM_TENSOR_ATTN_OUT, " blk.%d.attn_output" },
2123+ { LLM_TENSOR_ATTN_K_NORM, " blk.%d.attn_k_norm" },
2124+ { LLM_TENSOR_ATTN_Q_NORM, " blk.%d.attn_q_norm" },
2125+ { LLM_TENSOR_FFN_DOWN, " blk.%d.ffn_down" },
2126+ { LLM_TENSOR_FFN_GATE, " blk.%d.ffn_gate" },
2127+ { LLM_TENSOR_FFN_NORM, " blk.%d.ffn_norm" },
2128+ { LLM_TENSOR_FFN_UP, " blk.%d.ffn_up" },
2129+ { LLM_TENSOR_SHORTCONV_CONV, " blk.%d.shortconv.conv" },
2130+ { LLM_TENSOR_SHORTCONV_INPROJ, " blk.%d.shortconv.in_proj" },
2131+ { LLM_TENSOR_SHORTCONV_OUTPROJ, " blk.%d.shortconv.out_proj" },
2132+ { LLM_TENSOR_TOKEN_EMBD, " token_embd" },
2133+ { LLM_TENSOR_TOKEN_EMBD_NORM, " token_embd_norm" },
2134+ { LLM_TENSOR_FFN_GATE_INP, " blk.%d.ffn_gate_inp" },
2135+ { LLM_TENSOR_FFN_GATE_EXPS, " blk.%d.ffn_gate_exps" },
2136+ { LLM_TENSOR_FFN_DOWN_EXPS, " blk.%d.ffn_down_exps" },
2137+ { LLM_TENSOR_FFN_UP_EXPS, " blk.%d.ffn_up_exps" },
2138+ { LLM_TENSOR_FFN_EXP_PROBS_B, " blk.%d.exp_probs_b" },
2139+ }
2140+ },
21012141 {
21022142 LLM_ARCH_SMALLTHINKER,
21032143 {
@@ -2119,6 +2159,25 @@ static const std::map<llm_arch, std::map<llm_tensor, const char *>> LLM_TENSOR_N
21192159 { LLM_TENSOR_FFN_UP_EXPS, " blk.%d.ffn_up_exps" }
21202160 },
21212161 },
2162+ {
2163+ LLM_ARCH_APERTUS,
2164+ {
2165+ { LLM_TENSOR_TOKEN_EMBD, " token_embd" },
2166+ { LLM_TENSOR_OUTPUT_NORM, " output_norm" },
2167+ { LLM_TENSOR_OUTPUT, " output" },
2168+ { LLM_TENSOR_ROPE_FREQS, " rope_freqs" },
2169+ { LLM_TENSOR_ATTN_NORM, " blk.%d.attn_norm" },
2170+ { LLM_TENSOR_ATTN_Q, " blk.%d.attn_q" },
2171+ { LLM_TENSOR_ATTN_K, " blk.%d.attn_k" },
2172+ { LLM_TENSOR_ATTN_V, " blk.%d.attn_v" },
2173+ { LLM_TENSOR_ATTN_OUT, " blk.%d.attn_output" },
2174+ { LLM_TENSOR_ATTN_Q_NORM, " blk.%d.attn_q_norm" },
2175+ { LLM_TENSOR_ATTN_K_NORM, " blk.%d.attn_k_norm" },
2176+ { LLM_TENSOR_FFN_NORM, " blk.%d.ffn_norm" },
2177+ { LLM_TENSOR_FFN_DOWN, " blk.%d.ffn_down" },
2178+ { LLM_TENSOR_FFN_UP, " blk.%d.ffn_up" },
2179+ },
2180+ },
21222181 {
21232182 LLM_ARCH_DREAM,
21242183 {
@@ -2229,6 +2288,8 @@ static const std::map<llm_tensor, llm_tensor_info> LLM_TENSOR_INFOS = {
22292288 {LLM_TENSOR_OUTPUT, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
22302289 {LLM_TENSOR_CLS, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
22312290 {LLM_TENSOR_CLS_OUT, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
2291+ {LLM_TENSOR_DENSE_2_OUT, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}}, // Dense layer output
2292+ {LLM_TENSOR_DENSE_3_OUT, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}}, // Dense layer output
22322293 {LLM_TENSOR_OUTPUT_NORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
22332294 {LLM_TENSOR_DEC_OUTPUT_NORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
22342295 {LLM_TENSOR_ENC_OUTPUT_NORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
@@ -2468,6 +2529,7 @@ bool llm_arch_is_hybrid(const llm_arch & arch) {
24682529 case LLM_ARCH_PLAMO2:
24692530 case LLM_ARCH_GRANITE_HYBRID:
24702531 case LLM_ARCH_LFM2:
2532+ case LLM_ARCH_LFM2MOE:
24712533 case LLM_ARCH_NEMOTRON_H:
24722534 return true ;
24732535 default :
0 commit comments