| | ARG BASE_IMAGE=pytorch/pytorch:2.5.1-cuda12.1-cudnn9-runtime |
| | ARG MODEL_SIZE=base_plus |
| |
|
| | FROM ${BASE_IMAGE} |
| |
|
| | |
| | ENV GUNICORN_WORKERS=1 |
| | ENV GUNICORN_THREADS=2 |
| | ENV GUNICORN_PORT=5000 |
| |
|
| | |
| | ENV APP_ROOT=/opt/sam2 |
| | ENV PYTHONUNBUFFERED=1 |
| | ENV SAM2_BUILD_CUDA=0 |
| | ENV MODEL_SIZE=${MODEL_SIZE} |
| |
|
| | |
| | RUN apt-get update && apt-get install -y --no-install-recommends \ |
| | ffmpeg \ |
| | libavutil-dev \ |
| | libavcodec-dev \ |
| | libavformat-dev \ |
| | libswscale-dev \ |
| | pkg-config \ |
| | build-essential \ |
| | libffi-dev |
| |
|
| | COPY setup.py . |
| | COPY README.md . |
| |
|
| | RUN pip install --upgrade pip setuptools |
| | RUN pip install -e ".[interactive-demo]" |
| |
|
| | |
| | RUN rm /opt/conda/bin/ffmpeg && ln -s /bin/ffmpeg /opt/conda/bin/ffmpeg |
| |
|
| | |
| | |
| | RUN mkdir ${APP_ROOT} |
| |
|
| | |
| | COPY demo/backend/server ${APP_ROOT}/server |
| |
|
| | |
| | COPY sam2 ${APP_ROOT}/server/sam2 |
| |
|
| | |
| | ADD https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt ${APP_ROOT}/checkpoints/sam2.1_hiera_tiny.pt |
| | ADD https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_small.pt ${APP_ROOT}/checkpoints/sam2.1_hiera_small.pt |
| | ADD https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_base_plus.pt ${APP_ROOT}/checkpoints/sam2.1_hiera_base_plus.pt |
| | ADD https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_large.pt ${APP_ROOT}/checkpoints/sam2.1_hiera_large.pt |
| |
|
| | WORKDIR ${APP_ROOT}/server |
| |
|
| | |
| | CMD gunicorn --worker-tmp-dir /dev/shm \ |
| | --worker-class gthread app:app \ |
| | --log-level info \ |
| | --access-logfile /dev/stdout \ |
| | --log-file /dev/stderr \ |
| | --workers ${GUNICORN_WORKERS} \ |
| | --threads ${GUNICORN_THREADS} \ |
| | --bind 0.0.0.0:${GUNICORN_PORT} \ |
| | --timeout 60 |
| |
|