mplus-studio / scripts /deploy-huggingface.py
joelsefanja's picture
Deploy Mplus Studio
d1bff6b verified
Raw
History Blame Contribute Delete
2.31 kB
from __future__ import annotations
import os
from pathlib import Path
from huggingface_hub import HfApi
REQUIRED_ENV = ["HF_TOKEN", "HF_SPACE_ID", "KAGGLE_USERNAME", "KAGGLE_API_TOKEN"]
def main() -> None:
missing = [name for name in REQUIRED_ENV if not os.environ.get(name)]
if missing:
raise SystemExit(f"Missing required environment variables: {', '.join(missing)}")
project_root = Path(__file__).resolve().parents[1]
repo_id = os.environ["HF_SPACE_ID"]
token = os.environ["HF_TOKEN"]
api = HfApi(token=token)
api.create_repo(
repo_id=repo_id,
repo_type="space",
space_sdk="docker",
private=True,
exist_ok=True,
)
secrets = {
"PORT": "7860",
"GENERATION_PROVIDER": "kaggle",
"COMMERCIAL_MODE": "1",
"FLUX_MODEL_ID": os.environ.get("FLUX_MODEL_ID", "black-forest-labs/FLUX.2-klein-4B"),
"KAGGLE_COMMAND": "kaggle",
"KAGGLE_USERNAME": os.environ["KAGGLE_USERNAME"],
"KAGGLE_API_TOKEN": os.environ["KAGGLE_API_TOKEN"],
"KAGGLE_ACCELERATOR": os.environ.get("KAGGLE_ACCELERATOR", "NvidiaTeslaT4"),
"KAGGLE_USE_SMALL_DECODER": os.environ.get("KAGGLE_USE_SMALL_DECODER", "0"),
"KAGGLE_INFERENCE_STEPS": os.environ.get("KAGGLE_INFERENCE_STEPS", "4"),
"KAGGLE_CACHE_KERNEL_REF": os.environ.get("KAGGLE_CACHE_KERNEL_REF", "jolvangeest/mplus-flux2-cache"),
"KAGGLE_POLL_INTERVAL_MS": os.environ.get("KAGGLE_POLL_INTERVAL_MS", "5000"),
"KAGGLE_POLL_TIMEOUT_MS": os.environ.get("KAGGLE_POLL_TIMEOUT_MS", "7200000"),
}
for key, value in secrets.items():
api.add_space_secret(repo_id=repo_id, key=key, value=value)
api.upload_folder(
repo_id=repo_id,
repo_type="space",
folder_path=str(project_root),
commit_message="Deploy Mplus Studio",
ignore_patterns=[
".git/*",
".angular/*",
".kaggle-work/*",
".env",
"backend/dist/*",
"backend/node_modules/*",
"dist/*",
"graphify-out/*",
"node_modules/*",
"test-results/*",
],
)
print(f"Deployed to https://huggingface.co/spaces/{repo_id}")
if __name__ == "__main__":
main()