Blame view

scripts/setup_reranker_venv.sh 2.47 KB
07cf5a93   tangwang   START_EMBEDDING=...
1
2
  #!/bin/bash
  #
3d508beb   tangwang   reranker-4b-gguf
3
  # Create isolated venv for one reranker backend.
07cf5a93   tangwang   START_EMBEDDING=...
4
5
6
7
8
9
  #
  set -euo pipefail
  
  PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
  cd "${PROJECT_ROOT}"
  
07cf5a93   tangwang   START_EMBEDDING=...
10
11
12
  PYTHON_BIN="${PYTHON_BIN:-python3}"
  TMP_DIR="${RERANKER_PIP_TMPDIR:-${PROJECT_ROOT}/.tmp/reranker-pip}"
  
3d508beb   tangwang   reranker-4b-gguf
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  # shellcheck source=scripts/lib/load_env.sh
  source "${PROJECT_ROOT}/scripts/lib/load_env.sh"
  load_env_file "${PROJECT_ROOT}/.env"
  # shellcheck source=scripts/lib/reranker_backend_env.sh
  source "${PROJECT_ROOT}/scripts/lib/reranker_backend_env.sh"
  
  BACKEND="${1:-$(detect_rerank_backend "${PROJECT_ROOT}")}"
  VENV_DIR="${RERANKER_VENV:-$(reranker_backend_venv_dir "${PROJECT_ROOT}" "${BACKEND}")}"
  REQ_FILE="$(reranker_backend_requirements_file "${PROJECT_ROOT}" "${BACKEND}")"
  
  if [[ ! -f "${REQ_FILE}" ]]; then
    echo "ERROR: requirements file not found for reranker backend ${BACKEND}: ${REQ_FILE}" >&2
    exit 1
  fi
  
07cf5a93   tangwang   START_EMBEDDING=...
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  if ! command -v "${PYTHON_BIN}" >/dev/null 2>&1; then
    echo "ERROR: python not found: ${PYTHON_BIN}" >&2
    exit 1
  fi
  
  if [[ -d "${VENV_DIR}" && ! -f "${VENV_DIR}/bin/activate" ]]; then
    echo "Found broken venv at ${VENV_DIR}, recreating..."
    rm -rf "${VENV_DIR}"
  fi
  
  if [[ ! -d "${VENV_DIR}" ]]; then
    echo "Creating ${VENV_DIR}"
    "${PYTHON_BIN}" -m venv "${VENV_DIR}"
  else
    echo "Reusing ${VENV_DIR}"
  fi
  
  mkdir -p "${TMP_DIR}"
  export TMPDIR="${TMP_DIR}"
  PIP_ARGS=(--no-cache-dir)
  
  echo "Using TMPDIR=${TMPDIR}"
  "${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" --upgrade pip wheel
3d508beb   tangwang   reranker-4b-gguf
51
  "${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" -r "${REQ_FILE}"
07cf5a93   tangwang   START_EMBEDDING=...
52
  
5c21a485   tangwang   qwen3-reranker-0....
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  if [[ "${BACKEND}" == qwen3_gguf* ]]; then
    if [[ -x "/usr/local/cuda/bin/nvcc" ]]; then
      "${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" \
        cmake \
        ninja \
        scikit-build-core \
        flit_core \
        setuptools-scm
      echo "Rebuilding llama-cpp-python with CUDA support for ${BACKEND}"
      PATH="/usr/local/cuda/bin:/usr/bin:/bin" \
      CC="/usr/bin/x86_64-linux-gnu-gcc" \
      CXX="/usr/bin/x86_64-linux-gnu-g++" \
      CUDACXX="/usr/local/cuda/bin/nvcc" \
      CMAKE_ARGS="-DGGML_CUDA=on" \
      FORCE_CMAKE=1 \
      "${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" \
        --force-reinstall \
        --no-build-isolation \
        "llama-cpp-python==0.3.18"
    else
      echo "WARNING: /usr/local/cuda/bin/nvcc not found; ${BACKEND} will be installed without CUDA support." >&2
    fi
  fi
  
07cf5a93   tangwang   START_EMBEDDING=...
77
78
  echo
  echo "Done."
3d508beb   tangwang   reranker-4b-gguf
79
  echo "Backend: ${BACKEND}"
07cf5a93   tangwang   START_EMBEDDING=...
80
  echo "Reranker venv: ${VENV_DIR}"
3d508beb   tangwang   reranker-4b-gguf
81
  echo "Requirements: ${REQ_FILE}"
07cf5a93   tangwang   START_EMBEDDING=...
82
  echo "Start service: ./scripts/start_reranker.sh"