2026-02-20 13:33:48 +08:00
# Argument to configure vllm base image if pre-built
ARG VLLM_BASE = vllm-base
FROM intel/deep-learning-essentials:2025.3.2-0-devel-ubuntu24.04 AS vllm-base
WORKDIR /workspace /
ARG PYTHON_VERSION = 3 .12
ARG PIP_EXTRA_INDEX_URL = "https://download.pytorch.org/whl/xpu"
RUN wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null && \
2026-03-04 22:52:00 +08:00
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list
2026-02-20 13:33:48 +08:00
RUN apt clean && apt-get update -y && \
apt-get install -y --no-install-recommends --fix-missing \
curl \
2026-05-06 17:45:30 -05:00
ffmpeg \
2026-02-20 13:33:48 +08:00
git \
2026-05-06 17:45:30 -05:00
libsndfile1 \
2026-02-20 13:33:48 +08:00
libsm6 \
libxext6 \
libgl1 \
lsb-release \
libaio-dev \
numactl \
wget \
vim \
python3.12 \
python3.12-dev \
python3-pip
2026-05-06 17:45:30 -05:00
# Add oneAPI repo, pin oneAPI to 2025.3, then install pinned packages in one layer.
RUN wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null && \
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list && \
printf '%s\n' \
'Package: intel-oneapi-* intel-deep-learning-essentials* intel-pti*' \
'Pin: version 2025.3*' \
'Pin-Priority: 1001' \
> /etc/apt/preferences.d/oneapi-2025.3.pref && \
apt-get update -y && \
apt-get install -y --no-install-recommends \
intel-oneapi-compiler-dpcpp-cpp-2025.3 \
intel-oneapi-mkl-devel-2025.3 \
intel-oneapi-dnnl-devel-2025.3 && \
rm -rf /var/lib/apt/lists/*
2026-02-20 13:33:48 +08:00
2026-03-04 22:52:00 +08:00
# Install UMD with fixed version
RUN mkdir neo && \
cd neo && \
wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.24.8/intel-igc-core-2_2.24.8+20344_amd64.deb && \
wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.24.8/intel-igc-opencl-2_2.24.8+20344_amd64.deb && \
wget https://github.com/intel/compute-runtime/releases/download/25.48.36300.8/intel-ocloc_25.48.36300.8-0_amd64.deb && \
wget https://github.com/intel/compute-runtime/releases/download/25.48.36300.8/intel-opencl-icd_25.48.36300.8-0_amd64.deb && \
wget https://github.com/intel/compute-runtime/releases/download/25.48.36300.8/libigdgmm12_22.8.2_amd64.deb && \
wget https://github.com/intel/compute-runtime/releases/download/25.48.36300.8/libze-intel-gpu1_25.48.36300.8-0_amd64.deb && \
wget https://github.com/oneapi-src/level-zero/releases/download/v1.26.0/level-zero_1.26.0+u24.04_amd64.deb && \
dpkg -i *.deb && \
cd .. && \
rm -rf neo
2026-02-20 13:33:48 +08:00
ENV PATH = "/root/.local/bin: $PATH "
ENV VIRTUAL_ENV = "/opt/venv"
ENV UV_PYTHON_INSTALL_DIR = /opt/uv/python
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
RUN uv venv --python ${ PYTHON_VERSION } --seed ${ VIRTUAL_ENV }
ENV PATH = " $VIRTUAL_ENV /bin: $PATH "
2026-05-06 17:45:30 -05:00
# This oneccl contains the BMG support which is not the case for default version of oneapi 2025.3.
ARG ONECCL_INSTALLER = "intel-oneccl-2021.15.9.14_offline.sh"
RUN wget "https://github.com/uxlfoundation/oneCCL/releases/download/2021.15.9/ ${ ONECCL_INSTALLER } " && \
2026-02-20 13:33:48 +08:00
bash " ${ ONECCL_INSTALLER } " -a --silent --eula accept && \
rm " ${ ONECCL_INSTALLER } " && \
echo "source /opt/intel/oneapi/setvars.sh --force" >> /root/.bashrc && \
echo "source /opt/intel/oneapi/ccl/2021.15/env/vars.sh --force" >> /root/.bashrc
RUN rm -f /opt/intel/oneapi/ccl/latest && \
ln -s /opt/intel/oneapi/ccl/2021.15 /opt/intel/oneapi/ccl/latest
SHELL [ "bash" , "-c" ]
CMD [ "bash" , "-c" , "source /root/.bashrc && exec bash" ]
WORKDIR /workspace /
2026-05-06 17:45:30 -05:00
2026-02-20 13:33:48 +08:00
ENV UV_HTTP_TIMEOUT = 500
# Configure package index for XPU
ENV PIP_EXTRA_INDEX_URL = ${ PIP_EXTRA_INDEX_URL }
ENV UV_EXTRA_INDEX_URL = ${ PIP_EXTRA_INDEX_URL }
ENV UV_INDEX_STRATEGY = "unsafe-best-match"
ENV UV_LINK_MODE = "copy"
2026-06-30 19:41:06 +08:00
ARG VLLM_VERSION = v0.24.0
2026-02-20 13:33:48 +08:00
RUN git clone -b ${ VLLM_VERSION } https://github.com/vllm-project/vllm
WORKDIR /workspace/vllm
RUN --mount= type = cache,target= /root/.cache/uv \
uv pip install --upgrade pip && \
2026-05-06 17:45:30 -05:00
uv pip install -r requirements/xpu.txt && \
uv pip install setuptools_scm && \
uv pip install grpcio-tools protobuf nanobind && \
2026-02-20 13:33:48 +08:00
source /opt/intel/oneapi/setvars.sh --force && \
source /opt/intel/oneapi/ccl/2021.15/env/vars.sh --force && \
2026-05-06 17:45:30 -05:00
export CMAKE_PREFIX_PATH = " $( python3 -c 'import site; print(site.getsitepackages()[0])' ) : ${ CMAKE_PREFIX_PATH } "
2026-02-20 13:33:48 +08:00
2026-06-24 01:04:04 -05:00
ENV LD_LIBRARY_PATH = "/opt/intel/oneapi/ccl/2021.15/lib: $LD_LIBRARY_PATH :/usr/local/lib/"
2026-02-20 13:33:48 +08:00
ENV VLLM_TARGET_DEVICE = xpu
ENV VLLM_WORKER_MULTIPROC_METHOD = spawn
RUN --mount= type = cache,target= /root/.cache/uv \
2026-06-30 22:51:06 -05:00
uv pip uninstall triton triton-xpu && \
uv pip install triton-xpu== 3.7.1 && \
uv pip install --no-build-isolation --no-deps .
2026-02-20 13:33:48 +08:00
CMD [ "/bin/bash" ]
FROM vllm-base AS vllm-openai
2026-05-06 17:45:30 -05:00
# install nixl from source code
RUN uv pip install nixl
2026-02-20 13:33:48 +08:00
# install additional dependencies for openai api server
RUN --mount= type = cache,target= /root/.cache/uv \
uv pip install accelerate hf_transfer pytest pytest_asyncio lm_eval[ api] modelscope
# install development dependencies (for testing)
RUN uv pip install -e tests/vllm_test_utils
# ensure vllm is properly installed
RUN python -c "import vllm, inspect; print(vllm.__file__)"
RUN uv pip show vllm
CMD [ "/bin/bash" ]
ENTRYPOINT []
FROM ${VLLM_BASE } AS vllm-omni
2026-05-19 23:40:08 -05:00
RUN apt-get update && \
apt-get install -y espeak-ng ffmpeg git jq && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
2026-02-20 13:33:48 +08:00
WORKDIR /workspace/vllm-omni
COPY . .
ENV VLLM_OMNI_TARGET_DEVICE = xpu
RUN --mount= type = cache,target= /root/.cache/uv \
2026-06-12 21:59:15 -05:00
uv pip install --no-build-isolation \
--extra-index-url https://mirrors.ustc.edu.cn/pypi/simple/ \
".[dev]" && \
2026-06-30 22:51:06 -05:00
uv pip uninstall triton oneccl oneccl-devel && \
uv pip install triton-xpu== 3.7.1 --reinstall
2026-02-20 13:33:48 +08:00
FROM vllm-omni AS vllm-omni-openai
RUN ln -sf /usr/bin/python3 /usr/bin/python
ENV VLLM_WORKER_MULTIPROC_METHOD = spawn
ENTRYPOINT [ "vllm" , "serve" , "--omni" ]