#!/usr/bin/env bash set -euo pipefail # Optional: activate local virtualenv if present if [ -d ".venv" ]; then # shellcheck disable=SC1091 source ".venv/bin/activate" fi # Model configuration (can be overridden via env) export FACE_MODEL_NAME="${FACE_MODEL_NAME:-buffalo_l}" export FACE_DET_SIZE="${FACE_DET_SIZE:-1024}" # Tune CPU thread usage and workers CPU_CORES="$(nproc || echo 4)" DEFAULT_WORKERS="${CPU_CORES}" if [ "$DEFAULT_WORKERS" -lt 2 ]; then DEFAULT_WORKERS=2 fi export OMP_NUM_THREADS="${OMP_NUM_THREADS:-2}" export MKL_NUM_THREADS="${MKL_NUM_THREADS:-2}" WORKERS="${UVICORN_WORKERS:-$DEFAULT_WORKERS}" # Match genealog-api FACE_SERVICE_URL: http://host.docker.internal:18081 PORT="${PORT:-18081}" echo "Starting face service on port ${PORT} with ${WORKERS} workers (CPU cores: ${CPU_CORES})" exec uvicorn app.main:app \ --host 0.0.0.0 \ --port "${PORT}" \ --workers "${WORKERS}" \ --loop uvloop \ --http httptools