From dc81d79cb6f3ee11bf35a654a60ece4d31c8fb35 Mon Sep 17 00:00:00 2001 From: Kawrakow Date: Wed, 17 Jun 2026 16:18:32 +0000 Subject: [PATCH] Provide API to gtet the model arch string --- common/speculative.cpp | 10 ++-------- include/llama.h | 2 ++ src/llama-arch.cpp | 10 ++++++++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/common/speculative.cpp b/common/speculative.cpp index a5307e85..9b956c10 100644 --- a/common/speculative.cpp +++ b/common/speculative.cpp @@ -2565,14 +2565,8 @@ static bool mtp_model_uses_recurrent_conditioning(const common_speculative_state return false; } - char arch[64] = {}; - const int32_t arch_len = llama_model_meta_val_str(model, "general.architecture", arch, sizeof(arch)); - if (arch_len <= 0) { - return false; - } - - const std::string arch_str(arch, std::min((size_t) arch_len, sizeof(arch) - 1)); - return arch_str == "qwen35" || arch_str == "qwen35moe"; + std::string arch{llama_model_arch_string(model)}; + return arch == "qwen35" || arch == "qwen35moe"; } static void mtp_clear_target_hidden(common_speculative_state_mtp & state, llama_seq_id seq_id) { diff --git a/include/llama.h b/include/llama.h index 754a0643..1eb40b14 100644 --- a/include/llama.h +++ b/include/llama.h @@ -698,6 +698,8 @@ extern "C" { LLAMA_API bool llama_model_is_split_mode_graph(const struct llama_model * model); + LLAMA_API const char * llama_model_arch_string(const struct llama_model * model); + // Returns 0 on success LLAMA_API uint32_t llama_model_quantize( const char * fname_inp, diff --git a/src/llama-arch.cpp b/src/llama-arch.cpp index 77226d3f..8fa207ce 100644 --- a/src/llama-arch.cpp +++ b/src/llama-arch.cpp @@ -1,5 +1,6 @@ #include "llama-arch.h" #include "llama-impl.h" +#include "llama-model.h" #include @@ -101,6 +102,15 @@ llm_arch llm_arch_from_string(const std::string & name) { return LLM_ARCH_UNKNOWN; } +const char * llama_model_arch_string(const struct llama_model * model) { + static const char * unknown = "unknown"; + if (!model) return unknown; + if (auto it = LLM_ARCH_NAMES.find(model->arch); it != LLM_ARCH_NAMES.end()) { + return it->second; + } + return unknown; +} + static const std::map LLM_KV_NAMES = { { LLM_KV_GENERAL_TYPE, "general.type" }, { LLM_KV_GENERAL_ARCHITECTURE, "general.architecture" },