File size: 1,985 Bytes
8a3099e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/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."