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"]