Skip to content

Commit 51987e3

Browse files
committed
Merge remote-tracking branch 'upstream/main' into callumm.upstream_merge
Signed-off-by: Callum Mitchell <callumm@amd.com> Signed-off-by: <callumm@amd.com>
2 parents 33ba7bc + 206b72c commit 51987e3

2,105 files changed

Lines changed: 275942 additions & 63844 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.buildkite/ci_config.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ run_all_patterns:
88
- "CMakeLists.txt"
99
- "requirements/common.txt"
1010
- "requirements/cuda.txt"
11+
- "requirements/kv_connectors.txt"
1112
- "requirements/build/cuda.txt"
1213
- "requirements/test/cuda.txt"
1314
- "setup.py"

‎.buildkite/hardware_tests/cpu.yaml‎

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,19 @@ steps:
1212
- vllm/_custom_ops.py
1313
- tests/kernels/attention/test_cpu_attn.py
1414
- tests/kernels/moe/test_cpu_fused_moe.py
15+
- tests/kernels/moe/test_cpu_quant_fused_moe.py
1516
- tests/kernels/test_onednn.py
1617
- tests/kernels/test_awq_int4_to_int8.py
18+
- tests/kernels/quantization/test_cpu_fp8_scaled_mm.py
1719
commands:
1820
- |
19-
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 20m "
21+
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 30m "
2022
pytest -x -v -s tests/kernels/attention/test_cpu_attn.py
2123
pytest -x -v -s tests/kernels/moe/test_cpu_fused_moe.py
24+
pytest -x -v -s tests/kernels/moe/test_cpu_quant_fused_moe.py
2225
pytest -x -v -s tests/kernels/test_onednn.py
23-
pytest -x -v -s tests/kernels/test_awq_int4_to_int8.py"
26+
pytest -x -v -s tests/kernels/test_awq_int4_to_int8.py
27+
pytest -x -v -s tests/kernels/quantization/test_cpu_fp8_scaled_mm.py"
2428
2529
- label: CPU-Compatibility Tests
2630
depends_on: []
@@ -50,30 +54,45 @@ steps:
5054
pytest -x -v -s tests/models/language/generation -m cpu_model
5155
pytest -x -v -s tests/models/language/pooling -m cpu_model"
5256
57+
- label: CPU-ModelRunnerV2 Tests
58+
depends_on: []
59+
device: intel_cpu
60+
no_plugin: true
61+
soft_fail: true
62+
source_file_dependencies:
63+
- vllm/v1/worker/cpu/
64+
- vllm/v1/worker/gpu/
65+
commands:
66+
- |
67+
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 30m "
68+
uv pip install git+https://github.com/triton-lang/triton-cpu.git@270e696d
69+
VLLM_USE_V2_MODEL_RUNNER=1 pytest -x -v -s tests/models/language/generation/test_granite.py -m cpu_model"
70+
5371
- label: CPU-Quantization Model Tests
5472
depends_on: []
5573
device: intel_cpu
5674
no_plugin: true
5775
source_file_dependencies:
5876
- csrc/cpu/
5977
- vllm/model_executor/layers/quantization/cpu_wna16.py
60-
- vllm/model_executor/layers/quantization/gptq_marlin.py
78+
- vllm/model_executor/layers/quantization/auto_gptq.py
6179
- vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_int8.py
6280
- vllm/model_executor/layers/quantization/kernels/scaled_mm/cpu.py
6381
- vllm/model_executor/layers/quantization/kernels/mixed_precision/cpu.py
82+
- vllm/model_executor/layers/fused_moe/experts/cpu_moe.py
6483
- tests/quantization/test_compressed_tensors.py
6584
- tests/quantization/test_cpu_wna16.py
6685
commands:
6786
- |
68-
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 20m "
87+
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 30m "
6988
pytest -x -v -s tests/quantization/test_compressed_tensors.py::test_compressed_tensors_w8a8_logprobs
7089
pytest -x -v -s tests/quantization/test_cpu_wna16.py"
7190
72-
- label: CPU-Distributed Tests
91+
- label: CPU-Distributed Tests (PP+TP)
7392
depends_on: []
7493
device: intel_cpu
7594
no_plugin: true
76-
source_file_dependencies:
95+
source_file_dependencies: &cpu_distributed_deps
7796
- csrc/cpu/shm.cpp
7897
- vllm/v1/worker/cpu_worker.py
7998
- vllm/v1/worker/gpu_worker.py
@@ -82,10 +101,21 @@ steps:
82101
- vllm/platforms/cpu.py
83102
- vllm/distributed/parallel_state.py
84103
- vllm/distributed/device_communicators/cpu_communicator.py
104+
- .buildkite/scripts/hardware_ci/run-cpu-distributed-smoke-test.sh
105+
commands:
106+
- |
107+
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 10m "
108+
bash .buildkite/scripts/hardware_ci/run-cpu-distributed-smoke-test.sh tp_pp"
109+
110+
- label: CPU-Distributed Tests (DP+TP)
111+
depends_on: []
112+
device: intel_cpu
113+
no_plugin: true
114+
source_file_dependencies: *cpu_distributed_deps
85115
commands:
86116
- |
87117
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 10m "
88-
bash .buildkite/scripts/hardware_ci/run-cpu-distributed-smoke-test.sh"
118+
bash .buildkite/scripts/hardware_ci/run-cpu-distributed-smoke-test.sh dp_tp"
89119
90120
- label: CPU-Multi-Modal Model Tests %N
91121
depends_on: []

‎.buildkite/hardware_tests/intel.yaml‎

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,3 @@ steps:
88
commands:
99
- bash .buildkite/scripts/hardware_ci/run-hpu-test.sh
1010

11-
- label: "Intel GPU Test"
12-
depends_on: []
13-
soft_fail: true
14-
device: intel_gpu
15-
no_plugin: true
16-
commands:
17-
- bash .buildkite/scripts/hardware_ci/run-xpu-test.sh

‎.buildkite/image_build/image_build.sh‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ export BUILDKITE_COMMIT
192192
export PARENT_COMMIT
193193
export IMAGE_TAG
194194
export IMAGE_TAG_LATEST
195+
export COMMIT="${COMMIT:-${BUILDKITE_COMMIT}}"
195196
export CACHE_FROM
196197
export CACHE_FROM_BASE_BRANCH
197198
export CACHE_FROM_MAIN

‎.buildkite/image_build/image_build.yaml‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,48 @@ steps:
66
timeout_in_minutes: 600
77
commands:
88
- if [[ "$BUILDKITE_BRANCH" == "main" ]]; then .buildkite/image_build/image_build.sh $REGISTRY $REPO $BUILDKITE_COMMIT $BRANCH $IMAGE_TAG $IMAGE_TAG_LATEST; else .buildkite/image_build/image_build.sh $REGISTRY $REPO $BUILDKITE_COMMIT $BRANCH $IMAGE_TAG; fi
9+
# Non-root smoke 1: the default (root) image must still be importable
10+
# under a non-root UID via `--user 2000:0`. Validates the `vllm` passwd
11+
# entry + group-0-writable /home/vllm + uv path cleanup from #31959.
12+
# Uses `import vllm` rather than `vllm serve --help` because the latter
13+
# instantiates `VllmConfig` which requires a GPU attached to the
14+
# container.
15+
- docker run --rm --user 2000:0 --entrypoint python3 "$IMAGE_TAG" -c "import vllm; print(vllm.__version__)"
16+
# Non-root smoke 2: assert the non-root enabling invariants are baked
17+
# into the image. Runs as UID 2000:0 via a shell so we can verify
18+
# filesystem perms + passwd/group file state + wrapper presence without
19+
# triggering vLLM's GPU-requiring config-init path. The opt-in
20+
# `vllm-openai-nonroot` target adds only `USER vllm`, `WORKDIR
21+
# /home/vllm`, and an `ENTRYPOINT` override on top of these invariants;
22+
# its build correctness is reviewed at the Dockerfile level. Wrapper
23+
# logic is covered separately by the pre-commit hook
24+
# `test-nonroot-entrypoint` (see .pre-commit-config.yaml).
25+
- |
26+
docker run --rm --user 2000:0 --entrypoint /bin/sh "$IMAGE_TAG" -ec '
27+
if ! getent passwd 2000 | grep -q ^vllm:; then
28+
echo FAIL: UID 2000 != vllm
29+
exit 1
30+
fi
31+
if ! id -gn 2>/dev/null | grep -qx root; then
32+
echo FAIL: GID 0 not root group
33+
exit 1
34+
fi
35+
touch /home/vllm/.smoke && rm /home/vllm/.smoke
36+
touch /opt/uv/cache/.smoke && rm /opt/uv/cache/.smoke
37+
if ! test -x /usr/local/bin/vllm-nonroot-entrypoint.sh; then
38+
echo FAIL: wrapper missing
39+
exit 1
40+
fi
41+
if ! test -w /etc/passwd; then
42+
echo FAIL: /etc/passwd not group-writable
43+
exit 1
44+
fi
45+
if ! test -w /etc/group; then
46+
echo FAIL: /etc/group not group-writable
47+
exit 1
48+
fi
49+
echo non-root invariants OK
50+
'
951
retry:
1052
automatic:
1153
- exit_status: -1 # Agent was lost
@@ -56,3 +98,21 @@ steps:
5698
limit: 2
5799
- exit_status: -10 # Agent was lost
58100
limit: 2
101+
102+
- label: ":docker: Build arm64 image"
103+
key: arm64-image-build
104+
depends_on: []
105+
source_file_dependencies:
106+
- ".buildkite/image_build/image_build.yaml"
107+
- ".buildkite/image_build/image_build_arm64.sh"
108+
- "docker/Dockerfile"
109+
commands:
110+
- .buildkite/image_build/image_build_arm64.sh $REGISTRY $REPO $BUILDKITE_COMMIT
111+
env:
112+
DOCKER_BUILDKIT: "1"
113+
retry:
114+
automatic:
115+
- exit_status: -1 # Agent was lost
116+
limit: 2
117+
- exit_status: -10 # Agent was lost
118+
limit: 2
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/bin/bash
2+
set -e
3+
4+
if [[ $# -lt 3 ]]; then
5+
echo "Usage: $0 <registry> <repo> <commit>"
6+
exit 1
7+
fi
8+
9+
REGISTRY=$1
10+
REPO=$2
11+
BUILDKITE_COMMIT=$3
12+
13+
# authenticate with AWS ECR
14+
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin "$REGISTRY" || true
15+
16+
# skip build if image already exists
17+
if [[ -z $(docker manifest inspect "$REGISTRY"/"$REPO":"$BUILDKITE_COMMIT"-arm64) ]]; then
18+
echo "Image not found, proceeding with build..."
19+
else
20+
echo "Image found"
21+
exit 0
22+
fi
23+
24+
# build (Grace/GH200 is the arm64 GPU target; sm_90)
25+
docker build --file docker/Dockerfile \
26+
--platform linux/arm64 \
27+
--build-arg max_jobs=16 \
28+
--build-arg nvcc_threads=4 \
29+
--build-arg torch_cuda_arch_list="9.0" \
30+
--build-arg USE_SCCACHE=1 \
31+
--build-arg buildkite_commit="$BUILDKITE_COMMIT" \
32+
--tag "$REGISTRY"/"$REPO":"$BUILDKITE_COMMIT"-arm64 \
33+
--target test \
34+
--progress plain .
35+
36+
# push
37+
docker push "$REGISTRY"/"$REPO":"$BUILDKITE_COMMIT"-arm64

‎.buildkite/image_build/image_build_hpu.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ REPO=$2
1111
BUILDKITE_COMMIT=$3
1212

1313
# authenticate with AWS ECR
14-
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin "$REGISTRY"
14+
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin "$REGISTRY" || true
1515

1616
# skip build if image already exists
1717
if [[ -z $(docker manifest inspect "$REGISTRY"/"$REPO":"$BUILDKITE_COMMIT"-hpu) ]]; then

‎.buildkite/image_build/image_build_xpu.sh‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ REPO=$2
1111
BUILDKITE_COMMIT=$3
1212

1313
# authenticate with AWS ECR
14-
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin "$REGISTRY"
15-
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 936637512419.dkr.ecr.us-east-1.amazonaws.com
14+
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin "$REGISTRY" || true
15+
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 936637512419.dkr.ecr.us-east-1.amazonaws.com || true
1616

1717
# skip build if image already exists
1818
if ! docker manifest inspect "$REGISTRY"/"$REPO":"$BUILDKITE_COMMIT"-xpu &> /dev/null; then

‎.buildkite/intel_jobs/lora_intel.yaml‎

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@ steps:
1818
- >-
1919
bash .buildkite/scripts/hardware_ci/run-intel-test.sh
2020
'cd tests &&
21+
export VLLM_WORKER_MULTIPROC_METHOD=spawn &&
2122
pytest -v -s lora/test_layers.py &&
2223
pytest -v -s lora/test_lora_checkpoints.py &&
23-
(pytest -v -s lora/test_lora_functions.py --deselect="tests/lora/test_lora_functions.py::test_lora_functions_sync" --deselect="tests/lora/test_lora_functions.py::test_lora_functions_async" || true) &&
24+
pytest -v -s lora/test_lora_functions.py &&
2425
pytest -v -s lora/test_lora_huggingface.py &&
2526
pytest -v -s lora/test_lora_manager.py &&
2627
pytest -v -s lora/test_lora_utils.py &&
2728
pytest -v -s lora/test_peft_helper.py &&
2829
pytest -v -s lora/test_resolver.py &&
2930
pytest -v -s lora/test_utils.py &&
30-
(pytest -v -s lora/test_add_lora.py --deselect="tests/lora/test_add_lora.py::test_add_lora" || true) &&
31-
(pytest -v -s lora/test_worker.py --deselect="tests/lora/test_worker.py::test_worker_apply_lora" || true)'
31+
pytest -v -s lora/test_add_lora.py &&
32+
pytest -v -s lora/test_worker.py'
3233
3334
- label: LoRA Fused/MoE Kernels
3435
timeout_in_minutes: 45
@@ -46,8 +47,9 @@ steps:
4647
- >-
4748
bash .buildkite/scripts/hardware_ci/run-intel-test.sh
4849
'cd tests &&
50+
export VLLM_WORKER_MULTIPROC_METHOD=spawn &&
4951
pytest -v -s lora/test_fused_moe_lora_kernel.py &&
50-
pytest -v -s lora/test_moe_lora_align_sum.py'
52+
pytest -v -s lora/test_moe_lora_align_sum.py --deselect="tests/lora/test_moe_lora_align_sum.py::test_moe_lora_align_block_size_mixed_base_and_lora[1]"'
5153
5254
- label: LoRA Punica Kernels
5355
timeout_in_minutes: 45
@@ -65,8 +67,9 @@ steps:
6567
- >-
6668
bash .buildkite/scripts/hardware_ci/run-intel-test.sh
6769
'cd tests &&
70+
export VLLM_WORKER_MULTIPROC_METHOD=spawn &&
6871
set -o pipefail &&
69-
pytest -v -s lora/test_punica_ops.py --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-2-2049-64-32-32]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[expand-0-xpu:0-dtype1-2-64000-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-1-2049-128-1-32]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-1-2049-256-1-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-1-2049-256-8-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels[expand-0-xpu:0-dtype0-3-2049-128-8-16]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-1-2049-128-8-32]" --deselect="tests/lora/test_punica_ops.py::test_kernels[expand-0-xpu:0-dtype1-1-2049-256-128-32]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[shrink-0-xpu:0-dtype0-3-64256-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[shrink-0-xpu:0-dtype1-2-29696-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[shrink-0-xpu:0-dtype1-3-49408-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[shrink-0-xpu:0-dtype0-2-16384-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[expand-0-xpu:0-dtype0-2-51328-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[expand-0-xpu:0-dtype1-1-102656-32-4-4]"'
72+
pytest -v -s lora/test_punica_ops.py --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[expand-0-xpu:0-dtype0-3-43264-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype1-1-2049-64-128-16]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-1-2049-128-1-32]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-1-2049-256-1-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-1-2049-256-8-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels[expand-0-xpu:0-dtype0-3-2049-128-8-16]" --deselect="tests/lora/test_punica_ops.py::test_kernels[shrink-0-xpu:0-dtype0-1-2049-128-8-32]" --deselect="tests/lora/test_punica_ops.py::test_kernels[expand-0-xpu:0-dtype1-1-2049-256-128-32]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[shrink-0-xpu:0-dtype0-3-64256-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[shrink-0-xpu:0-dtype1-2-29696-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[shrink-0-xpu:0-dtype1-3-49408-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[shrink-0-xpu:0-dtype0-2-16384-32-4-4]" --deselect="tests/lora/test_punica_ops.py::test_kernels_hidden_size[expand-0-xpu:0-dtype0-2-51328-32-4-4]"'
7073
7174
- label: LoRA Punica FP8/XPU Ops
7275
timeout_in_minutes: 45
@@ -84,6 +87,7 @@ steps:
8487
- >-
8588
bash .buildkite/scripts/hardware_ci/run-intel-test.sh
8689
'cd tests &&
90+
export VLLM_WORKER_MULTIPROC_METHOD=spawn &&
8791
pytest -v -s lora/test_punica_ops_fp8.py &&
8892
pytest -v -s lora/test_punica_xpu_ops.py'
8993
@@ -103,10 +107,12 @@ steps:
103107
- >-
104108
bash .buildkite/scripts/hardware_ci/run-intel-test.sh
105109
'cd tests &&
110+
export VLLM_WORKER_MULTIPROC_METHOD=spawn &&
106111
(pytest -v -s lora/test_mixtral.py --deselect="tests/lora/test_mixtral.py::test_mixtral_lora[4]" || true) &&
107112
pytest -v -s lora/test_quant_model.py --deselect="tests/lora/test_quant_model.py::test_quant_model_lora[model0]" --deselect="tests/lora/test_quant_model.py::test_quant_model_lora[model1]" --deselect="tests/lora/test_quant_model.py::test_quant_model_tp_equality[model0]" &&
108-
pytest -v -s lora/test_qwen35_densemodel_lora.py &&
109-
pytest -v -s lora/test_transformers_model.py'
113+
pytest -v -s lora/test_transformers_model.py &&
114+
pytest -v -s lora/test_chatglm3_tp.py &&
115+
pytest -s -v lora/test_minicpmv_tp.py'
110116
111117
- label: LoRA Multimodal
112118
timeout_in_minutes: 45
@@ -124,7 +130,6 @@ steps:
124130
- >-
125131
bash .buildkite/scripts/hardware_ci/run-intel-test.sh
126132
'cd tests &&
133+
export VLLM_WORKER_MULTIPROC_METHOD=spawn &&
127134
pytest -v -s lora/test_default_mm_loras.py &&
128-
(pytest -v -s lora/test_qwen3_unembed.py || true) &&
129-
(pytest -v -s lora/test_qwenvl.py || true) &&
130135
pytest -v -s lora/test_whisper.py'

‎.buildkite/intel_jobs/misc_intel.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ steps:
4949
bash .buildkite/scripts/hardware_ci/run-intel-test.sh
5050
'export VLLM_WORKER_MULTIPROC_METHOD=spawn &&
5151
cd tests &&
52-
pytest -v -s v1/logits_processors &&
52+
pytest -v -s v1/logits_processors --ignore=v1/logits_processors/test_custom_online.py --ignore=v1/logits_processors/test_custom_offline.py &&
5353
pytest -v -s v1/test_oracle.py &&
5454
pytest -v -s v1/test_request.py &&
5555
pytest -v -s v1/test_outputs.py'

0 commit comments

Comments
 (0)