dimostzim commited on
Commit
36d6eee
·
1 Parent(s): 36310cf

Space: auto-download model from HF model repo

Browse files
Files changed (3) hide show
  1. app.py +28 -4
  2. requirements.txt +1 -0
  3. upload_model_to_hf_model.sh +27 -0
app.py CHANGED
@@ -50,15 +50,39 @@ NUM_PAIRS = None
50
  BATCH_RESULTS = None
51
  BATCH_SHAP_CACHE = {}
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  def load_pretrained_model():
55
  """Load the pre-trained model once at startup."""
56
  global MODEL, MODEL_PARAMS, DEVICE, PAIR_TO_INDEX, NUM_PAIRS
57
 
58
- model_path = Path(__file__).parent / "miRBind_2.0-main" / "models" / "pairwise_onehot_model_20260105_200141.pt"
59
-
60
- if not model_path.exists():
61
- raise FileNotFoundError(f"Model not found at {model_path}")
62
 
63
  DEVICE = get_device()
64
  PAIR_TO_INDEX = get_pair_to_index()
 
50
  BATCH_RESULTS = None
51
  BATCH_SHAP_CACHE = {}
52
 
53
+ MODEL_FILENAME = "pairwise_onehot_model_20260105_200141.pt"
54
+ MODEL_REPO_ID = os.getenv("MIRBIND2_MODEL_REPO", "dimostzim/mirbind2-weights")
55
+
56
+
57
+ def resolve_model_path():
58
+ """Resolve model path locally, or download from Hugging Face Hub if missing."""
59
+ local_model_path = Path(__file__).parent / "miRBind_2.0-main" / "models" / MODEL_FILENAME
60
+ if local_model_path.exists():
61
+ return local_model_path
62
+
63
+ print(f"Local model not found at {local_model_path}")
64
+ print(f"Downloading model from Hugging Face Hub repo: {MODEL_REPO_ID}")
65
+
66
+ try:
67
+ from huggingface_hub import hf_hub_download
68
+ except ImportError as exc:
69
+ raise FileNotFoundError(
70
+ "Model file missing locally and huggingface_hub is not installed."
71
+ ) from exc
72
+
73
+ downloaded_path = hf_hub_download(
74
+ repo_id=MODEL_REPO_ID,
75
+ filename=MODEL_FILENAME,
76
+ repo_type="model",
77
+ )
78
+ return Path(downloaded_path)
79
+
80
 
81
  def load_pretrained_model():
82
  """Load the pre-trained model once at startup."""
83
  global MODEL, MODEL_PARAMS, DEVICE, PAIR_TO_INDEX, NUM_PAIRS
84
 
85
+ model_path = resolve_model_path()
 
 
 
86
 
87
  DEVICE = get_device()
88
  PAIR_TO_INDEX = get_pair_to_index()
requirements.txt CHANGED
@@ -8,3 +8,4 @@ matplotlib>=3.7
8
  Pillow>=10.0
9
  captum>=0.7.0
10
  scikit-learn>=1.3.0
 
 
8
  Pillow>=10.0
9
  captum>=0.7.0
10
  scikit-learn>=1.3.0
11
+ huggingface_hub>=0.30
upload_model_to_hf_model.sh ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Upload miRBind2 model weights to a Hugging Face Model repo.
5
+ # Usage:
6
+ # ./upload_model_to_hf_model.sh
7
+ # MODEL_REPO_ID=dimostzim/mirbind2-weights ./upload_model_to_hf_model.sh
8
+ # ./upload_model_to_hf_model.sh /path/to/local.pt pairwise_onehot_model_20260105_200141.pt
9
+
10
+ MODEL_REPO_ID="${MODEL_REPO_ID:-dimostzim/mirbind2-weights}"
11
+ LOCAL_MODEL_PATH="${1:-$HOME/webapp_package/miRBind_2.0-main/models/pairwise_onehot_model_20260105_200141.pt}"
12
+ REMOTE_MODEL_PATH="${2:-pairwise_onehot_model_20260105_200141.pt}"
13
+
14
+ if [[ ! -f "$LOCAL_MODEL_PATH" ]]; then
15
+ echo "Local model file not found:"
16
+ echo " $LOCAL_MODEL_PATH"
17
+ exit 1
18
+ fi
19
+
20
+ if command -v hf >/dev/null 2>&1; then
21
+ hf upload "$MODEL_REPO_ID" "$LOCAL_MODEL_PATH" "$REMOTE_MODEL_PATH" --repo-type model
22
+ else
23
+ python -m pip install -U huggingface_hub
24
+ python -m huggingface_hub upload "$MODEL_REPO_ID" "$LOCAL_MODEL_PATH" "$REMOTE_MODEL_PATH" --repo-type model
25
+ fi
26
+
27
+ echo "Model uploaded to: https://huggingface.co/$MODEL_REPO_ID"