Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| import argparse | |
| from pathlib import Path | |
| from huggingface_hub import snapshot_download | |
| BASE_DIR = Path(__file__).resolve().parent | |
| STYLEEXPERT_REPO_ID = "HH-LG/StyleExpert" | |
| STYLEEXPERT_REVISION = "main" | |
| STYLEEXPERT_LOCAL_DIR = BASE_DIR | |
| STYLEEXPERT_ALLOW_PATTERNS = ["weights/*"] | |
| KONTEXT_REPO_ID = "black-forest-labs/FLUX.1-Kontext-dev" | |
| KONTEXT_REVISION = "main" | |
| KONTEXT_LOCAL_DIR = BASE_DIR / "models" / "FLUX.1-Kontext-dev" | |
| SIGLIP_REPO_ID = "google/siglip-so400m-patch14-384" | |
| SIGLIP_REVISION = "main" | |
| SIGLIP_LOCAL_DIR = BASE_DIR / "models" / "siglip-so400m-patch14-384" | |
| def build_parser() -> argparse.ArgumentParser: | |
| parser = argparse.ArgumentParser( | |
| description="Download all pretrained model files required by StyleExpert inference." | |
| ) | |
| parser.add_argument( | |
| "--token", | |
| default=None, | |
| help="Hugging Face token. If omitted, the local HF login state will be used.", | |
| ) | |
| parser.add_argument( | |
| "--cache-dir", | |
| default=None, | |
| help="Optional Hugging Face cache directory.", | |
| ) | |
| parser.add_argument( | |
| "--skip-styleexpert", | |
| action="store_true", | |
| help="Skip downloading StyleExpert adapter weights.", | |
| ) | |
| parser.add_argument( | |
| "--skip-kontext", | |
| action="store_true", | |
| help="Skip downloading FLUX.1-Kontext-dev.", | |
| ) | |
| parser.add_argument( | |
| "--skip-siglip", | |
| action="store_true", | |
| help="Skip downloading SigLIP.", | |
| ) | |
| return parser | |
| def download_snapshot(repo_id: str, revision: str, local_dir: Path, token: str | None, cache_dir: str | None, allow_patterns=None): | |
| local_dir.mkdir(parents=True, exist_ok=True) | |
| print(f"repo_id : {repo_id}") | |
| print(f"revision : {revision}") | |
| print(f"local_dir : {local_dir}") | |
| print(f"allow_filter : {allow_patterns if allow_patterns is not None else 'ALL FILES'}") | |
| snapshot_path = snapshot_download( | |
| repo_id=repo_id, | |
| repo_type="model", | |
| revision=revision, | |
| token=token, | |
| local_dir=str(local_dir), | |
| cache_dir=cache_dir, | |
| allow_patterns=allow_patterns, | |
| ) | |
| print(f"downloaded_to: {snapshot_path}") | |
| print("") | |
| def main() -> None: | |
| args = build_parser().parse_args() | |
| if args.skip_styleexpert and args.skip_kontext and args.skip_siglip: | |
| raise ValueError("All download targets are skipped. Remove at least one --skip-* flag.") | |
| print("This script downloads the fixed model repos used by open_source/StyleExpert inference.") | |
| print("If FLUX.1-Kontext-dev is gated on Hugging Face, please make sure your account has accepted its license.") | |
| print("") | |
| if not args.skip_styleexpert: | |
| download_snapshot( | |
| repo_id=STYLEEXPERT_REPO_ID, | |
| revision=STYLEEXPERT_REVISION, | |
| local_dir=STYLEEXPERT_LOCAL_DIR, | |
| token=args.token, | |
| cache_dir=args.cache_dir, | |
| allow_patterns=STYLEEXPERT_ALLOW_PATTERNS, | |
| ) | |
| if not args.skip_kontext: | |
| download_snapshot( | |
| repo_id=KONTEXT_REPO_ID, | |
| revision=KONTEXT_REVISION, | |
| local_dir=KONTEXT_LOCAL_DIR, | |
| token=args.token, | |
| cache_dir=args.cache_dir, | |
| allow_patterns=None, | |
| ) | |
| if not args.skip_siglip: | |
| download_snapshot( | |
| repo_id=SIGLIP_REPO_ID, | |
| revision=SIGLIP_REVISION, | |
| local_dir=SIGLIP_LOCAL_DIR, | |
| token=args.token, | |
| cache_dir=args.cache_dir, | |
| allow_patterns=None, | |
| ) | |
| if __name__ == "__main__": | |
| main() | |