File size: 2,276 Bytes
51e2968 168994c 68dc224 2b95bf9 168994c 7d2a4e5 168994c 68dc224 e4d9239 7c9dc12 f8ffa65 168994c 68dc224 2abab92 1feb37d 68dc224 168994c 7c9dc12 68dc224 2abab92 68dc224 f8ffa65 68dc224 168994c 68dc224 168994c 68dc224 168994c 68dc224 7242c03 68dc224 7242c03 68dc224 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
FROM python:3.11-slim-bullseye
# Install system dependencies with clean up in single RUN layer
RUN sed -i 's/main/main contrib non-free/' /etc/apt/sources.list && \
apt-get update && \
apt-get install -y --no-install-recommends \
unrar \
libgl1 \
libglib2.0-0 \
# ffmpeg for video processing
ffmpeg \
# git for transformers dependencies
git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Upgrade pip and install core dependencies first
RUN pip install --no-cache-dir --upgrade pip setuptools wheel packaging
# Install optimized CPU-only PyTorch stack
RUN pip install --no-cache-dir \
"numpy<2" \
torch==2.1.2+cpu \
torchvision==0.16.2+cpu \
torchaudio==2.1.2+cpu \
--index-url https://download.pytorch.org/whl/cpu
# Copy requirements and install with special handling
COPY requirements.txt .
RUN pip install --no-cache-dir \
-r requirements.txt \
--find-links https://download.pytorch.org/whl/cpu \
--extra-index-url https://pypi.org/simple
# Install transformers with specific version that works with BLIP-2
RUN pip install --no-cache-dir \
accelerate==0.27.2 \
transformers==4.36.2 \
timm==0.9.12 \
einops==0.7.0 \
bitsandbytes==0.42.0 # Helps with memory optimization
# For BLIP-2 specifically, we need these
RUN pip install --no-cache-dir \
protobuf==3.20.3 \
sentencepiece==0.2.0
# Copy application code with proper permissions
COPY --chown=1000:1000 . .
# Create non-root user and set permissions
RUN useradd -m -u 1000 user && \
chown -R user:user /app && \
mkdir -p /app/downloads /app/extracted /app/extracted_frames /app/analysis_results && \
chown -R user:user /app/*
USER user
# Environment variables for better performance and less logging
ENV HF_HUB_DISABLE_PROGRESS=1
ENV TF_CPP_MIN_LOG_LEVEL=3
ENV PYTORCH_NO_CUDA_MEMORY_CACHING=1
ENV TOKENIZERS_PARALLELISM=false
ENV PYTHONUNBUFFERED=1
# Set this if you're only using CPU
ENV CUDA_VISIBLE_DEVICES=""
# Pre-download the BLIP-2 model during build (optional)
# RUN python -c "from transformers import AutoModel; AutoModel.from_pretrained('Salesforce/blip2-opt-2.7b', trust_remote_code=True)"
CMD ["uvicorn", "download_api:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "1"] |