|
| 1 | +FROM nvidia/cuda:12.8.1-cudnn-devel-ubuntu24.04 |
| 2 | + |
| 3 | +# Non-interactive apt-get commands |
| 4 | +ARG DEBIAN_FRONTEND=noninteractive |
| 5 | + |
| 6 | +# No GPUs visible during build |
| 7 | +ARG CUDA_VISIBLE_DEVICES=none |
| 8 | + |
| 9 | +# Specify CUDA architectures -> 7.5: Quadro RTX 6000 & T4, 8.0: A100, 8.6: A40, 8.9: L40S, 9.0: H100 |
| 10 | +ARG TORCH_CUDA_ARCH_LIST="7.5;8.0;8.6;8.9;9.0+PTX" |
| 11 | + |
| 12 | +# Set the Python version |
| 13 | +ARG PYTHON_VERSION=3.12.12 |
| 14 | + |
| 15 | +# Install system dependencies |
| 16 | +RUN apt-get update && apt-get install -y \ |
| 17 | + wget build-essential libssl-dev zlib1g-dev libbz2-dev \ |
| 18 | + libreadline-dev libsqlite3-dev libffi-dev libncursesw5-dev \ |
| 19 | + xz-utils tk-dev libxml2-dev libxmlsec1-dev liblzma-dev libnuma1 \ |
| 20 | + git vim \ |
| 21 | + && rm -rf /var/lib/apt/lists/* |
| 22 | + |
| 23 | +# Install Python |
| 24 | +RUN wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz && \ |
| 25 | + tar -xzf Python-$PYTHON_VERSION.tgz && \ |
| 26 | + cd Python-$PYTHON_VERSION && \ |
| 27 | + ./configure --enable-optimizations && \ |
| 28 | + make -j$(nproc) && \ |
| 29 | + make altinstall && \ |
| 30 | + cd .. && \ |
| 31 | + rm -rf Python-$PYTHON_VERSION.tgz Python-$PYTHON_VERSION |
| 32 | + |
| 33 | +# Install pip and core Python tools |
| 34 | +RUN wget https://bootstrap.pypa.io/get-pip.py && \ |
| 35 | + python3.12 get-pip.py && \ |
| 36 | + rm get-pip.py && \ |
| 37 | + python3.12 -m pip install --upgrade pip setuptools wheel uv |
| 38 | + |
| 39 | +# Install RDMA support |
| 40 | +RUN apt-get update && apt-get install -y \ |
| 41 | + libibverbs1 libibverbs-dev ibverbs-utils \ |
| 42 | + librdmacm1 librdmacm-dev rdmacm-utils \ |
| 43 | + rdma-core ibverbs-providers infiniband-diags perftest \ |
| 44 | + && rm -rf /var/lib/apt/lists/* |
| 45 | + |
| 46 | +# Set up RDMA environment (these will persist in the final container) |
| 47 | +ENV LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" |
| 48 | +ENV NCCL_IB_DISABLE=0 |
| 49 | +ENV NCCL_SOCKET_IFNAME="^lo,docker0" |
| 50 | +ENV NCCL_NET_GDR_LEVEL=PHB |
| 51 | +ENV NCCL_IB_TIMEOUT=22 |
| 52 | +ENV NCCL_IB_RETRY_CNT=7 |
| 53 | +ENV NCCL_DEBUG=INFO |
| 54 | + |
| 55 | +# Set up project |
| 56 | +WORKDIR /vec-inf |
| 57 | +COPY . /vec-inf |
| 58 | + |
| 59 | +# Install project dependencies with sglang backend and inference group |
| 60 | +# Use --no-cache to prevent uv from storing both downloaded and extracted packages |
| 61 | +RUN uv pip install --system -e .[sglang] --group inference --prerelease=allow --no-cache && \ |
| 62 | + rm -rf /root/.cache/uv /tmp/* |
| 63 | + |
| 64 | +# Install a single, system NCCL (from NVIDIA CUDA repo in base image) |
| 65 | +RUN apt-get update && apt-get install -y --allow-change-held-packages\ |
| 66 | + libnccl2 libnccl-dev \ |
| 67 | + && rm -rf /var/lib/apt/lists/* |
| 68 | + |
| 69 | +# Set the default command to start an interactive shell |
| 70 | +CMD ["bash"] |
0 commit comments