Spaces:
Sleeping
Sleeping
| # Qubit-Medic OpenEnv server container. | |
| # | |
| # This image ships ONLY the env-server code: | |
| # * stim + pymatching - quantum simulation + matching baseline | |
| # * fastapi + uvicorn - HTTP transport | |
| # * openenv-core - canonical OpenEnv contract (/reset, /step, | |
| # /state, /health, /schema, /metadata, /mcp, | |
| # /docs) | |
| # | |
| # Heavy ML training deps (torch, transformers, trl, unsloth) are | |
| # deliberately NOT installed - they live in requirements-train.txt and | |
| # are installed only by the Colab training notebook. Keeping the Spaces | |
| # image lean avoids the ~10 GB CUDA wheel that would blow the free tier. | |
| FROM python:3.11-slim AS base | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| PIP_NO_CACHE_DIR=1 \ | |
| PIP_DISABLE_PIP_VERSION_CHECK=1 | |
| # Stim and PyMatching ship manylinux wheels - no system C++ deps needed | |
| # beyond libstdc++. We keep build-essential as a safety net for any | |
| # unexpected source-fallback path on the build host. | |
| RUN apt-get update \ | |
| && apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| ca-certificates \ | |
| curl \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # HF Spaces best-practice: run as non-root user with UID 1000. | |
| RUN useradd -m -u 1000 user | |
| USER user | |
| ENV PATH="/home/user/.local/bin:$PATH" | |
| WORKDIR /app | |
| COPY --chown=user requirements.txt /app/requirements.txt | |
| RUN pip install --user --upgrade pip \ | |
| && pip install --user -r /app/requirements.txt | |
| COPY --chown=user qubit_medic /app/qubit_medic | |
| COPY --chown=user README.md /app/README.md | |
| # Pre-warm Stim/PyMatching caches at build time so the first request | |
| # after `docker run` has near-zero latency (Section 9.1 of the plan). | |
| RUN python -c "from qubit_medic.server.environment import DecoderEnvironment; \ | |
| e = DecoderEnvironment(); \ | |
| e._cache_for('L1_warmup'); \ | |
| e._cache_for('L2_target')" | |
| EXPOSE 7860 | |
| ENV LOG_LEVEL=INFO \ | |
| QUBIT_MEDIC_HOST=0.0.0.0 \ | |
| QUBIT_MEDIC_PORT=7860 | |
| # Boots the FastAPI app (qubit_medic.server.app) which is built on top | |
| # of openenv.core.create_fastapi_app. | |
| CMD ["python", "-m", "qubit_medic.server.app"] | |