@@ -488,12 +488,15 @@ void common_models_handler_apply(common_models_handler & handler, common_params
488488 task.opts = opts;
489489 tasks.push_back (task);
490490 }
491+
492+ bool had_spec_url = false ;
491493 if (!params.speculative .draft .mparams .url .empty ()) {
492494 common_download_task task;
493495 task.url = params.speculative .draft .mparams .url ;
494496 task.local_path = params.speculative .draft .mparams .path ;
495497 task.opts = opts;
496498 tasks.push_back (task);
499+ had_spec_url = true ;
497500 }
498501
499502 // handle hf_plan tasks
@@ -513,6 +516,18 @@ void common_models_handler_apply(common_models_handler & handler, common_params
513516 });
514517 }
515518 };
519+
520+ // handle plan_spec (e.g. --spec-draft-hf)
521+ if (!plan_spec.model_files .empty () && !had_spec_url) {
522+ add_tasks (plan_spec.model_files , plan_spec.primary , params.speculative .draft .mparams );
523+ had_spec_url = true ;
524+ }
525+
526+ // handle vocoder plan (e.g. --hf-repo-v)
527+ if (!plan_voc.model_files .empty ()) {
528+ add_tasks (plan_voc.model_files , plan_voc.primary , params.vocoder .model );
529+ }
530+
516531 if (!plan.model_files .empty ()) {
517532 add_tasks (plan.model_files , plan.primary , params.model );
518533 }
@@ -521,7 +536,7 @@ void common_models_handler_apply(common_models_handler & handler, common_params
521536 params.mmproj .path = hf_cache::finalize_file (plan.mmproj );
522537 });
523538 }
524- if (!plan.mtp .local_path .empty ()) {
539+ if (!plan.mtp .local_path .empty () && !had_spec_url ) {
525540 tasks.emplace_back (plan.mtp , opts, [&]() {
526541 // only fall back to the discovered MTP head when no draft was explicitly provided
527542 if (params.speculative .draft .mparams .empty ()) {
@@ -540,16 +555,6 @@ void common_models_handler_apply(common_models_handler & handler, common_params
540555 });
541556 }
542557
543- // handle plan_spec (e.g. --spec-draft-hf)
544- if (!plan_spec.model_files .empty ()) {
545- add_tasks (plan_spec.model_files , plan_spec.primary , params.speculative .draft .mparams );
546- }
547-
548- // handle vocoder plan (e.g. --hf-repo-v)
549- if (!plan_voc.model_files .empty ()) {
550- add_tasks (plan_voc.model_files , plan_voc.primary , params.vocoder .model );
551- }
552-
553558 // run all tasks in parallel
554559 if (!params.offline ) {
555560 // if duplicated files are found, only download once (but still call on_done for each task)
@@ -562,6 +567,7 @@ void common_models_handler_apply(common_models_handler & handler, common_params
562567 }
563568 std::vector<common_download_task> unique_tasks_vec;
564569 for (auto & pair : unique_tasks) {
570+ LOG_DBG (" download task: %s -> %s\n " , pair.second ->url .c_str (), pair.second ->local_path .c_str ());
565571 unique_tasks_vec.push_back (*pair.second );
566572 }
567573 common_download_run_tasks (unique_tasks_vec);
0 commit comments