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);