feat(cli): add ModelScopeHub model download command line tool
add new msdown CLI command powered by modelscope SDK via uvx, support downloading models/datasets/spaces from ModelScopeHub to local directory
This commit is contained in:
+1
-1
@@ -36,8 +36,8 @@ filelvl = "pyflowx.cli.filelevel:main"
|
||||
foldback = "pyflowx.cli.folderback:main"
|
||||
foldzip = "pyflowx.cli.folderzip:main"
|
||||
gitt = "pyflowx.cli.gittool:main"
|
||||
hfdown = "pyflowx.cli.hfdownload:main"
|
||||
lscalc = "pyflowx.cli.lscalc:main"
|
||||
msdown = "pyflowx.cli.llm.msdownload:main"
|
||||
packtool = "pyflowx.cli.packtool:main"
|
||||
pdftool = "pyflowx.cli.pdftool:main"
|
||||
piptool = "pyflowx.cli.piptool:main"
|
||||
|
||||
@@ -1,36 +1,28 @@
|
||||
"""Download from ModelScopeHub."""
|
||||
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from typing import Literal, get_args
|
||||
|
||||
import pyflowx as px
|
||||
from pyflowx.tasks.system import setenv
|
||||
|
||||
HFDownloadType = Literal["model", "dataset", "space"]
|
||||
DownloadType = Literal["model", "dataset", "space"]
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Download a model from HuggingFace.")
|
||||
parser = argparse.ArgumentParser(description="Download a model from ModelScopeHub.")
|
||||
parser.add_argument("name", help="Target name.")
|
||||
parser.add_argument(
|
||||
"--type", "-t", nargs="?", default="model", choices=get_args(HFDownloadType), help="Target type."
|
||||
)
|
||||
parser.add_argument("--type", "-t", nargs="?", default="model", choices=get_args(DownloadType), help="Target type.")
|
||||
parser.add_argument("--dir", default=None, help="Download directory.")
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.name:
|
||||
parser.error("name is required")
|
||||
|
||||
target_name = args.name
|
||||
|
||||
# 创建下载目录
|
||||
if args.dir:
|
||||
download_dir = Path(args.dir)
|
||||
else:
|
||||
download_dir = Path.home() / ".models" / target_name.split("/")[-1]
|
||||
download_dir: Path = Path(args.dir) if args.dir else Path.home() / ".models" / args.name.split("/")[-1]
|
||||
download_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
graph = px.Graph.from_specs([
|
||||
setenv("HF_ENDPOINT", "https://hf-mirror.com"),
|
||||
px.TaskSpec(
|
||||
name="download",
|
||||
cmd=[
|
||||
@@ -38,11 +30,10 @@ def main():
|
||||
"modelscope",
|
||||
"download",
|
||||
f"--{args.type}",
|
||||
target_name,
|
||||
args.name,
|
||||
"--local_dir",
|
||||
str(download_dir),
|
||||
],
|
||||
depends_on=("setenv_hf_endpoint",),
|
||||
verbose=True,
|
||||
),
|
||||
])
|
||||
Reference in New Issue
Block a user