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"
|
foldback = "pyflowx.cli.folderback:main"
|
||||||
foldzip = "pyflowx.cli.folderzip:main"
|
foldzip = "pyflowx.cli.folderzip:main"
|
||||||
gitt = "pyflowx.cli.gittool:main"
|
gitt = "pyflowx.cli.gittool:main"
|
||||||
hfdown = "pyflowx.cli.hfdownload:main"
|
|
||||||
lscalc = "pyflowx.cli.lscalc:main"
|
lscalc = "pyflowx.cli.lscalc:main"
|
||||||
|
msdown = "pyflowx.cli.llm.msdownload:main"
|
||||||
packtool = "pyflowx.cli.packtool:main"
|
packtool = "pyflowx.cli.packtool:main"
|
||||||
pdftool = "pyflowx.cli.pdftool:main"
|
pdftool = "pyflowx.cli.pdftool:main"
|
||||||
piptool = "pyflowx.cli.piptool:main"
|
piptool = "pyflowx.cli.piptool:main"
|
||||||
|
|||||||
@@ -1,36 +1,28 @@
|
|||||||
|
"""Download from ModelScopeHub."""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Literal, get_args
|
from typing import Literal, get_args
|
||||||
|
|
||||||
import pyflowx as px
|
import pyflowx as px
|
||||||
from pyflowx.tasks.system import setenv
|
|
||||||
|
|
||||||
HFDownloadType = Literal["model", "dataset", "space"]
|
DownloadType = Literal["model", "dataset", "space"]
|
||||||
|
|
||||||
|
|
||||||
def main():
|
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("name", help="Target name.")
|
||||||
parser.add_argument(
|
parser.add_argument("--type", "-t", nargs="?", default="model", choices=get_args(DownloadType), help="Target type.")
|
||||||
"--type", "-t", nargs="?", default="model", choices=get_args(HFDownloadType), help="Target type."
|
|
||||||
)
|
|
||||||
parser.add_argument("--dir", default=None, help="Download directory.")
|
parser.add_argument("--dir", default=None, help="Download directory.")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if not args.name:
|
if not args.name:
|
||||||
parser.error("name is required")
|
parser.error("name is required")
|
||||||
|
|
||||||
target_name = args.name
|
download_dir: Path = Path(args.dir) if args.dir else Path.home() / ".models" / args.name.split("/")[-1]
|
||||||
|
|
||||||
# 创建下载目录
|
|
||||||
if args.dir:
|
|
||||||
download_dir = Path(args.dir)
|
|
||||||
else:
|
|
||||||
download_dir = Path.home() / ".models" / target_name.split("/")[-1]
|
|
||||||
download_dir.mkdir(parents=True, exist_ok=True)
|
download_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
graph = px.Graph.from_specs([
|
graph = px.Graph.from_specs([
|
||||||
setenv("HF_ENDPOINT", "https://hf-mirror.com"),
|
|
||||||
px.TaskSpec(
|
px.TaskSpec(
|
||||||
name="download",
|
name="download",
|
||||||
cmd=[
|
cmd=[
|
||||||
@@ -38,11 +30,10 @@ def main():
|
|||||||
"modelscope",
|
"modelscope",
|
||||||
"download",
|
"download",
|
||||||
f"--{args.type}",
|
f"--{args.type}",
|
||||||
target_name,
|
args.name,
|
||||||
"--local_dir",
|
"--local_dir",
|
||||||
str(download_dir),
|
str(download_dir),
|
||||||
],
|
],
|
||||||
depends_on=("setenv_hf_endpoint",),
|
|
||||||
verbose=True,
|
verbose=True,
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
Reference in New Issue
Block a user