common : skip non-primary GGUF split files when selecting model (#21633)
We should not assume files are listed in order. Signed-off-by: Adrien Gallouët <angt@huggingface.co>
This commit is contained in:
+11
-1
@@ -591,6 +591,10 @@ static hf_cache::hf_file find_best_model(const hf_cache::hf_files & files,
|
|||||||
for (const auto & f : files) {
|
for (const auto & f : files) {
|
||||||
if (gguf_filename_is_model(f.path) &&
|
if (gguf_filename_is_model(f.path) &&
|
||||||
std::regex_search(f.path, pattern)) {
|
std::regex_search(f.path, pattern)) {
|
||||||
|
auto split = get_gguf_split_info(f.path);
|
||||||
|
if (split.count > 1 && split.index != 1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -600,6 +604,10 @@ static hf_cache::hf_file find_best_model(const hf_cache::hf_files & files,
|
|||||||
if (tag.empty()) {
|
if (tag.empty()) {
|
||||||
for (const auto & f : files) {
|
for (const auto & f : files) {
|
||||||
if (gguf_filename_is_model(f.path)) {
|
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;
|
return f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -618,6 +626,7 @@ static void list_available_gguf_files(const hf_cache::hf_files & files) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct hf_plan {
|
struct hf_plan {
|
||||||
|
hf_cache::hf_file primary;
|
||||||
hf_cache::hf_files model_files;
|
hf_cache::hf_files model_files;
|
||||||
hf_cache::hf_file mmproj;
|
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);
|
plan.model_files = get_split_files(all, primary);
|
||||||
|
|
||||||
if (opts.download_mmproj) {
|
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) {
|
for (const auto & f : hf.model_files) {
|
||||||
hf_cache::finalize_file(f);
|
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()) {
|
if (!hf.mmproj.path.empty()) {
|
||||||
result.mmproj_path = hf_cache::finalize_file(hf.mmproj);
|
result.mmproj_path = hf_cache::finalize_file(hf.mmproj);
|
||||||
|
|||||||
Reference in New Issue
Block a user