@@ -83,6 +83,7 @@ static const std::map<llm_arch, const char *> LLM_ARCH_NAMES = {
8383 { LLM_ARCH_ERNIE4_5, " ernie4_5" },
8484 { LLM_ARCH_HUNYUAN_MOE, " hunyuan-moe" },
8585 { LLM_ARCH_SMOLLM3, " smollm3" },
86+ { LLM_ARCH_LFM2, " lfm2" },
8687 { LLM_ARCH_UNKNOWN, " (unknown)" },
8788};
8889
@@ -188,6 +189,8 @@ static const std::map<llm_kv, const char *> LLM_KV_NAMES = {
188189
189190 { LLM_KV_CLASSIFIER_OUTPUT_LABELS, " %s.classifier.output_labels" },
190191
192+ { LLM_KV_SHORTCONV_L_CACHE, " %s.shortconv.l_cache" },
193+
191194 { LLM_KV_TOKENIZER_MODEL, " tokenizer.ggml.model" },
192195 { LLM_KV_TOKENIZER_PRE, " tokenizer.ggml.pre" },
193196 { LLM_KV_TOKENIZER_LIST, " tokenizer.ggml.tokens" },
@@ -1830,6 +1833,27 @@ static const std::map<llm_arch, std::map<llm_tensor, const char *>> LLM_TENSOR_N
18301833 { LLM_TENSOR_FFN_UP, " blk.%d.ffn_up" },
18311834 },
18321835 },
1836+ {
1837+ LLM_ARCH_LFM2,
1838+ {
1839+ { LLM_TENSOR_ATTN_NORM, " blk.%d.attn_norm" },
1840+ { LLM_TENSOR_ATTN_Q, " blk.%d.attn_q" },
1841+ { LLM_TENSOR_ATTN_K, " blk.%d.attn_k" },
1842+ { LLM_TENSOR_ATTN_V, " blk.%d.attn_v" },
1843+ { LLM_TENSOR_ATTN_OUT, " blk.%d.attn_output" },
1844+ { LLM_TENSOR_ATTN_K_NORM, " blk.%d.attn_k_norm" },
1845+ { LLM_TENSOR_ATTN_Q_NORM, " blk.%d.attn_q_norm" },
1846+ { LLM_TENSOR_FFN_DOWN, " blk.%d.ffn_down" },
1847+ { LLM_TENSOR_FFN_GATE, " blk.%d.ffn_gate" },
1848+ { LLM_TENSOR_FFN_NORM, " blk.%d.ffn_norm" },
1849+ { LLM_TENSOR_FFN_UP, " blk.%d.ffn_up" },
1850+ { LLM_TENSOR_SHORTCONV_CONV, " blk.%d.shortconv.conv" },
1851+ { LLM_TENSOR_SHORTCONV_INPROJ, " blk.%d.shortconv.in_proj" },
1852+ { LLM_TENSOR_SHORTCONV_OUTPROJ, " blk.%d.shortconv.out_proj" },
1853+ { LLM_TENSOR_TOKEN_EMBD, " token_embd" },
1854+ { LLM_TENSOR_TOKEN_EMBD_NORM, " token_embd_norm" },
1855+ }
1856+ },
18331857 {
18341858 LLM_ARCH_UNKNOWN,
18351859 {
@@ -1997,6 +2021,9 @@ static const std::map<llm_tensor, llm_tensor_info> LLM_TENSOR_INFOS = {
19972021 {LLM_TENSOR_CONVNEXT_PW1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
19982022 {LLM_TENSOR_CONVNEXT_PW2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
19992023 {LLM_TENSOR_CONVNEXT_GAMMA, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
2024+ {LLM_TENSOR_SHORTCONV_CONV, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_SSM_CONV}},
2025+ {LLM_TENSOR_SHORTCONV_INPROJ, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
2026+ {LLM_TENSOR_SHORTCONV_OUTPROJ, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
20002027};
20012028
20022029LLM_KV::LLM_KV (llm_arch arch, const char * suffix) : arch(arch), suffix(suffix) {}
@@ -2068,6 +2095,7 @@ bool llm_arch_is_hybrid(const llm_arch & arch) {
20682095 case LLM_ARCH_JAMBA:
20692096 case LLM_ARCH_FALCON_H1:
20702097 case LLM_ARCH_GRANITE_HYBRID:
2098+ case LLM_ARCH_LFM2:
20712099 return true ;
20722100 default :
20732101 return false ;
0 commit comments