74 lines
2.6 KiB
Docker
74 lines
2.6 KiB
Docker
ARG BASE_IMAGE=vllm/vllm-openai-rocm:v0.24.0
|
|
FROM ${BASE_IMAGE} AS base
|
|
|
|
# Declare a variable to know if we want to use the nightly build or the stable build.
|
|
# NOTE: REMINDER to vLLM-Omni rebase maintainer
|
|
# Remember to set `USE_NIGHTLY_BUILD` to 0, when switching back to stable vLLM docker image
|
|
# 1. If vLLM-omni maintainer is forced to use custom commits
|
|
# during rebasing, they can change the two variables
|
|
# 2. Whenever vLLM upstream has released a stable version,
|
|
# we should swap over to use stable release ASAP.
|
|
# We should avoid relying on custom commits.
|
|
ARG USE_NIGHTLY_BUILD=0
|
|
ARG VLLM_VERSION_OR_COMMIT_HASH=89138b21cc246ae944c741d5c399c148e2b770ab
|
|
ARG ARG_PYTORCH_ROCM_ARCH
|
|
ENV PYTORCH_ROCM_ARCH=${ARG_PYTORCH_ROCM_ARCH:-${PYTORCH_ROCM_ARCH}}
|
|
|
|
ARG COMMON_WORKDIR=/app
|
|
WORKDIR ${COMMON_WORKDIR}
|
|
|
|
# Step 1: Setup - Install system dependencies
|
|
# Need to include ffmpeg because vllm rocm upstream docker image
|
|
# does not include it.
|
|
RUN apt-get update && \
|
|
apt-get install -y espeak-ng ffmpeg git jq && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Step 2: Conditionally reinstall vllm from source for nightly builds
|
|
RUN if [ "${USE_NIGHTLY_BUILD}" = "1" ]; then \
|
|
python3 -m pip uninstall -y vllm && rm -rf vllm && \
|
|
git clone https://github.com/vllm-project/vllm.git && \
|
|
cd vllm && \
|
|
git checkout ${VLLM_VERSION_OR_COMMIT_HASH} && \
|
|
python3 -m pip install -r requirements/rocm.txt && \
|
|
python3 setup.py clean --all && \
|
|
PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH} python3 setup.py develop && \
|
|
cd ../ && \
|
|
rm -rf vllm/.git; \
|
|
fi
|
|
|
|
# Step 3: Copy vllm-omni code and install without uv
|
|
RUN mkdir -p ${COMMON_WORKDIR}/vllm-omni
|
|
COPY . ${COMMON_WORKDIR}/vllm-omni
|
|
|
|
# This is a workaround to ensure pytest exits with the correct status code in CI tests.
|
|
RUN printf '%s\n' \
|
|
'import os' \
|
|
'' \
|
|
'_exit_code = 1' \
|
|
'' \
|
|
'def pytest_sessionfinish(session, exitstatus):' \
|
|
' global _exit_code' \
|
|
' _exit_code = int(exitstatus)' \
|
|
'' \
|
|
'def pytest_unconfigure(config):' \
|
|
' import sys' \
|
|
' sys.stdout.flush()' \
|
|
' sys.stderr.flush()' \
|
|
' os._exit(_exit_code)' \
|
|
> ${COMMON_WORKDIR}/vllm-omni/conftest.py
|
|
|
|
RUN cd ${COMMON_WORKDIR}/vllm-omni && uv pip install --python "$(python3 -c 'import sys; print(sys.executable)')" --no-cache-dir ".[dev]" --no-build-isolation
|
|
|
|
RUN ln -sf /usr/bin/python3 /usr/bin/python
|
|
|
|
FROM base AS test
|
|
|
|
CMD ["/bin/bash"]
|
|
ENTRYPOINT []
|
|
|
|
# Set entrypoint for vllm-openai official images
|
|
FROM base AS vllm-openai
|
|
ENTRYPOINT ["vllm", "serve", "--omni"]
|