File size: 2,771 Bytes
15560c8
 
d562dad
 
 
 
233c08c
d562dad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3a0960f
d562dad
3a0960f
 
c813a1c
 
 
d562dad
c813a1c
cecc2bd
692d4e7
 
3a0960f
 
233c08c
 
 
 
 
 
 
6c2a0d6
f662264
 
 
 
 
01fd498
3000e89
 
 
01fd498
 
 
 
 
24f26a3
8e3f0ad
24f26a3
 
 
 
 
3000e89
 
 
 
 
 
 
d562dad
 
 
 
 
 
 
3a0960f
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
74
75
76
77
78
79
80
81
82
83
84
85
86
# Use CUDA base image without CuDNN
FROM nvidia/cuda:12.3.2-runtime-ubuntu22.04

# Set environment variables
ENV DEBIAN_FRONTEND=noninteractive

# Create a user and set environment variables
RUN useradd -m -u 1000 user
USER user

ENV HOME=/home/user \
    CUDA_HOME=/usr/local/cuda \
    PATH=/home/user/.local/bin:$PATH \
    LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH} \
    LIBRARY_PATH=${CUDA_HOME}/lib64/stubs:${LIBRARY_PATH} \
    PYTHONPATH=$HOME/app \
    PYTHONUNBUFFERED=1 \
    GRADIO_ALLOW_FLAGGING=never \
    GRADIO_NUM_PORTS=1 \
    GRADIO_SERVER_NAME=0.0.0.0 \
    GRADIO_THEME=huggingface \
    GRADIO_SHARE=False \
    SYSTEM=spaces

# Set the working directory to the user's home directory
WORKDIR $HOME/app

# Switch to root to install system dependencies
USER root

# Install basic dependencies and add deadsnakes repository for Python 3.9
RUN apt-get update && apt-get install -y \
    wget \
    curl \
    git \
    software-properties-common \
    gnupg \
    libgl1-mesa-glx \
    libglib2.0-0 \
    && add-apt-repository ppa:deadsnakes/ppa -y \
    && apt-get update && apt-get install -y \
    python3.9 \
    python3.9-distutils \
    python3.9-dev \
    && curl -sS https://bootstrap.pypa.io/get-pip.py | python3.9 \
    && update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1 \
    && update-alternatives --install /usr/bin/pip pip /usr/local/bin/pip 1 \
    && apt-get clean

# Install CuDNN 9.3.0
RUN apt-get update && apt-get install -y \
    wget \
    && wget https://developer.download.nvidia.com/compute/cudnn/9.3.0/local_installers/cudnn-local-repo-ubuntu2204-9.3.0_1.0-1_amd64.deb \
    && dpkg -i cudnn-local-repo-ubuntu2204-9.3.0_1.0-1_amd64.deb \
    && cp /var/cudnn-local-repo-ubuntu2204-9.3.0/cudnn-local-D9334AA3-keyring.gpg /usr/share/keyrings/ \
    && apt-get update \
    && rm cudnn-local-repo-ubuntu2204-9.3.0_1.0-1_amd64.deb

# Check NVIDIA packages installed via pip (using || true to prevent non-zero exit)
RUN echo "Checking NVIDIA packages:" && pip list | grep nvidia || true

# Fix permissions for pip cache
RUN mkdir -p /home/user/.cache/pip && chown -R user:user /home/user/.cache

COPY . .
# Install your requirements
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
RUN pip install gradio

# Verify CuDNN installation
RUN ldconfig && echo "Testing CuDNN installation..." \
    && if [ -f /usr/local/cuda/include/cudnn.h ]; then \
       echo "CuDNN found in /usr/local/cuda/include/cudnn.h"; \
       cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2; \
    fi

USER user

# Set the environment variable to specify the GPU device
ENV CUDA_DEVICE_ORDER=PCI_BUS_ID
ENV CUDA_VISIBLE_DEVICES=0

# Command to run your application
CMD ["python", "app.py"]