From 27b87b6361a9f1b1d28e8652fd8bfdc7dbd29de7 Mon Sep 17 00:00:00 2001 From: Aaron Teo Date: Wed, 9 Sep 2026 18:21:51 +0800 Subject: [PATCH 1/3] model: fix all granite family parameter counts Signed-off-by: Aaron Teo --- src/llama-model.cpp | 2 ++ src/llama-model.h | 2 ++ src/models/granite-hybrid.cpp | 3 ++- src/models/granite-moe.cpp | 2 +- src/models/granite.cpp | 12 +++++++++++- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/llama-model.cpp b/src/llama-model.cpp index 54009b3696a5..fc085fc4a3eb 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -936,6 +936,7 @@ const char * llm_type_name(llm_type type) { case LLM_TYPE_17B_128E: return "17Bx128E (Maverick)"; case LLM_TYPE_A13B: return "A13B"; case LLM_TYPE_1B_A400M: return "1B.A400M"; + case LLM_TYPE_3B_A800M: return "3B.A800M"; case LLM_TYPE_7B_A1B: return "7B.A1B"; case LLM_TYPE_8B_A1B: return "8B.A1B"; case LLM_TYPE_7_9B_A1_3B: return "7.9B.A1.3B"; @@ -946,6 +947,7 @@ const char * llm_type_name(llm_type type) { case LLM_TYPE_26B_A4B: return "26B.A4B"; case LLM_TYPE_30B_A3B: return "30B.A3B"; case LLM_TYPE_31B_A3_5B: return "31B.A3.5B"; + case LLM_TYPE_32B_9B: return "32B.A9B"; case LLM_TYPE_35B_A3B: return "35B.A3B"; case LLM_TYPE_48B_A3B: return "48B.A3B"; case LLM_TYPE_75B_A9B: return "75B.A9B"; diff --git a/src/llama-model.h b/src/llama-model.h index c0cc4065567a..36845c95fd1c 100644 --- a/src/llama-model.h +++ b/src/llama-model.h @@ -117,6 +117,7 @@ enum llm_type { LLM_TYPE_17B_128E, // llama4 Maverick LLM_TYPE_A13B, LLM_TYPE_1B_A400M, // Granite3 MoE + LLM_TYPE_3B_A800M, // Granite3 MoE LLM_TYPE_7B_A1B, LLM_TYPE_8B_A1B, // lfm2moe LLM_TYPE_7_9B_A1_3B, // Ling-3.0-tiny @@ -127,6 +128,7 @@ enum llm_type { LLM_TYPE_26B_A4B, // Gemma4 LLM_TYPE_30B_A3B, LLM_TYPE_31B_A3_5B, + LLM_TYPE_32B_9B, // Granite4 Hybrid LLM_TYPE_35B_A3B, // Qwen3.5 LLM_TYPE_48B_A3B, // Kimi Linear LLM_TYPE_75B_A9B, // Nemotron 3 Puzzle diff --git a/src/models/granite-hybrid.cpp b/src/models/granite-hybrid.cpp index 8a8f7e19ff08..78a47f7f0cef 100644 --- a/src/models/granite-hybrid.cpp +++ b/src/models/granite-hybrid.cpp @@ -1,3 +1,4 @@ +#include "llama-model.h" #include "models.h" void llama_model_granite_hybrid::load_arch_hparams(llama_model_loader & ml) { @@ -30,7 +31,7 @@ void llama_model_granite_hybrid::load_arch_hparams(llama_model_loader & ml) { case 768: type = LLM_TYPE_350M; break; case 1536: type = (hparams.n_ff() == 512 ? LLM_TYPE_7B_A1B : LLM_TYPE_1B); break; case 2048: case 2560: type = LLM_TYPE_3B; break; - case 4096: type = LLM_TYPE_32B; break; + case 4096: type = LLM_TYPE_32B_9B; break; default: type = LLM_TYPE_UNKNOWN; } diff --git a/src/models/granite-moe.cpp b/src/models/granite-moe.cpp index 156553edfd04..2067bd78f488 100644 --- a/src/models/granite-moe.cpp +++ b/src/models/granite-moe.cpp @@ -9,7 +9,7 @@ void llama_model_granite_moe::load_arch_hparams(llama_model_loader & ml) { switch (hparams.n_layer()) { case 24: type = LLM_TYPE_1B_A400M; break; - case 32: type = LLM_TYPE_3B; break; + case 32: type = LLM_TYPE_3B_A800M; break; case 40: type = LLM_TYPE_3B; break; // Add additional layer/vocab/etc checks here for other model sizes default: type = LLM_TYPE_UNKNOWN; diff --git a/src/models/granite.cpp b/src/models/granite.cpp index 9e9f97e94dca..a22c3e63f745 100644 --- a/src/models/granite.cpp +++ b/src/models/granite.cpp @@ -1,3 +1,4 @@ +#include "llama-model.h" #include "models.h" #include @@ -38,7 +39,16 @@ void llama_model_granite::load_arch_hparams(llama_model_loader & ml) { switch (hparams.n_layer()) { case 32: type = LLM_TYPE_3B; break; - case 40: type = LLM_TYPE_3B; break; + case 40: { + switch (hparams.n_embd) { + case 2048: type = LLM_TYPE_2B; break; + case 2560: type = LLM_TYPE_3B; break; + case 4096: type = LLM_TYPE_8B; break; + default: type = LLM_TYPE_UNKNOWN; break; + } + break; + } + case 64: type = LLM_TYPE_30B; break; // Add additional layer/vocab/etc checks here for other model sizes default: type = LLM_TYPE_UNKNOWN; } From 58592dd6bbadfe17980a4bb74b070b93da8434e9 Mon Sep 17 00:00:00 2001 From: Aaron Teo Date: Wed, 9 Sep 2026 18:29:57 +0800 Subject: [PATCH 2/3] model: fix additional include, add missing `A` prefix for active experts Signed-off-by: Aaron Teo --- src/llama-model.cpp | 2 +- src/llama-model.h | 2 +- src/models/granite-hybrid.cpp | 3 +-- src/models/granite.cpp | 1 - 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/llama-model.cpp b/src/llama-model.cpp index fc085fc4a3eb..d007a1020d3d 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -947,7 +947,7 @@ const char * llm_type_name(llm_type type) { case LLM_TYPE_26B_A4B: return "26B.A4B"; case LLM_TYPE_30B_A3B: return "30B.A3B"; case LLM_TYPE_31B_A3_5B: return "31B.A3.5B"; - case LLM_TYPE_32B_9B: return "32B.A9B"; + case LLM_TYPE_32B_A9B: return "32B.A9B"; case LLM_TYPE_35B_A3B: return "35B.A3B"; case LLM_TYPE_48B_A3B: return "48B.A3B"; case LLM_TYPE_75B_A9B: return "75B.A9B"; diff --git a/src/llama-model.h b/src/llama-model.h index 36845c95fd1c..c2cd10776a4c 100644 --- a/src/llama-model.h +++ b/src/llama-model.h @@ -128,7 +128,7 @@ enum llm_type { LLM_TYPE_26B_A4B, // Gemma4 LLM_TYPE_30B_A3B, LLM_TYPE_31B_A3_5B, - LLM_TYPE_32B_9B, // Granite4 Hybrid + LLM_TYPE_32B_A9B, // Granite4 Hybrid LLM_TYPE_35B_A3B, // Qwen3.5 LLM_TYPE_48B_A3B, // Kimi Linear LLM_TYPE_75B_A9B, // Nemotron 3 Puzzle diff --git a/src/models/granite-hybrid.cpp b/src/models/granite-hybrid.cpp index 78a47f7f0cef..c177ae78756e 100644 --- a/src/models/granite-hybrid.cpp +++ b/src/models/granite-hybrid.cpp @@ -1,4 +1,3 @@ -#include "llama-model.h" #include "models.h" void llama_model_granite_hybrid::load_arch_hparams(llama_model_loader & ml) { @@ -31,7 +30,7 @@ void llama_model_granite_hybrid::load_arch_hparams(llama_model_loader & ml) { case 768: type = LLM_TYPE_350M; break; case 1536: type = (hparams.n_ff() == 512 ? LLM_TYPE_7B_A1B : LLM_TYPE_1B); break; case 2048: case 2560: type = LLM_TYPE_3B; break; - case 4096: type = LLM_TYPE_32B_9B; break; + case 4096: type = LLM_TYPE_32B_A9B; break; default: type = LLM_TYPE_UNKNOWN; } diff --git a/src/models/granite.cpp b/src/models/granite.cpp index a22c3e63f745..4cebf0185db3 100644 --- a/src/models/granite.cpp +++ b/src/models/granite.cpp @@ -1,4 +1,3 @@ -#include "llama-model.h" #include "models.h" #include From 1c8101c6839343790a4d586612b21a2181e13187 Mon Sep 17 00:00:00 2001 From: Aaron Teo Date: Wed, 9 Sep 2026 22:22:51 +0800 Subject: [PATCH 3/3] model: fix code alignment, rm unused 40 block case Signed-off-by: Aaron Teo --- src/llama-model.cpp | 2 +- src/llama-model.h | 2 +- src/models/granite-moe.cpp | 1 - src/models/granite.cpp | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/llama-model.cpp b/src/llama-model.cpp index d007a1020d3d..d10b60afd9fd 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -947,7 +947,7 @@ const char * llm_type_name(llm_type type) { case LLM_TYPE_26B_A4B: return "26B.A4B"; case LLM_TYPE_30B_A3B: return "30B.A3B"; case LLM_TYPE_31B_A3_5B: return "31B.A3.5B"; - case LLM_TYPE_32B_A9B: return "32B.A9B"; + case LLM_TYPE_32B_A9B: return "32B.A9B"; case LLM_TYPE_35B_A3B: return "35B.A3B"; case LLM_TYPE_48B_A3B: return "48B.A3B"; case LLM_TYPE_75B_A9B: return "75B.A9B"; diff --git a/src/llama-model.h b/src/llama-model.h index c2cd10776a4c..a02b30ca7ada 100644 --- a/src/llama-model.h +++ b/src/llama-model.h @@ -128,7 +128,7 @@ enum llm_type { LLM_TYPE_26B_A4B, // Gemma4 LLM_TYPE_30B_A3B, LLM_TYPE_31B_A3_5B, - LLM_TYPE_32B_A9B, // Granite4 Hybrid + LLM_TYPE_32B_A9B, // Granite4 Hybrid LLM_TYPE_35B_A3B, // Qwen3.5 LLM_TYPE_48B_A3B, // Kimi Linear LLM_TYPE_75B_A9B, // Nemotron 3 Puzzle diff --git a/src/models/granite-moe.cpp b/src/models/granite-moe.cpp index 2067bd78f488..febe1bfa7aa4 100644 --- a/src/models/granite-moe.cpp +++ b/src/models/granite-moe.cpp @@ -10,7 +10,6 @@ void llama_model_granite_moe::load_arch_hparams(llama_model_loader & ml) { switch (hparams.n_layer()) { case 24: type = LLM_TYPE_1B_A400M; break; case 32: type = LLM_TYPE_3B_A800M; break; - case 40: type = LLM_TYPE_3B; break; // Add additional layer/vocab/etc checks here for other model sizes default: type = LLM_TYPE_UNKNOWN; } diff --git a/src/models/granite.cpp b/src/models/granite.cpp index 4cebf0185db3..60d463aedab0 100644 --- a/src/models/granite.cpp +++ b/src/models/granite.cpp @@ -43,7 +43,7 @@ void llama_model_granite::load_arch_hparams(llama_model_loader & ml) { case 2048: type = LLM_TYPE_2B; break; case 2560: type = LLM_TYPE_3B; break; case 4096: type = LLM_TYPE_8B; break; - default: type = LLM_TYPE_UNKNOWN; break; + default: type = LLM_TYPE_UNKNOWN; } break; }