Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions .buildkite/hardware_tests/cpu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,13 @@ steps:
- tests/models/language/generation/
- tests/models/language/pooling/
- tests/v1/e2e/test_cpu_linear_attn_chunked_prefix.py
# RELEASE-ONLY: torch 2.14.0 makes this shard ~2.6x slower than 2.13 (pytest phase
# 1473-1593s on 2.13 vs 3969s on 2.14), so the old 50m limit killed it mid-run.
# 90m is enough: it now completes in ~66m. Revert once
# https://github.com/pytorch/pytorch/issues/193951 is resolved.
commands:
- |
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 25m "
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 45m "
pytest -x -v -s tests/models/language/generation tests/models/language/pooling tests/v1/e2e/test_cpu_linear_attn_chunked_prefix.py -m cpu_model --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB"
parallelism: 3

Expand Down Expand Up @@ -191,9 +195,14 @@ steps:
# - vllm/
- vllm/model_executor/layers/rotary_embedding
- tests/models/multimodal/generation/
# RELEASE-ONLY: torch 2.14.0 makes these shards up to ~6.6x slower than 2.13
# (Multi-Modal 2 pytest phase: 711-781s on 2.13 vs 4924s on 2.14). Shard 1 is the
# heaviest and still exceeded 90m, so this is raised to 120m. Shards 2-4 finish
# well under it. Revert once
# https://github.com/pytorch/pytorch/issues/193951 is resolved.
commands:
- |
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 45m "
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 120m "
pytest -x -v -s tests/models/multimodal/generation --ignore=tests/models/multimodal/generation/test_pixtral.py --ignore=tests/models/multimodal/generation/test_qwen2_5_vl.py -m cpu_model --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB"
parallelism: 4

Expand Down
9 changes: 9 additions & 0 deletions .buildkite/image_build/image_build_cpu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,14 @@ else
docker buildx inspect --bootstrap

# build and push
# RELEASE-ONLY (torch 2.14.0): --no-cache is required because the RC is
# republished to the PyTorch test channel under an unchanging version string.
# torch is installed in the `base-common` stage, upstream of the source COPY,
# so its layer key depends only on the base image and requirements/cpu.txt --
# neither of which changes on a respin or a rebase. Without this, the ECR
# registry cache below restores the layer and torch is never re-resolved
# (build 84705: 28 CACHED layers, zero torch downloads). Revert once 2.14.0 is
# final and published to PyPI.
docker buildx build --file docker/Dockerfile.cpu \
--build-arg max_jobs=16 \
--build-arg buildkite_commit="$BUILDKITE_COMMIT" \
Expand All @@ -109,6 +117,7 @@ else
"${PYTORCH_NIGHTLY_ARGS[@]}" \
--tag "$IMAGE" \
--target vllm-test \
--no-cache \
"${CACHE_FROM_ARGS[@]}" \
--cache-to "type=registry,ref=${CACHE_TO},mode=max" \
--push \
Expand Down
32 changes: 18 additions & 14 deletions .buildkite/scripts/check-ray-compatibility.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,28 @@ trap 'rm -rf "$WORK_DIR"' EXIT

# ── Detect PyTorch index URL ─────────────────────────────────────────────

# Offer the resolver every channel that could serve the installed torch and let
# uv (run below with --index-strategy unsafe-best-match) pick whichever one
# actually has the pinned version. For CUDA we pass both the stable and the test
# channels: release candidates live on the test channel until they are promoted
# to stable, so a stable-only index breaks RC validation (e.g. a torch==X.Y.Z pin
# from nixl-cuNN that is only published to /whl/test). Both channels are added
# unconditionally rather than probing the directory listing, since those listings
# are not reliably reachable from CI egress.
TORCH_INDEX_URLS=()
if python3 -c "import torch; assert torch.version.hip" 2>/dev/null; then
ROCM_VER=$(python3 -c "import torch; print(torch.version.hip.rsplit('.', 1)[0])")
CANDIDATE_URL="https://download.pytorch.org/whl/rocm${ROCM_VER}"
if curl -fsSL --head "${CANDIDATE_URL}/" >/dev/null 2>&1; then
TORCH_INDEX_URL="${CANDIDATE_URL}"
else
echo ">>> WARNING: ROCm ${ROCM_VER} wheel index not found at ${CANDIDATE_URL}"
echo ">>> Falling back to default PyPI (resolution may be incomplete)"
TORCH_INDEX_URL=""
fi
TORCH_INDEX_URLS+=("https://download.pytorch.org/whl/rocm${ROCM_VER}")
TORCH_INDEX_URLS+=("https://download.pytorch.org/whl/test/rocm${ROCM_VER}")
else
if [ "${TORCH_NIGHTLY:-0}" = "1" ]; then
TORCH_INDEX_URL="https://download.pytorch.org/whl/nightly/cu130"
TORCH_INDEX_URLS+=("https://download.pytorch.org/whl/nightly/cu130")
else
TORCH_INDEX_URL="https://download.pytorch.org/whl/cu130"
TORCH_INDEX_URLS+=("https://download.pytorch.org/whl/cu130")
TORCH_INDEX_URLS+=("https://download.pytorch.org/whl/test/cu130")
fi
fi
echo ">>> Using PyTorch index: ${TORCH_INDEX_URL:-PyPI default}"
echo ">>> Using PyTorch indexes: ${TORCH_INDEX_URLS[*]:-PyPI default}"

# Fetch all Ray requirement files used in the LLM depset pipeline
echo ">>> Fetching Ray requirement files"
Expand Down Expand Up @@ -138,9 +142,9 @@ echo ">>> Resolving: Can Ray generate compatible lock files?"
echo "============================================================"

EXTRA_INDEX_ARGS=()
if [[ -n "${TORCH_INDEX_URL}" ]]; then
EXTRA_INDEX_ARGS+=(--extra-index-url "${TORCH_INDEX_URL}")
fi
for INDEX_URL in "${TORCH_INDEX_URLS[@]}"; do
EXTRA_INDEX_ARGS+=(--extra-index-url "${INDEX_URL}")
done

set +e
uv pip compile \
Expand Down
6 changes: 5 additions & 1 deletion .buildkite/scripts/hardware_ci/run-cpu-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ BUILD_RETRY_WAITS=(10 20 40) # seconds to wait before retry 1/2/3
build_log="$(mktemp)"
attempt=1
while true; do
if docker build --progress plain --tag "$IMAGE_NAME" --target vllm-test \
# RELEASE-ONLY (torch 2.14.0): torch installs in the `base-common` stage, whose
# layer key does not change when the RC is respun under the same version
# string, so the local BuildKit cache would restore a pre-revert wheel.
# Revert once 2.14.0 is final and published to PyPI.
if docker build --progress plain --no-cache --tag "$IMAGE_NAME" --target vllm-test \
--build-arg USE_SCCACHE=1 --build-arg SCCACHE_LOCAL_ONLY=1 --build-arg max_jobs=16 \
-f docker/Dockerfile.cpu . 2>&1 | tee "$build_log"; then
break
Expand Down
4 changes: 2 additions & 2 deletions .buildkite/test-amd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2531,7 +2531,7 @@ steps:
# https://github.com/pytorch/ao/issues/2919, we'll have to skip new torchao tests for now
# we can only upgrade after this is resolved
# TODO(jerryzh168): resolve the above comment
- uv pip install --system torchao==0.17.0
- uv pip install --system torchao==0.18.0
- uv pip install --system conch-triton-kernels
- VLLM_TEST_FORCE_LOAD_FORMAT=auto pytest -v -s quantization/ --ignore quantization/test_blackwell_moe.py
- pytest -v -s rocm/test_moe_weight_replay.py
Expand Down Expand Up @@ -3886,7 +3886,7 @@ steps:
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
commands:
- uv pip install --system torchao==0.17.0
- uv pip install --system torchao==0.18.0
- uv pip install --system conch-triton-kernels
- VLLM_TEST_FORCE_LOAD_FORMAT=auto pytest -v -s quantization/ --ignore quantization/test_blackwell_moe.py

Expand Down
2 changes: 1 addition & 1 deletion .buildkite/test_areas/quantization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ steps:
- tests/quantization
commands:
# Pin torchao to the version compatible with the CI PyTorch and CUDA stack.
- uv pip install --system torchao==0.17.0 --index-url https://download.pytorch.org/whl/cu130
- uv pip install --system torchao==0.18.0 --index-url https://download.pytorch.org/whl/test/cu130
- uv pip install --system conch-triton-kernels
# The SM90-only checkpoint currently contains a removed weight_chan_scale
# parameter. It was not exercised by the previous L4 job.
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ endif()
# requirements.txt files and should be kept consistent. The ROCm torch
# versions are derived from docker/Dockerfile.rocm
#
set(TORCH_SUPPORTED_VERSION_CUDA "2.13.0")
set(TORCH_SUPPORTED_VERSION_ROCM "2.13.0")
set(TORCH_SUPPORTED_VERSION_CUDA "2.14.0")
set(TORCH_SUPPORTED_VERSION_ROCM "2.14.0")
# TORCH_NIGHTLY=1 builds run against unpinned nightly wheels, so the supported-
# version check would always warn. Only treat it as a nightly build when the
# value is exactly "1" (the bootstrap exports TORCH_NIGHTLY=0 by default, which
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ ARG UV_INDEX_URL=${PIP_INDEX_URL}
ARG UV_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL}

# PyTorch provides its own indexes for standard and nightly builds
ARG PYTORCH_CUDA_INDEX_BASE_URL=https://download.pytorch.org/whl
ARG PYTORCH_CUDA_INDEX_BASE_URL=https://download.pytorch.org/whl/test

# PIP supports multiple authentication schemes, including keyring
# By parameterizing the PIP_KEYRING_PROVIDER variable and setting it to
Expand Down
21 changes: 16 additions & 5 deletions docker/Dockerfile.cpu
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@
# builder. sccache's cache lives in S3 instead, so it does.
FROM ubuntu:25.04 AS base

# RELEASE-ONLY (torch 2.14.0): the RC is republished to the PyTorch test channel
# under an unchanging version string and filename, so uv's persistent cache mount
# at /root/.cache/uv will happily serve a stale wheel even when the layer is
# rebuilt with --no-cache. Disable the uv cache so every build re-downloads torch
# and triton. Remove once 2.14.0 is final and published to PyPI.
ENV UV_NO_CACHE=1

RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update -y \
Expand Down Expand Up @@ -184,7 +191,8 @@ RUN --mount=type=cache,target=/root/.cache/uv \
&& uv pip install -r requirements/cpu.txt \
--extra-index-url ${PYTORCH_CPU_INDEX_BASE_URL}/nightly/cpu; \
else \
uv pip install -r requirements/cpu.txt --torch-backend cpu; \
uv pip install -r requirements/cpu.txt \
--extra-index-url ${PYTORCH_CPU_INDEX_BASE_URL}/test/cpu; \
fi

######################### x86_64 BASE IMAGE #########################
Expand Down Expand Up @@ -315,7 +323,8 @@ RUN --mount=type=cache,target=/root/.cache/uv \
&& uv pip install -r requirements/build/cpu.txt \
--extra-index-url ${PYTORCH_CPU_INDEX_BASE_URL}/nightly/cpu; \
else \
uv pip install -r requirements/build/cpu.txt --torch-backend cpu; \
uv pip install -r requirements/build/cpu.txt \
--extra-index-url ${PYTORCH_CPU_INDEX_BASE_URL}/test/cpu; \
fi

COPY . .
Expand Down Expand Up @@ -375,7 +384,7 @@ WORKDIR /vllm-workspace

# Test requirements are compiled from requirements/test/cuda.in into
# requirements/test/cpu.txt by the pip-compile-cpu pre-commit hook, which
# resolves CPU wheels via uv's --torch-backend cpu.
# resolves CPU wheels from the torch test index.
COPY requirements/test/cpu.txt requirements/test/cpu.txt

# cpu.txt is compiled for x86_64, so platform markers are resolved away. Drop
Expand All @@ -393,7 +402,8 @@ RUN --mount=type=cache,target=/root/.cache/uv \
&& uv pip install -r requirements/test/cpu.txt \
--extra-index-url ${PYTORCH_CPU_INDEX_BASE_URL}/nightly/cpu; \
else \
uv pip install -r requirements/test/cpu.txt --torch-backend cpu; \
uv pip install -r requirements/test/cpu.txt \
--extra-index-url ${PYTORCH_CPU_INDEX_BASE_URL}/test/cpu; \
fi

######################### DEV IMAGE #########################
Expand Down Expand Up @@ -430,7 +440,8 @@ RUN --mount=type=cache,target=/root/.cache/uv \
uv pip install -r requirements/test/cpu.txt \
--extra-index-url ${PYTORCH_CPU_INDEX_BASE_URL}/nightly/cpu; \
else \
uv pip install -r requirements/test/cpu.txt --torch-backend cpu; \
uv pip install -r requirements/test/cpu.txt \
--extra-index-url ${PYTORCH_CPU_INDEX_BASE_URL}/test/cpu; \
fi && \
pre-commit install --hook-type pre-commit --hook-type commit-msg

Expand Down
6 changes: 3 additions & 3 deletions docker/Dockerfile.s390x
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,13 @@ RUN curl -LO https://github.com/gperftools/gperftools/releases/download/gperftoo

FROM python-install AS torch-vision
# Install torchvision
ARG TORCH_VISION_VERSION=v0.28.0
ARG TORCH_VISION_VERSION=v0.29.0
WORKDIR /tmp
RUN --mount=type=cache,target=/root/.cache/uv \
git clone https://github.com/pytorch/vision.git && \
cd vision && \
git checkout $TORCH_VISION_VERSION && \
uv pip install torch==2.13.0 --index-url https://download.pytorch.org/whl/cpu && \
uv pip install torch==2.14.0 --index-url https://download.pytorch.org/whl/test/cpu && \
python setup.py bdist_wheel

FROM python-install AS hf-xet-builder
Expand Down Expand Up @@ -156,7 +156,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
# # Final build stage
FROM python-install AS vllm-cpu
ARG PYTHON_VERSION
ARG PIP_EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu"
ARG PIP_EXTRA_INDEX_URL="https://download.pytorch.org/whl/test/cpu"
# Set correct library path for torch and numactl
ENV LD_LIBRARY_PATH="/opt/vllm/lib64/python${PYTHON_VERSION}/site-packages/torch/lib:/usr/local/lib:/opt/rh/gcc-toolset-14/root/usr/lib64:$LD_LIBRARY_PATH"
ENV C_INCLUDE_PATH="/usr/local/include:$C_INCLUDE_PATH"
Expand Down
2 changes: 1 addition & 1 deletion docker/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"default": "https://bootstrap.pypa.io/get-pip.py"
},
"PYTORCH_CUDA_INDEX_BASE_URL": {
"default": "https://download.pytorch.org/whl"
"default": "https://download.pytorch.org/whl/test"
},
"PIP_KEYRING_PROVIDER": {
"default": "disabled"
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ requires = [
"setuptools>=77.0.3,<81.0.0",
"setuptools-scm>=8.0",
"setuptools-rust>=1.9.0",
"torch == 2.13.0",
"torch == 2.14.0",
"wheel",
"jinja2",
]
Expand Down
5 changes: 3 additions & 2 deletions requirements/build/cpu.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
--extra-index-url https://download.pytorch.org/whl/test/cpu
cmake>=3.26.1
ninja
packaging>=24.2
setuptools==77.0.3 # this version can reuse CMake build dir
setuptools-scm>=8
setuptools-rust>=1.9.0
torch==2.13.0+cpu; platform_machine == "x86_64" or platform_machine == "s390x" or platform_machine == "aarch64"
torch==2.13.0; platform_system == "Darwin" or platform_machine == "ppc64le" or platform_machine == "riscv64"
torch==2.14.0+cpu; platform_machine == "x86_64" or platform_machine == "s390x" or platform_machine == "aarch64"
torch==2.14.0; platform_system == "Darwin" or platform_machine == "ppc64le" or platform_machine == "riscv64"
wheel
jinja2>=3.1.6
regex
3 changes: 2 additions & 1 deletion requirements/build/cuda.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# Should be mirrored in pyproject.toml
--extra-index-url https://download.pytorch.org/whl/test/cu130
cmake>=3.26.1
ninja
packaging>=24.2
setuptools>=77.0.3,<81.0.0
setuptools-scm>=8
setuptools-rust>=1.9.0
torch==2.13.0
torch==2.14.0
wheel
jinja2>=3.1.6
regex
Expand Down
6 changes: 4 additions & 2 deletions requirements/cpu.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
# Common dependencies
-r common.txt

--extra-index-url https://download.pytorch.org/whl/test/cpu

setuptools==77.0.3 # this version can reuse CMake build dir

numba == 0.65.0; platform_machine != "s390x" # Required for N-gram speculative decoding

# Dependencies for CPUs
torch==2.13.0+cpu; platform_machine == "x86_64" or platform_machine == "s390x" or platform_machine == "aarch64"
torch==2.13.0; platform_system == "Darwin" or platform_machine == "ppc64le" or platform_machine == "riscv64"
torch==2.14.0+cpu; platform_machine == "x86_64" or platform_machine == "s390x" or platform_machine == "aarch64"
torch==2.14.0; platform_system == "Darwin" or platform_machine == "ppc64le" or platform_machine == "riscv64"

# required for the image processor of minicpm-o-2_6, this must be updated alongside torch
torchaudio; platform_machine != "s390x" and platform_machine != "riscv64"
Expand Down
4 changes: 2 additions & 2 deletions requirements/cuda.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
numba == 0.65.0 # Required for N-gram speculative decoding

# Dependencies for NVIDIA GPUs
torch==2.13.0
torch==2.14.0
torchaudio==2.11.0
# These must be updated alongside torch
torchvision==0.28.0 # Required for phi3v processor. See https://github.com/pytorch/vision?tab=readme-ov-file#installation for corresponding version
torchvision==0.29.0 # Required for phi3v processor. See https://github.com/pytorch/vision?tab=readme-ov-file#installation for corresponding version
torchcodec >= 0.14
PyNvVideoCodec==2.0.4
# FlashInfer should be updated together with the Dockerfile
Expand Down
6 changes: 3 additions & 3 deletions requirements/test/cpu.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1123,7 +1123,7 @@ tokenizers==0.23.1
# -r requirements/test/../common.txt
# cohere
# transformers
torch==2.13.0+cpu
torch==2.14.0+cpu
# via
# -r requirements/test/cuda.in
# accelerate
Expand Down Expand Up @@ -1151,7 +1151,7 @@ torchaudio==2.11.0+cpu
# vocos
torchcodec==0.14.0+cpu
# via -r requirements/test/cuda.in
torchvision==0.28.0+cpu
torchvision==0.29.0+cpu
# via
# -r requirements/test/cuda.in
# open-clip-torch
Expand Down Expand Up @@ -1186,7 +1186,7 @@ transformers==5.16.1
# xgrammar
transformers-stream-generator==0.0.5
# via -r requirements/test/cuda.in
triton==3.6.0
triton==3.8.0
# via xgrammar
tritonclient==2.64.0
# via -r requirements/test/cuda.in
Expand Down
4 changes: 2 additions & 2 deletions requirements/test/cuda.in
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ soundfile # required for audio tests
jiwer # required for audio tests
tblib # for pickling test exceptions
timm >=1.0.17 # required for internvl and gemma3n-mm test
torch==2.13.0
torch==2.14.0
torchaudio==2.11.0
torchvision==0.28.0
torchvision==0.29.0
transformers_stream_generator # required for qwen-vl test
matplotlib # required for qwen-vl test
mistral_common[image,audio] >= 1.11.6 # required for voxtral test
Expand Down
Loading
Loading