Update backend/worker.py
Browse files- backend/worker.py +5 -9
backend/worker.py
CHANGED
|
@@ -3,10 +3,10 @@ import json
|
|
| 3 |
import tempfile
|
| 4 |
import shutil
|
| 5 |
import traceback
|
| 6 |
-
from
|
| 7 |
-
from
|
| 8 |
-
from
|
| 9 |
-
from
|
| 10 |
import asyncio
|
| 11 |
|
| 12 |
async def run_job_async(job_id: str, params: dict):
|
|
@@ -20,7 +20,7 @@ def run_job(job_id, params):
|
|
| 20 |
if not check_memory_safe(model_a_id, model_b_id, params.get("evo_params")):
|
| 21 |
raise RuntimeError("Insufficient memory for this merge. Job rejected.")
|
| 22 |
|
| 23 |
-
from
|
| 24 |
path_a = prepare_model(params["model_a_source"], params["model_a_id"], params.get("civitai_key"))
|
| 25 |
path_b = prepare_model(params["model_b_source"], params["model_b_id"], params.get("civitai_key"))
|
| 26 |
|
|
@@ -33,18 +33,15 @@ def run_job(job_id, params):
|
|
| 33 |
dataset_path = params.get("dataset")
|
| 34 |
evolutionary_merge(path_a, path_b, dataset_path, output_dir, evo_params)
|
| 35 |
else:
|
| 36 |
-
# 線形系マージ(linear, slerp, franken)
|
| 37 |
merge_type = params.get("merge_type", "linear")
|
| 38 |
alpha = params.get("linear_alpha", 0.5)
|
| 39 |
layers_from_a = params.get("franken_layers", None)
|
| 40 |
merge_models(path_a, path_b, output_dir, method=merge_type,
|
| 41 |
alpha=alpha, layers_from_a=layers_from_a)
|
| 42 |
|
| 43 |
-
# HFへアップロード
|
| 44 |
repo_name = params.get("output_repo_name") or f"merge-{job_id[:8]}"
|
| 45 |
upload_to_hf(output_dir, repo_name, params["hf_token"])
|
| 46 |
|
| 47 |
-
# ★ メモリ最適化:不要な出力ディレクトリを削除
|
| 48 |
if os.path.exists(output_dir):
|
| 49 |
shutil.rmtree(output_dir)
|
| 50 |
|
|
@@ -53,6 +50,5 @@ def run_job(job_id, params):
|
|
| 53 |
traceback.print_exc()
|
| 54 |
raise
|
| 55 |
finally:
|
| 56 |
-
# 安全のためトークン情報を破棄
|
| 57 |
params["hf_token"] = None
|
| 58 |
params["civitai_key"] = None
|
|
|
|
| 3 |
import tempfile
|
| 4 |
import shutil
|
| 5 |
import traceback
|
| 6 |
+
from merge_engines.linear import merge_models
|
| 7 |
+
from merge_engines.evolutionary import evolutionary_merge
|
| 8 |
+
from uploader import upload_to_hf
|
| 9 |
+
from memory_manager import estimate_memory, check_memory_safe
|
| 10 |
import asyncio
|
| 11 |
|
| 12 |
async def run_job_async(job_id: str, params: dict):
|
|
|
|
| 20 |
if not check_memory_safe(model_a_id, model_b_id, params.get("evo_params")):
|
| 21 |
raise RuntimeError("Insufficient memory for this merge. Job rejected.")
|
| 22 |
|
| 23 |
+
from model_loader import prepare_model
|
| 24 |
path_a = prepare_model(params["model_a_source"], params["model_a_id"], params.get("civitai_key"))
|
| 25 |
path_b = prepare_model(params["model_b_source"], params["model_b_id"], params.get("civitai_key"))
|
| 26 |
|
|
|
|
| 33 |
dataset_path = params.get("dataset")
|
| 34 |
evolutionary_merge(path_a, path_b, dataset_path, output_dir, evo_params)
|
| 35 |
else:
|
|
|
|
| 36 |
merge_type = params.get("merge_type", "linear")
|
| 37 |
alpha = params.get("linear_alpha", 0.5)
|
| 38 |
layers_from_a = params.get("franken_layers", None)
|
| 39 |
merge_models(path_a, path_b, output_dir, method=merge_type,
|
| 40 |
alpha=alpha, layers_from_a=layers_from_a)
|
| 41 |
|
|
|
|
| 42 |
repo_name = params.get("output_repo_name") or f"merge-{job_id[:8]}"
|
| 43 |
upload_to_hf(output_dir, repo_name, params["hf_token"])
|
| 44 |
|
|
|
|
| 45 |
if os.path.exists(output_dir):
|
| 46 |
shutil.rmtree(output_dir)
|
| 47 |
|
|
|
|
| 50 |
traceback.print_exc()
|
| 51 |
raise
|
| 52 |
finally:
|
|
|
|
| 53 |
params["hf_token"] = None
|
| 54 |
params["civitai_key"] = None
|