Spaces:
Running
Running
| # ============================================================================= | |
| # SGP-Tribe3 Deployment Script | |
| # Run this on your LOCAL machine to push the Space to HuggingFace | |
| # ============================================================================= | |
| # | |
| # BEFORE RUNNING: | |
| # 1. Make sure you've revoked the old token at https://huggingface.co/settings/tokens | |
| # 2. Generate a new write-access token and set it below (or export it first) | |
| # 3. Make sure git and git-lfs are installed: sudo apt install git git-lfs | |
| # 4. Check your HuggingFace username at https://huggingface.co/settings/profile | |
| # | |
| # USAGE: | |
| # export HF_TOKEN=hf_your_new_token_here | |
| # export HF_USERNAME=your_username_here | |
| # bash deploy.sh | |
| # ============================================================================= | |
| set -e # Exit on any error | |
| # ββ Configuration βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| HF_USERNAME="${HF_USERNAME:-REPLACE_WITH_YOUR_USERNAME}" | |
| HF_TOKEN="${HF_TOKEN:-REPLACE_WITH_YOUR_TOKEN}" | |
| SPACE_NAME="sgp-tribe3" | |
| SPACE_URL="https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}" | |
| REPO_URL="https://${HF_USERNAME}:${HF_TOKEN}@huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}" | |
| echo "============================================" | |
| echo " SGP-Tribe3 Deployment" | |
| echo " Space: ${SPACE_URL}" | |
| echo "============================================" | |
| # ββ Step 1: Install huggingface_hub CLI if needed βββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "[1/6] Checking huggingface-cli..." | |
| if ! command -v huggingface-cli &> /dev/null; then | |
| echo "Installing huggingface_hub..." | |
| pip install huggingface_hub --quiet | |
| fi | |
| # ββ Step 2: Create the Space on HuggingFace βββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "[2/6] Creating HuggingFace Space (if it doesn't exist)..." | |
| python3 - <<EOF | |
| from huggingface_hub import HfApi, create_repo | |
| import os | |
| api = HfApi(token="${HF_TOKEN}") | |
| try: | |
| repo_info = api.repo_info( | |
| repo_id="${HF_USERNAME}/${SPACE_NAME}", | |
| repo_type="space" | |
| ) | |
| print(f" Space already exists: {repo_info.id}") | |
| except Exception: | |
| print(" Creating new Space...") | |
| create_repo( | |
| repo_id="${SPACE_NAME}", | |
| repo_type="space", | |
| space_sdk="docker", | |
| token="${HF_TOKEN}", | |
| private=False, | |
| ) | |
| print(f" Space created: ${SPACE_URL}") | |
| # Set HF_TOKEN as a Space secret (needed for LLaMA access) | |
| try: | |
| api.add_space_secret( | |
| repo_id="${HF_USERNAME}/${SPACE_NAME}", | |
| key="HF_TOKEN", | |
| value="${HF_TOKEN}", | |
| ) | |
| print(" HF_TOKEN secret set in Space") | |
| except Exception as e: | |
| print(f" Could not set secret automatically: {e}") | |
| print(" --> Set it manually at: ${SPACE_URL}/settings") | |
| EOF | |
| # ββ Step 3: Initialize git repo βββββββββββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "[3/6] Setting up git repository..." | |
| git lfs install --skip-smudge 2>/dev/null || true | |
| DEPLOY_DIR="$(dirname "$0")" | |
| cd "${DEPLOY_DIR}" | |
| if [ ! -d ".git" ]; then | |
| git init | |
| git lfs track "*.mp4" "*.wav" "*.pt" "*.bin" | |
| echo ".gitattributes" >> .gitattributes | |
| fi | |
| # ββ Step 4: Configure remote ββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "[4/6] Configuring git remote..." | |
| git remote remove hf_space 2>/dev/null || true | |
| git remote add hf_space "${REPO_URL}" | |
| # ββ Step 5: Commit files ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "[5/6] Committing SGP-Tribe3 files..." | |
| git config user.email "sgp-tribe3@local" | |
| git config user.name "SGP-Tribe3" | |
| git add README.md Dockerfile requirements.txt app.py sgp_parcellation.py stimulus_pipeline.py | |
| git add .gitattributes 2>/dev/null || true | |
| git commit -m "SGP-Tribe3 v1.0: Multimodal brain encoding with 9-node SGP parcellation | |
| - Full video+audio+text inference via TRIBE v2 | |
| - Schaefer-200 atlas parcellation to 9 SGP nodes | |
| - Dual-stream (dorsal/ventral) activation separation | |
| - White matter tract co-activation edge weights | |
| - Co-activation matrix endpoint for Resonance Graph calibration | |
| - REST API: /predict /health /warmup /nodes /tracts /results /coactivation_matrix | |
| " 2>/dev/null || echo " (Nothing new to commit)" | |
| # ββ Step 6: Push to HuggingFace βββββββββββββββββββββββββββββββββββββββββββββββ | |
| echo "" | |
| echo "[6/6] Pushing to HuggingFace Spaces..." | |
| git push hf_space main --force | |
| echo "" | |
| echo "============================================" | |
| echo " DEPLOYMENT COMPLETE" | |
| echo " Space URL: ${SPACE_URL}" | |
| echo " API URL: https://${HF_USERNAME}-${SPACE_NAME}.hf.space" | |
| echo "" | |
| echo " Next steps:" | |
| echo " 1. Wait ~5-10 min for Space to build (watch logs at Space URL)" | |
| echo " 2. POST to https://${HF_USERNAME}-${SPACE_NAME}.hf.space/warmup" | |
| echo " 3. Wait for model to load (~5 min)" | |
| echo " 4. Test with a local video:" | |
| echo " python3 stimulus_pipeline.py \\" | |
| echo " --api https://${HF_USERNAME}-${SPACE_NAME}.hf.space \\" | |
| echo " --local-video /path/to/your/video.mp4" | |
| echo "============================================" | |