|
@@ -1,3 +1,4 @@
|
|
|
|
|
+import os
|
|
|
import json
|
|
import json
|
|
|
from pathlib import Path
|
|
from pathlib import Path
|
|
|
from typing import Any
|
|
from typing import Any
|
|
@@ -42,13 +43,16 @@ async def download_model(model_id: str, use_modelscope: bool = False) -> dict[st
|
|
|
"""从 HF 或 ModelScope 下载模型到本地缓存。"""
|
|
"""从 HF 或 ModelScope 下载模型到本地缓存。"""
|
|
|
try:
|
|
try:
|
|
|
if use_modelscope:
|
|
if use_modelscope:
|
|
|
- from modelscope.hub.snapshot_download import snapshot_download as ms_snapshot_download
|
|
|
|
|
|
|
+ import subprocess
|
|
|
|
|
|
|
|
download_dir = str(settings.models_dir / model_id.replace("/", "_"))
|
|
download_dir = str(settings.models_dir / model_id.replace("/", "_"))
|
|
|
- local_path = ms_snapshot_download(
|
|
|
|
|
- model_id,
|
|
|
|
|
- local_dir=download_dir,
|
|
|
|
|
|
|
+ proc = subprocess.run(
|
|
|
|
|
+ ["modelscope", "download", "--model", model_id, "--local_dir", download_dir],
|
|
|
|
|
+ capture_output=True, text=True, timeout=3600,
|
|
|
)
|
|
)
|
|
|
|
|
+ if proc.returncode != 0:
|
|
|
|
|
+ raise RuntimeError(f"modelscope CLI failed: {proc.stderr}")
|
|
|
|
|
+ local_path = download_dir
|
|
|
else:
|
|
else:
|
|
|
from huggingface_hub import snapshot_download
|
|
from huggingface_hub import snapshot_download
|
|
|
|
|
|