@@ -99,6 +99,7 @@ static const std::map<llm_arch, const char *> LLM_ARCH_NAMES = {
9999 { LLM_ARCH_LLADA, " llada" },
100100 { LLM_ARCH_LLADA_MOE, " llada-moe" },
101101 { LLM_ARCH_SEED_OSS, " seed_oss" },
102+ { LLM_ARCH_GROVEMOE, " grovemoe" },
102103 { LLM_ARCH_UNKNOWN, " (unknown)" },
103104};
104105
@@ -126,6 +127,7 @@ static const std::map<llm_kv, const char *> LLM_KV_NAMES = {
126127 { LLM_KV_FEED_FORWARD_LENGTH, " %s.feed_forward_length" },
127128 { LLM_KV_EXPERT_FEED_FORWARD_LENGTH, " %s.expert_feed_forward_length" },
128129 { LLM_KV_EXPERT_SHARED_FEED_FORWARD_LENGTH, " %s.expert_shared_feed_forward_length" },
130+ { LLM_KV_EXPERT_CHUNK_FEED_FORWARD_LENGTH, " %s.expert_chunk_feed_forward_length" },
129131 { LLM_KV_USE_PARALLEL_RESIDUAL, " %s.use_parallel_residual" },
130132 { LLM_KV_TENSOR_DATA_LAYOUT, " %s.tensor_data_layout" },
131133 { LLM_KV_EXPERT_COUNT, " %s.expert_count" },
@@ -134,6 +136,8 @@ static const std::map<llm_kv, const char *> LLM_KV_NAMES = {
134136 { LLM_KV_EXPERT_WEIGHTS_SCALE, " %s.expert_weights_scale" },
135137 { LLM_KV_EXPERT_WEIGHTS_NORM, " %s.expert_weights_norm" },
136138 { LLM_KV_EXPERT_GATING_FUNC, " %s.expert_gating_func" },
139+ { LLM_KV_EXPERT_GROUP_SCALE, " %s.expert_group_scale" },
140+ { LLM_KV_EXPERTS_PER_GROUP, " %s.experts_per_group" },
137141 { LLM_KV_MOE_EVERY_N_LAYERS, " %s.moe_every_n_layers" },
138142 { LLM_KV_NEXTN_PREDICT_LAYERS, " %s.nextn_predict_layers" },
139143 { LLM_KV_POOLING_TYPE, " %s.pooling_type" },
@@ -2219,6 +2223,29 @@ static const std::map<llm_arch, std::map<llm_tensor, const char *>> LLM_TENSOR_N
22192223 { LLM_TENSOR_FFN_UP, " blk.%d.ffn_up" },
22202224 },
22212225 },
2226+ {
2227+ LLM_ARCH_GROVEMOE,
2228+ {
2229+ { LLM_TENSOR_TOKEN_EMBD, " token_embd" },
2230+ { LLM_TENSOR_OUTPUT_NORM, " output_norm" },
2231+ { LLM_TENSOR_OUTPUT, " output" },
2232+ { LLM_TENSOR_ATTN_NORM, " blk.%d.attn_norm" },
2233+ { LLM_TENSOR_ATTN_Q, " blk.%d.attn_q" },
2234+ { LLM_TENSOR_ATTN_Q_NORM, " blk.%d.attn_q_norm" },
2235+ { LLM_TENSOR_ATTN_K, " blk.%d.attn_k" },
2236+ { LLM_TENSOR_ATTN_K_NORM, " blk.%d.attn_k_norm" },
2237+ { LLM_TENSOR_ATTN_V, " blk.%d.attn_v" },
2238+ { LLM_TENSOR_ATTN_OUT, " blk.%d.attn_output" },
2239+ { LLM_TENSOR_FFN_NORM, " blk.%d.ffn_norm" },
2240+ { LLM_TENSOR_FFN_GATE_INP, " blk.%d.ffn_gate_inp" },
2241+ { LLM_TENSOR_FFN_GATE_EXPS, " blk.%d.ffn_gate_exps" },
2242+ { LLM_TENSOR_FFN_DOWN_EXPS, " blk.%d.ffn_down_exps" },
2243+ { LLM_TENSOR_FFN_UP_EXPS, " blk.%d.ffn_up_exps" },
2244+ { LLM_TENSOR_FFN_GATE_CHEXPS, " blk.%d.ffn_gate_chexps" },
2245+ { LLM_TENSOR_FFN_DOWN_CHEXPS, " blk.%d.ffn_down_chexps" },
2246+ { LLM_TENSOR_FFN_UP_CHEXPS, " blk.%d.ffn_up_chexps" },
2247+ },
2248+ },
22222249 {
22232250 LLM_ARCH_UNKNOWN,
22242251 {
@@ -2352,6 +2379,9 @@ static const std::map<llm_tensor, llm_tensor_info> LLM_TENSOR_INFOS = {
23522379 {LLM_TENSOR_FFN_DOWN_EXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
23532380 {LLM_TENSOR_FFN_GATE_EXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
23542381 {LLM_TENSOR_FFN_UP_EXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
2382+ {LLM_TENSOR_FFN_DOWN_CHEXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
2383+ {LLM_TENSOR_FFN_GATE_CHEXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
2384+ {LLM_TENSOR_FFN_UP_CHEXPS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT_ID}},
23552385 {LLM_TENSOR_FFN_EXP_PROBS_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_ADD}},
23562386 // altup / laurel (gemma 3n)
23572387 {LLM_TENSOR_PER_LAYER_TOKEN_EMBD, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_GET_ROWS}},
0 commit comments