agent-api / download_model.py
github-actions[bot]
Sync GitHub snapshot to Hugging Face
9a1014e
Raw
History Blame Contribute Delete
1.94 kB
"""Descarga el repositorio GGUF de Qwen para uso local."""
from __future__ import annotations
import argparse
import os
from pathlib import Path
from huggingface_hub import snapshot_download
DEST_REPO = os.getenv(
"LOCAL_MODEL_REPO",
"AlbertiTechnology/qwen3-4b-instruct-gguf",
)
MODELS_DIR = Path(os.getenv("MODELS_DIR", "MODELS"))
LOCAL_MODEL_DIR = MODELS_DIR / "qwen3-4b-instruct-gguf"
def get_token(required: bool = False) -> str | None:
token = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACEHUB_API_TOKEN")
if required and not token:
raise RuntimeError("HF_TOKEN is required to create and upload the model repository.")
return token
def download_local_model(
repo_id: str = DEST_REPO,
local_dir: Path = LOCAL_MODEL_DIR,
) -> Path:
"""Descarga el repositorio propio dentro de MODELS para inferencia local."""
local_dir.parent.mkdir(parents=True, exist_ok=True)
local_path = snapshot_download(
repo_id=repo_id,
token=get_token(),
local_dir=local_dir,
)
print(f"Modelo local descargado en: {local_path}", flush=True)
return Path(local_path)
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser()
parser.add_argument(
"--download-only",
action="store_true",
help="Sólo descarga DEST_REPO dentro de MODELS.",
)
parser.add_argument(
"--repo",
default=DEST_REPO,
help="Repositorio que se descargara dentro de MODELS.",
)
parser.add_argument(
"--local-dir",
type=Path,
default=LOCAL_MODEL_DIR,
help="Directorio local donde se guardara el repositorio.",
)
return parser.parse_args()
def main() -> None:
args = parse_args()
if args.download_only:
download_local_model(args.repo, args.local_dir)
return
raise SystemExit("Use --download-only.")
if __name__ == "__main__":
main()