From 4293919068059bba716434264939f91cda25e70b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Gallou=C3=ABt?= Date: Thu, 9 Apr 2026 07:28:06 +0200 Subject: [PATCH] common : skip non-primary GGUF split files when selecting model (#21633) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We should not assume files are listed in order. Signed-off-by: Adrien Gallouët --- common/download.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/common/download.cpp b/common/download.cpp index 9d7995c9d2..055f0038f4 100644 --- a/common/download.cpp +++ b/common/download.cpp @@ -591,6 +591,10 @@ static hf_cache::hf_file find_best_model(const hf_cache::hf_files & files, for (const auto & f : files) { if (gguf_filename_is_model(f.path) && std::regex_search(f.path, pattern)) { + auto split = get_gguf_split_info(f.path); + if (split.count > 1 && split.index != 1) { + continue; + } return f; } } @@ -600,6 +604,10 @@ static hf_cache::hf_file find_best_model(const hf_cache::hf_files & files, if (tag.empty()) { for (const auto & f : files) { if (gguf_filename_is_model(f.path)) { + auto split = get_gguf_split_info(f.path); + if (split.count > 1 && split.index != 1) { + continue; + } return f; } } @@ -618,6 +626,7 @@ static void list_available_gguf_files(const hf_cache::hf_files & files) { } struct hf_plan { + hf_cache::hf_file primary; hf_cache::hf_files model_files; hf_cache::hf_file mmproj; }; @@ -663,6 +672,7 @@ static hf_plan get_hf_plan(const common_params_model & model, } } + plan.primary = primary; plan.model_files = get_split_files(all, primary); if (opts.download_mmproj) { @@ -749,7 +759,7 @@ common_download_model_result common_download_model(const common_params_model for (const auto & f : hf.model_files) { hf_cache::finalize_file(f); } - result.model_path = hf.model_files[0].final_path; + result.model_path = hf.primary.final_path; if (!hf.mmproj.path.empty()) { result.mmproj_path = hf_cache::finalize_file(hf.mmproj);