sql-error-classifier / scripts /deploy_inference_space.sh
nishu08's picture
Deploy CodeBERT inference Space
8a3099e verified
Raw
History Blame Contribute Delete
1.99 kB
#!/usr/bin/env bash
# Deploy CodeBERT inference Space to Hugging Face.
# Usage: ./scripts/deploy_inference_space.sh [YOUR_USERNAME/space-name]
set -euo pipefail
SPACE_SUFFIX="${1:-sql-error-classifier}"
MODEL_REPO="${2:-nishu08/sql-codebert-classifier}"
TOKEN="${HF_TOKEN:-${HUGGING_FACE_HUB_TOKEN:-}}"
if [[ -z "${TOKEN}" ]]; then
echo "Set HF_TOKEN before deploying."
exit 1
fi
if [[ "${SPACE_SUFFIX}" == */* ]]; then
SPACE_ID="${SPACE_SUFFIX}"
else
USERNAME=$(python - <<PY
from huggingface_hub import HfApi
api = HfApi(token="${TOKEN}")
print(api.whoami()["name"])
PY
)
SPACE_ID="${USERNAME}/${SPACE_SUFFIX}"
fi
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
WORKDIR=$(mktemp -d)
trap 'rm -rf "${WORKDIR}"' EXIT
echo "==> Preparing inference Space files..."
rsync -a \
--exclude '.venv' \
--exclude 'models' \
--exclude 'data' \
--exclude '__pycache__' \
--exclude '.git' \
"${ROOT}/" "${WORKDIR}/"
cp "${ROOT}/README_INFERENCE_SPACE.md" "${WORKDIR}/README.md"
cp "${ROOT}/Dockerfile.inference" "${WORKDIR}/Dockerfile"
# Bake default model id into Dockerfile
sed -i.bak "s|ENV SPACE_MODEL_ID=.*|ENV SPACE_MODEL_ID=${MODEL_REPO}|" "${WORKDIR}/Dockerfile"
rm -f "${WORKDIR}/Dockerfile.bak"
echo "==> Verifying model repo exists: ${MODEL_REPO}"
python - <<PY
from huggingface_hub import HfApi
api = HfApi(token="${TOKEN}")
api.model_info("${MODEL_REPO}")
print("Model found.")
PY
echo "==> Creating Space: ${SPACE_ID}"
python - <<PY
from huggingface_hub import HfApi
api = HfApi(token="${TOKEN}")
api.create_repo("${SPACE_ID}", repo_type="space", space_sdk="docker", exist_ok=True)
PY
echo "==> Uploading..."
python - <<PY
from huggingface_hub import HfApi
api = HfApi(token="${TOKEN}")
api.upload_folder(
folder_path="${WORKDIR}",
repo_id="${SPACE_ID}",
repo_type="space",
commit_message="Deploy CodeBERT inference Space",
)
PY
echo ""
echo "Done: https://huggingface.co/spaces/${SPACE_ID}"
echo "CPU hardware is sufficient for inference."