From 86c298fb8ac1ee9da24e3c4d68b71b1247dc151a Mon Sep 17 00:00:00 2001 From: Pedro Cuenca Date: Mon, 10 Aug 2026 11:58:32 +0200 Subject: [PATCH] llama: Restore quantization of mmprojs (#26818) * Restore quantization of mmprojs This was lost in the refactor undertaken in #22004. * add noreturn --------- Co-authored-by: Xuan Son Nguyen --- src/llama-model.cpp | 2 ++ src/models/clip.cpp | 18 ++++++++++++++++++ src/models/models.h | 16 ++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 src/models/clip.cpp diff --git a/src/llama-model.cpp b/src/llama-model.cpp index 9316636d66..2e60c131d4 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -40,6 +40,8 @@ static llama_model * llama_model_mapping(llm_arch arch, const llama_model_params & params) { switch (arch) { + case LLM_ARCH_CLIP: + return new llama_model_clip(params); case LLM_ARCH_LLAMA: return new llama_model_llama(params); case LLM_ARCH_LLAMA4: diff --git a/src/models/clip.cpp b/src/models/clip.cpp new file mode 100644 index 0000000000..537766aeb1 --- /dev/null +++ b/src/models/clip.cpp @@ -0,0 +1,18 @@ +#include "models.h" + +// Stub to allow llama-quantize to open mmproj GGUFs + +[[noreturn]] +void llama_model_clip::load_arch_hparams(llama_model_loader &) { + GGML_ABORT("CLIP is a quant-only stub; load_arch_hparams should not be called"); +} + +[[noreturn]] +void llama_model_clip::load_arch_tensors(llama_model_loader &) { + GGML_ABORT("CLIP is a quant-only stub; load_arch_tensors should not be called"); +} + +[[noreturn]] +std::unique_ptr llama_model_clip::build_arch_graph(const llm_graph_params &) const { + GGML_ABORT("CLIP has no inference graph via llama_model dispatch; runtime lives in tools/mtmd/clip.cpp"); +} diff --git a/src/models/models.h b/src/models/models.h index 12412ef534..7c813be6e6 100644 --- a/src/models/models.h +++ b/src/models/models.h @@ -386,6 +386,22 @@ struct llama_model_bloom : public llama_model_base { }; +// Quant-only stub for mmproj GGUFs +// none of these are ever called, they only exist to satisfy the llama_model_base interface +struct llama_model_clip : public llama_model_base { + llama_model_clip(const struct llama_model_params & params) : llama_model_base(params) {} + + [[noreturn]] + void load_arch_hparams(llama_model_loader & ml) override; + + [[noreturn]] + void load_arch_tensors(llama_model_loader & ml) override; + + [[noreturn]] + std::unique_ptr build_arch_graph(const llm_graph_params & params) const override; +}; + + struct llama_model_mpt : public llama_model_base { llama_model_mpt(const struct llama_model_params & params) : llama_model_base(params) {} void load_arch_hparams(llama_model_loader & ml) override;