@@ -83,6 +83,7 @@ static const std::map<llm_arch, const char *> LLM_ARCH_NAMES = {
83
83
{ LLM_ARCH_ERNIE4_5, " ernie4_5" },
84
84
{ LLM_ARCH_HUNYUAN_MOE, " hunyuan-moe" },
85
85
{ LLM_ARCH_SMOLLM3, " smollm3" },
86
+ { LLM_ARCH_LFM2, " lfm2" },
86
87
{ LLM_ARCH_UNKNOWN, " (unknown)" },
87
88
};
88
89
@@ -188,6 +189,8 @@ static const std::map<llm_kv, const char *> LLM_KV_NAMES = {
188
189
189
190
{ LLM_KV_CLASSIFIER_OUTPUT_LABELS, " %s.classifier.output_labels" },
190
191
192
+ { LLM_KV_SHORTCONV_L_CACHE, " %s.shortconv.l_cache" },
193
+
191
194
{ LLM_KV_TOKENIZER_MODEL, " tokenizer.ggml.model" },
192
195
{ LLM_KV_TOKENIZER_PRE, " tokenizer.ggml.pre" },
193
196
{ 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
1830
1833
{ LLM_TENSOR_FFN_UP, " blk.%d.ffn_up" },
1831
1834
},
1832
1835
},
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
+ },
1833
1857
{
1834
1858
LLM_ARCH_UNKNOWN,
1835
1859
{
@@ -1997,6 +2021,9 @@ static const std::map<llm_tensor, llm_tensor_info> LLM_TENSOR_INFOS = {
1997
2021
{LLM_TENSOR_CONVNEXT_PW1, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1998
2022
{LLM_TENSOR_CONVNEXT_PW2, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
1999
2023
{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}},
2000
2027
};
2001
2028
2002
2029
LLM_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) {
2068
2095
case LLM_ARCH_JAMBA:
2069
2096
case LLM_ARCH_FALCON_H1:
2070
2097
case LLM_ARCH_GRANITE_HYBRID:
2098
+ case LLM_ARCH_LFM2:
2071
2099
return true ;
2072
2100
default :
2073
2101
return false ;
0 commit comments