Spaces:
Sleeping
Sleeping
| # Production image — CPU-only inference, no training deps. | |
| # The fine-tuned encoder (~110M params) runs at ~tens of ms/sentence on CPU. | |
| FROM python:3.12-slim | |
| WORKDIR /app | |
| # CPU-only torch must be installed before other packages to prevent pip | |
| # from pulling in the full CUDA wheel via the default PyPI index. | |
| RUN pip install --no-cache-dir \ | |
| torch torchvision \ | |
| --index-url https://download.pytorch.org/whl/cpu | |
| # Inference-only deps (no training/eval packages) | |
| RUN pip install --no-cache-dir \ | |
| "transformers>=4.40" \ | |
| "fastapi>=0.110" \ | |
| "uvicorn[standard]>=0.29" \ | |
| "pydantic>=2.0" \ | |
| "pydantic-settings>=2.0" \ | |
| python-dotenv \ | |
| httpx \ | |
| rich \ | |
| numpy | |
| COPY src/ ./src/ | |
| COPY checkpoints/best/ ./checkpoints/best/ | |
| COPY frontend/ ./frontend/ | |
| # Copy results artifacts (summary.json + PNGs for dashboard). | |
| # /metrics returns 404 gracefully if summary.json is absent. | |
| COPY results/ ./results/ | |
| ENV PYTHONPATH=/app/src | |
| # PORT is set to 7860 by HuggingFace Spaces; defaults to 8000 for local Docker. | |
| ENV PORT=7860 | |
| EXPOSE 7860 | |
| EXPOSE 8000 | |
| CMD ["sh", "-c", "uvicorn finner.api.app:app --host 0.0.0.0 --port ${PORT} --workers 1"] | |