VAR-RFDETR / Dockerfile
mirrash7's picture
VAR-RFDETR: RF-DETR-Seg large detector with box/segment toggle
82b93d3 verified
Raw
History Blame Contribute Delete
2.39 kB
# A100 / dedicated-GPU Hugging Face Space (Docker SDK).
# Models load once at boot and stay warm; pause the Space to stop billing.
FROM pytorch/pytorch:2.4.1-cuda12.1-cudnn9-runtime
ENV DEBIAN_FRONTEND=noninteractive \
PYOPENGL_PLATFORM=egl \
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
SAM3D_DIR=/app/sam-3d-body \
HF_HOME=/app/.cache/huggingface
# System libs for OpenCV / pyrender / video decoding, plus a C++ toolchain.
# build-essential is required because the runtime base ships no compiler and
# detectron2 (a1ce2f9) builds its ops from source against the installed torch.
RUN apt-get update && apt-get install -y --no-install-recommends \
git ffmpeg libgl1 libglib2.0-0 libosmesa6 libegl1 \
build-essential ninja-build \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Clone the model repo (added to sys.path by pipeline/gpu.py via SAM3D_DIR)
RUN git clone https://github.com/facebookresearch/sam-3d-body.git /app/sam-3d-body
# Python deps. detectron2 is pinned to a1ce2f9 and built --no-build-isolation
# --no-deps so it compiles against the torch already in the base image — the
# single most fragile step; the pinned base keeps it reproducible.
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt \
&& pip install --no-cache-dir \
"git+https://github.com/facebookresearch/detectron2.git@a1ce2f9" --no-build-isolation --no-deps \
&& pip install --no-cache-dir "git+https://github.com/microsoft/MoGe.git"
# Runtime cache redirection. HF Spaces runs as a non-root user with HOME=/, so
# anything writing to ~/.cache (torch.hub clones DINOv3 here at model load,
# matplotlib, fontconfig, ...) hits a read-only /.cache. These are only needed at
# runtime, so they sit BELOW the pip layer to keep that expensive layer cached.
ENV HOME=/app \
XDG_CACHE_HOME=/app/.cache \
TORCH_HOME=/app/.cache/torch \
MPLCONFIGDIR=/app/.cache/matplotlib
# App (UI + the pipeline package; GPU code is isolated in pipeline/gpu.py)
COPY app.py /app/app.py
COPY pipeline /app/pipeline
# Writable cache + home (HF Spaces runs as a non-root user). torch.hub needs to
# clone into TORCH_HOME at runtime, so the whole /app tree must be writable.
RUN mkdir -p /app/.cache/huggingface /app/.cache/torch /app/.cache/matplotlib \
&& chmod -R 777 /app
EXPOSE 7860
CMD ["python", "app.py"]