File size: 2,142 Bytes
b72d311
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env python
"""
Deploy this ml-service folder to a Hugging Face Space (Docker SDK).

One-time:
  1. Create a free account at https://huggingface.co
  2. Make a WRITE token at https://huggingface.co/settings/tokens

Run (from the repo root or anywhere):
  # bash / git-bash:
  HF_TOKEN=hf_xxx python ml-service/deploy_hf.py <hf-username>/hsfast-ml
  # PowerShell:
  $env:HF_TOKEN="hf_xxx"; python ml-service/deploy_hf.py <hf-username>/hsfast-ml

It creates the Space if needed and uploads the folder (the 130MB model goes via
LFS automatically). Afterwards, set ML_SERVICE_URL on Render to the Space URL.
"""
import os
import sys
from huggingface_hub import HfApi


def main():
    if len(sys.argv) < 2:
        sys.exit("Usage: HF_TOKEN=<write-token> python deploy_hf.py <hf-username>/<space-name>")
    repo_id = sys.argv[1]
    token = os.environ.get("HF_TOKEN")
    if not token:
        sys.exit("Set HF_TOKEN to a Hugging Face WRITE token (https://huggingface.co/settings/tokens)")

    here = os.path.dirname(os.path.abspath(__file__))
    api = HfApi(token=token)

    print(f"[deploy] creating/locating Space '{repo_id}' (Docker SDK)…")
    api.create_repo(repo_id=repo_id, repo_type="space", space_sdk="docker", exist_ok=True)

    print("[deploy] uploading ml-service (model uploads via LFS, ~130MB — be patient)…")
    api.upload_folder(
        folder_path=here,
        repo_id=repo_id,
        repo_type="space",
        ignore_patterns=[
            "__pycache__/*", "*.pyc", ".git/*", "*.rar", "eval_dmsv4.py", "deploy_hf.py",
            # only best_model.pt is served — don't ship local backups/duplicates
            "models/best_model_r8_backup.pt", "models/best_model_esm2 (1).pt",
        ],
        commit_message="Deploy hsFAST ML service",
    )

    print(f"\n[deploy] done -> https://huggingface.co/spaces/{repo_id}")
    print("[deploy] the Space will build (Docker) for a few minutes; watch the logs there.")
    print("[deploy] then copy the Space's public URL and set it on Render as:")
    print("           ML_SERVICE_URL = https://<that-space-url>")


if __name__ == "__main__":
    main()