| #!/usr/bin/env bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| set -euo pipefail |
|
|
| cd "$(dirname "$0")" |
| PY=${PYTHON:-python3} |
|
|
| |
| |
| if command -v uv >/dev/null 2>&1; then |
| pip_install() { uv pip install --python "$PY" "$@"; } |
| elif "$PY" -m pip --version >/dev/null 2>&1; then |
| pip_install() { "$PY" -m pip install "$@"; } |
| elif "$PY" -m ensurepip --upgrade >/dev/null 2>&1; then |
| pip_install() { "$PY" -m pip install "$@"; } |
| else |
| echo "no installer found for $PY -- install pip (python -m ensurepip) or uv, then re-run" >&2 |
| exit 1 |
| fi |
|
|
| detect_cuda() { |
| command -v nvidia-smi >/dev/null 2>&1 || { echo cpu; return; } |
| local v |
| v=$(nvidia-smi 2>/dev/null | sed -n 's/.*CUDA Version: \([0-9]*\)\.\([0-9]*\).*/\1/p' | head -1) |
| case "$v" in |
| |
| |
| 12) echo cu124 ;; |
| 13|1[4-9]) echo cu130 ;; |
| "") echo cpu ;; |
| *) echo cu124 ;; |
| esac |
| } |
|
|
| CUDA=${IDP_CUDA:-$(detect_cuda)} |
| INDEX=https://download.pytorch.org/whl/$CUDA |
|
|
| echo "==> target: $CUDA" |
| [ "$CUDA" = cpu ] && echo " (no GPU detected -- layout runs fine on CPU, the recognizer is slow)" |
|
|
| echo "==> torch + torchvision, together, from $INDEX" |
| pip_install torch torchvision --index-url "$INDEX" |
|
|
| echo "==> everything else" |
| pip_install -r requirements.txt |
|
|
| echo "==> checking" |
| $PY - <<'PY' |
| import torch, torchvision, transformers |
| print(f" torch {torch.__version__}") |
| print(f" torchvision {torchvision.__version__}") |
| print(f" transformers {transformers.__version__}") |
| print(f" cuda {'yes, ' + torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'NO -- running on CPU'}") |
| import sys; sys.path.insert(0, ".") |
| from indic_doc_parser import IndicDocParser |
| print(" import ok") |
| PY |
| echo "==> done" |
|
|