1+ FROM docker.io/vllm/vllm-openai:v0.10.2 as base
2+ ARG PYTHON="python3"
3+ LABEL maintainer="Amazon AI"
4+ ARG EFA_VERSION="1.43.3"
5+ LABEL dlc_major_version="1"
6+ ENV DEBIAN_FRONTEND=noninteractive \
7+ LANG=C.UTF-8 \
8+ LC_ALL=C.UTF-8 \
9+ DLC_CONTAINER_TYPE=base \
10+ # Python won’t try to write .pyc or .pyo files on the import of source modules
11+ # Force stdin, stdout and stderr to be totally unbuffered. Good for logging
12+ PYTHONDONTWRITEBYTECODE=1 \
13+ PYTHONUNBUFFERED=1 \
14+ PYTHONIOENCODING=UTF-8 \
15+ LD_LIBRARY_PATH="/usr/local/lib:/opt/amazon/ofi-nccl/lib/x86_64-linux-gnu:/opt/amazon/openmpi/lib:/opt/amazon/efa/lib:/usr/local/cuda/lib64:${LD_LIBRARY_PATH}" \
16+ PATH="/opt/amazon/openmpi/bin:/opt/amazon/efa/bin:/usr/local/cuda/bin:${PATH}"
17+
18+ WORKDIR /
19+
20+ COPY deep_learning_container.py /usr/local/bin/deep_learning_container.py
21+ COPY bash_telemetry.sh /usr/local/bin/bash_telemetry.sh
22+ COPY install_efa.sh install_efa.sh
23+
24+ RUN chmod +x /usr/local/bin/deep_learning_container.py && \
25+ chmod +x /usr/local/bin/bash_telemetry.sh && \
26+ echo 'source /usr/local/bin/bash_telemetry.sh' >> /etc/bash.bashrc && \
27+ # OSS compliance - use Python zipfile instead of unzip
28+ HOME_DIR=/root && \
29+ curl -o ${HOME_DIR}/oss_compliance.zip https://aws-dlinfra-utilities.s3.amazonaws.com/oss_compliance.zip && \
30+ python3 -c "import zipfile, os; zipfile.ZipFile('/root/oss_compliance.zip').extractall('/root/'); os.remove('/root/oss_compliance.zip')" && \
31+ cp ${HOME_DIR}/oss_compliance/test/testOSSCompliance /usr/local/bin/testOSSCompliance && \
32+ chmod +x /usr/local/bin/testOSSCompliance && \
33+ chmod +x ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh && \
34+ ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh ${HOME_DIR} ${PYTHON} && \
35+ # create symlink for python
36+ ln -s /usr/bin/python3 /usr/bin/python && \
37+ # clean up
38+ rm -rf ${HOME_DIR}/oss_compliance* && \
39+ rm -rf /tmp/tmp* && \
40+ rm -rf /tmp/uv* && \
41+ rm -rf /var/lib/apt/lists/* && \
42+ rm -rf /root/.cache | true
43+
44+
45+ RUN bash install_efa.sh ${EFA_VERSION} && \
46+ rm install_efa.sh && \
47+ mkdir -p /tmp/nvjpeg \
48+ && cd /tmp/nvjpeg \
49+ && wget https://developer.download.nvidia.com/compute/cuda/redist/libnvjpeg/linux-x86_64/libnvjpeg-linux-x86_64-12.4.0.76-archive.tar.xz \
50+ && tar -xvf libnvjpeg-linux-x86_64-12.4.0.76-archive.tar.xz \
51+ && rm -rf /usr/local/cuda/targets/x86_64-linux/lib/libnvjpeg* \
52+ && rm -rf /usr/local/cuda/targets/x86_64-linux/include/nvjpeg.h \
53+ && cp libnvjpeg-linux-x86_64-12.4.0.76-archive/lib/libnvjpeg* /usr/local/cuda/targets/x86_64-linux/lib/ \
54+ && cp libnvjpeg-linux-x86_64-12.4.0.76-archive/include/* /usr/local/cuda/targets/x86_64-linux/include/ \
55+ && rm -rf /tmp/nvjpeg \
56+ # remove cuobjdump and nvdisasm
57+ && rm -rf /usr/local/cuda/bin/cuobjdump* \
58+ && rm -rf /usr/local/cuda/bin/nvdisasm*
59+
60+ # ====================== ray serve =========================================
61+ FROM base AS vllm-rayserve-ec2
62+
63+ RUN uv pip install --system ray[serve]==2.49.0 && \
64+ uv cache clean \
65+ apt-get upgrade && \
66+ apt-get upgrade -y && \
67+ apt-get clean
68+
69+ COPY dockerd_entrypoint.sh /usr/local/bin/dockerd_entrypoint.sh
70+ RUN chmod +x /usr/local/bin/dockerd_entrypoint.sh
71+
72+ ENTRYPOINT ["/usr/local/bin/dockerd_entrypoint.sh"]
0 commit comments