From 2856ff7aeac763e88b095a47d9af503901c50035 Mon Sep 17 00:00:00 2001 From: "Chendi.Xue" Date: Wed, 6 May 2026 17:45:30 -0500 Subject: [PATCH] [XPU][DOCKER] update dockerfile.xpu after main repo updating to pt2.11 (#3393) Signed-off-by: Chendi Xue --- docker/Dockerfile.xpu | 49 +++++++++++-------- .../diffusion/offloader/sequential_backend.py | 6 ++- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/docker/Dockerfile.xpu b/docker/Dockerfile.xpu index f015059ed..4a3e675c2 100644 --- a/docker/Dockerfile.xpu +++ b/docker/Dockerfile.xpu @@ -14,8 +14,9 @@ RUN wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRO RUN apt clean && apt-get update -y && \ apt-get install -y --no-install-recommends --fix-missing \ curl \ - espeak-ng \ + ffmpeg \ git \ + libsndfile1 \ libsm6 \ libxext6 \ libgl1 \ @@ -28,8 +29,20 @@ RUN apt clean && apt-get update -y && \ python3.12-dev \ python3-pip -RUN apt update && apt upgrade -y && \ - apt install -y intel-oneapi-compiler-dpcpp-cpp-2025.3 +# 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/* # Install UMD with fixed version RUN mkdir neo && \ @@ -52,9 +65,9 @@ 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" -# This oneccl contains the BMG support which is not the case for default version of oneapi 2025.2. -ARG ONECCL_INSTALLER="intel-oneccl-2021.15.7.8_offline.sh" -RUN wget "https://github.com/uxlfoundation/oneCCL/releases/download/2021.15.7/${ONECCL_INSTALLER}" && \ +# 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}" && \ bash "${ONECCL_INSTALLER}" -a --silent --eula accept && \ rm "${ONECCL_INSTALLER}" && \ echo "source /opt/intel/oneapi/setvars.sh --force" >> /root/.bashrc && \ @@ -66,6 +79,7 @@ SHELL ["bash", "-c"] CMD ["bash", "-c", "source /root/.bashrc && exec bash"] WORKDIR /workspace/ + ENV UV_HTTP_TIMEOUT=500 # Configure package index for XPU @@ -80,18 +94,12 @@ WORKDIR /workspace/vllm RUN --mount=type=cache,target=/root/.cache/uv \ uv pip install --upgrade pip && \ - uv pip install -r requirements/xpu.txt - - # used for suffix method speculative decoding - # build deps for proto + nanobind-based extensions to set up the build environment -RUN --mount=type=cache,target=/root/.cache/uv \ - uv pip install grpcio-tools protobuf nanobind - # arctic-inference is built from source which needs torch-xpu properly installed first -RUN --mount=type=cache,target=/root/.cache/uv \ + uv pip install -r requirements/xpu.txt && \ + uv pip install setuptools_scm &&\ + uv pip install grpcio-tools protobuf nanobind && \ source /opt/intel/oneapi/setvars.sh --force && \ source /opt/intel/oneapi/ccl/2021.15/env/vars.sh --force && \ - export CMAKE_PREFIX_PATH="$(python -c 'import site; print(site.getsitepackages()[0])'):${CMAKE_PREFIX_PATH}" && \ - uv pip install --no-build-isolation arctic-inference==0.1.1 + export CMAKE_PREFIX_PATH="$(python3 -c 'import site; print(site.getsitepackages()[0])'):${CMAKE_PREFIX_PATH}" ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib/" @@ -105,6 +113,9 @@ CMD ["/bin/bash"] FROM vllm-base AS vllm-openai +# install nixl from source code +RUN uv pip install nixl + # 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 @@ -112,10 +123,6 @@ RUN --mount=type=cache,target=/root/.cache/uv \ # install development dependencies (for testing) RUN uv pip install -e tests/vllm_test_utils -# install nixl from source code -ENV NIXL_VERSION=0.7.0 -RUN python /workspace/vllm/tools/install_nixl_from_source_ubuntu.py - # ensure vllm is properly installed RUN python -c "import vllm, inspect; print(vllm.__file__)" RUN uv pip show vllm @@ -135,7 +142,7 @@ RUN uv pip install --no-cache-dir ".[dev]" --no-build-isolation # FIX triton RUN --mount=type=cache,target=/root/.cache/uv \ uv pip uninstall triton triton-xpu && \ - uv pip install triton-xpu==3.6.0 + uv pip install triton-xpu==3.7.0 # remove torch bundled oneccl to avoid conflicts RUN --mount=type=cache,target=/root/.cache/uv \ diff --git a/vllm_omni/diffusion/offloader/sequential_backend.py b/vllm_omni/diffusion/offloader/sequential_backend.py index 3f55372db..ad3e1b7c2 100644 --- a/vllm_omni/diffusion/offloader/sequential_backend.py +++ b/vllm_omni/diffusion/offloader/sequential_backend.py @@ -76,10 +76,14 @@ class SequentialOffloadHook(ModelHook): if param.device.type == "cpu": return + # XPU's allocator doesn't respect stream dependencies in empty_cache, + # so non-blocking copies can race with cache eviction. Use blocking + # copies on XPU to avoid NULL pointer errors during DMA. + non_blocking = not self.use_hsdp and not current_omni_platform.is_xpu() self._move_params( module, torch.device("cpu"), - non_blocking=not self.use_hsdp, + non_blocking=non_blocking, pin_memory=self.pin_memory, ) current_omni_platform.empty_cache()