74 lines
2.0 KiB
Bash
74 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
||
# 在带 NVIDIA 显卡的 Linux 机器上安装 OCR Worker
|
||
set -euo pipefail
|
||
|
||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||
VENV="${ROOT}/.venv"
|
||
PORT="${OCR_PORT:-23567}"
|
||
|
||
echo "==> OCR Worker 安装目录: ${ROOT}"
|
||
|
||
if ! command -v python3 >/dev/null; then
|
||
echo "错误: 请先安装 python3"
|
||
exit 1
|
||
fi
|
||
|
||
if [[ -d "${VENV}" ]]; then
|
||
echo "==> 已有虚拟环境,跳过 python3 -m venv"
|
||
else
|
||
python3 -m venv "${VENV}"
|
||
fi
|
||
|
||
# shellcheck disable=SC1091
|
||
source "${VENV}/bin/activate"
|
||
pip install -U pip wheel
|
||
|
||
install_paddle() {
|
||
if command -v nvidia-smi >/dev/null 2>&1; then
|
||
local cuda_major
|
||
cuda_major="$(nvidia-smi 2>/dev/null | sed -n 's/.*CUDA Version: \([0-9]*\)\.[0-9]*/\1/p' | head -1)"
|
||
cuda_major="${cuda_major:-11}"
|
||
echo "==> 检测到 NVIDIA GPU,CUDA 主版本: ${cuda_major}"
|
||
if [[ "${cuda_major}" -ge 12 ]]; then
|
||
echo "==> 安装 paddlepaddle-gpu (CUDA 12.x)…"
|
||
pip install paddlepaddle-gpu==2.6.2 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/ \
|
||
|| pip install paddlepaddle-gpu==2.6.2 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
|
||
else
|
||
echo "==> 安装 paddlepaddle-gpu (CUDA 11.x)…"
|
||
pip install paddlepaddle-gpu==2.6.2 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
|
||
fi
|
||
else
|
||
echo "==> 未检测到 GPU,安装 CPU 版 paddlepaddle…"
|
||
pip install paddlepaddle==2.6.2
|
||
fi
|
||
}
|
||
|
||
install_paddle
|
||
pip install -r "${ROOT}/requirements.txt"
|
||
|
||
echo ""
|
||
echo "==> 验证依赖…"
|
||
python3 -c "import fastapi, uvicorn, paddle; print('paddle', paddle.__version__, 'OK')"
|
||
|
||
cat <<EOF
|
||
|
||
安装完成。
|
||
|
||
【重要】你已经在目录 ${ROOT} 时,不要再 cd deploy/ocr-worker,直接:
|
||
|
||
cd ${ROOT}
|
||
OCR_USE_GPU=true bash start.sh
|
||
|
||
另开终端测试(服务启动后):
|
||
curl -s http://127.0.0.1:${PORT}/health
|
||
|
||
应返回: {"status":"ok","gpu":true}
|
||
|
||
注册为 systemd 服务(推荐,后台常驻):
|
||
sudo bash ${ROOT}/install-service.sh
|
||
|
||
诊断:
|
||
bash ${ROOT}/check.sh
|
||
|
||
EOF
|