Skip to content

Commit ee72c7a

Browse files
committed
Merge remote-tracking branch 'origin/main' into patchy/async_ngram_v2_pr
2 parents e052b8c + 8878ebd commit ee72c7a

315 files changed

Lines changed: 13455 additions & 5261 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/hardware_tests/cpu.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ steps:
1111
- CMakeLists.txt
1212
- vllm/_custom_ops.py
1313
- tests/kernels/attention/test_cpu_attn.py
14+
- tests/v1/attention/test_group_head_counts.py
1415
- tests/kernels/moe/test_cpu_fused_moe.py
1516
- tests/kernels/moe/test_cpu_quant_fused_moe.py
1617
- tests/kernels/test_onednn.py
@@ -27,6 +28,7 @@ steps:
2728
- |
2829
bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 30m "
2930
pytest -x -v -s tests/kernels/attention/test_cpu_attn.py
31+
pytest -x -v -s tests/v1/attention/test_group_head_counts.py
3032
pytest -x -v -s tests/kernels/moe/test_cpu_fused_moe.py
3133
pytest -x -v -s tests/kernels/moe/test_cpu_quant_fused_moe.py
3234
pytest -x -v -s tests/kernels/mamba/test_cpu_short_conv.py

.buildkite/scripts/hardware_ci/run-amd-test.sh

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,8 @@ validate_native_workspace() {
261261
}
262262

263263
prepare_native_workspace() {
264+
local test_commands="${1:-}"
265+
264266
if [[ "${VLLM_CI_USE_ARTIFACTS:-0}" != "1" ]]; then
265267
echo "Native CI requires VLLM_CI_USE_ARTIFACTS=1"
266268
return 1
@@ -281,6 +283,8 @@ prepare_native_workspace() {
281283
local recorded_base=""
282284
local recorded_commit=""
283285
local recorded_wheel=""
286+
local checkout=""
287+
local checkout_commit=""
284288
local workspace_dir="${VLLM_CI_WORKSPACE:-/vllm-workspace}"
285289
local wheel_dir=""
286290
local attempt=0
@@ -400,6 +404,53 @@ prepare_native_workspace() {
400404
return 1
401405
fi
402406

407+
# The ROCm artifact intentionally contains only the installed wheel and the
408+
# test workspace. The Python-only compilation job also needs setup.py and the
409+
# vllm source tree, so overlay the matching Buildkite checkout for that job.
410+
if [[ "${test_commands}" == *python_only_compile.sh* ]]; then
411+
checkout="${BUILDKITE_BUILD_CHECKOUT_PATH:-}"
412+
if [[ -z "${checkout}" || ! -d "${checkout}" ]]; then
413+
echo "Python-only native CI requires BUILDKITE_BUILD_CHECKOUT_PATH" >&2
414+
return 1
415+
fi
416+
if ! git -c "safe.directory=${checkout}" -C "${checkout}" \
417+
rev-parse --is-inside-work-tree >/dev/null 2>&1; then
418+
echo "Buildkite checkout is not a Git worktree: ${checkout}" >&2
419+
return 1
420+
fi
421+
checkout_commit=$(
422+
git -c "safe.directory=${checkout}" -C "${checkout}" rev-parse HEAD
423+
) || return 1
424+
if [[ "${checkout_commit}" != "${recorded_commit}" ]]; then
425+
echo "Buildkite checkout ${checkout_commit} does not match ROCm artifact ${recorded_commit}" >&2
426+
return 1
427+
fi
428+
429+
# setup.py normally derives this from .git via setuptools-scm. The native
430+
# source overlay deliberately excludes Git metadata, so preserve the exact
431+
# version from the already installed, artifact-matched wheel.
432+
VLLM_VERSION_OVERRIDE=$(
433+
python3 -c 'import importlib.metadata as m; print(m.version("vllm"))'
434+
) || return 1
435+
export VLLM_VERSION_OVERRIDE
436+
VLLM_PRECOMPILED_WHEEL_LOCATION="${wheels[0]}"
437+
export VLLM_PRECOMPILED_WHEEL_LOCATION
438+
echo "INFO: native Python-only wheel=${VLLM_PRECOMPILED_WHEEL_LOCATION}"
439+
440+
echo "--- Overlaying full source checkout for Python-only compilation"
441+
# Archive the verified commit instead of copying the worktree so dirty or
442+
# untracked agent files cannot contaminate the artifact-matched workspace.
443+
git -c "safe.directory=${checkout}" -C "${checkout}" \
444+
archive --format=tar "${recorded_commit}" \
445+
| tar --no-same-owner -C "${workspace_dir}" -xf - || return 1
446+
for required_source in setup.py pyproject.toml vllm; do
447+
if [[ ! -e "${workspace_dir}/${required_source}" ]]; then
448+
echo "Full source checkout is missing ${required_source}" >&2
449+
return 1
450+
fi
451+
done
452+
fi
453+
403454
return 0
404455
}
405456

@@ -434,6 +485,12 @@ initialize_native_environment() {
434485
TIKTOKEN_RS_CACHE_DIR="${HF_HOME}/tiktoken-rs-cache"
435486
: "${HF_HUB_DOWNLOAD_TIMEOUT:=300}"
436487
: "${HF_HUB_ETAG_TIMEOUT:=60}"
488+
if [[ "${VLLM_CI_EXPECTED_GPU_COUNT:-1}" == "0" ]]; then
489+
# CPU-only native jobs intentionally reuse the ROCm wheel. Make that target
490+
# explicit so platform selection does not depend on wheel metadata.
491+
VLLM_TARGET_DEVICE=cpu
492+
export VLLM_TARGET_DEVICE
493+
fi
437494
export TMPDIR VLLM_RPC_BASE_PATH
438495
export TORCHINDUCTOR_CACHE_DIR TRITON_CACHE_DIR VLLM_CACHE_ROOT XDG_CACHE_HOME
439496
export HF_HOME HF_DATASETS_CACHE HF_HUB_DOWNLOAD_TIMEOUT HF_HUB_ETAG_TIMEOUT
@@ -948,7 +1005,13 @@ if is_native_runtime; then
9481005
echo "Failed to initialize the native test environment"
9491006
exit 1
9501007
fi
951-
if ! prepare_native_workspace; then
1008+
if [[ "${commands}" == *python_only_compile.sh* ]]; then
1009+
# This no-GPU job validates the ROCm precompiled/editable install path,
1010+
# rather than CPU runtime platform selection.
1011+
VLLM_TARGET_DEVICE=rocm
1012+
export VLLM_TARGET_DEVICE
1013+
fi
1014+
if ! prepare_native_workspace "${commands}"; then
9521015
echo "Failed to prepare native test workspace"
9531016
exit 1
9541017
fi

.buildkite/test-amd.yaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -411,8 +411,9 @@ steps:
411411

412412
- label: Python-only Installation # TBD
413413
timeout_in_minutes: 180
414-
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
415-
agent_pool: mi250_1
414+
mirror_hardwares: [amdexperimental, amdproduction, amdgfx942nightly, amdmi300]
415+
dind: false
416+
agent_pool: mi300_1
416417
optional: true
417418
working_dir: "/vllm-workspace/tests"
418419
source_file_dependencies:
@@ -2092,7 +2093,7 @@ steps:
20922093
- tests/models/multimodal/generation
20932094
- tests/models/multimodal/test_mapping.py
20942095
commands:
2095-
- pytest -v -s models/multimodal -m core_model --ignore models/multimodal/generation/test_common.py --ignore models/multimodal/generation/test_ultravox.py --ignore models/multimodal/generation/test_qwen2_5_vl.py --ignore models/multimodal/generation/test_qwen2_vl.py --ignore models/multimodal/generation/test_whisper.py --ignore models/multimodal/generation/test_memory_leak.py --ignore models/multimodal/processing
2096+
- pytest -v -s models/multimodal -m core_model --ignore models/multimodal/generation/test_common.py --ignore models/multimodal/generation/test_ultravox.py --ignore models/multimodal/generation/test_qwen2_5_vl.py --ignore models/multimodal/generation/test_qwen2_vl.py --ignore models/multimodal/generation/test_whisper.py --ignore models/multimodal/generation/test_memory_leak.py --ignore models/multimodal/generation/test_vit_cudagraph.py --ignore models/multimodal/processing
20962097
- pytest -v -s models/multimodal/generation/test_memory_leak.py -m core_model
20972098
- cd .. && VLLM_WORKER_MULTIPROC_METHOD=spawn pytest -v -s tests/models/multimodal/generation/test_whisper.py -m core_model
20982099

@@ -3671,7 +3672,8 @@ steps:
36713672
- vllm/
36723673
- tests/models/multimodal/generation
36733674
commands:
3674-
- pytest -v -s models/multimodal -m core_model --ignore models/multimodal/generation/test_common.py --ignore models/multimodal/generation/test_ultravox.py --ignore models/multimodal/generation/test_qwen2_5_vl.py --ignore models/multimodal/generation/test_qwen2_vl.py --ignore models/multimodal/generation/test_whisper.py --ignore models/multimodal/generation/test_memory_leak.py --ignore models/multimodal/processing
3675+
- pytest -v -s models/multimodal -m core_model --ignore models/multimodal/generation/test_common.py --ignore models/multimodal/generation/test_ultravox.py --ignore models/multimodal/generation/test_qwen2_5_vl.py --ignore models/multimodal/generation/test_qwen2_vl.py --ignore models/multimodal/generation/test_whisper.py --ignore models/multimodal/generation/test_memory_leak.py --ignore models/multimodal/generation/test_vit_cudagraph.py --ignore models/multimodal/processing
3676+
- pytest -v -s models/multimodal/generation/test_vit_cudagraph.py -m core_model
36753677
- pytest -v -s models/multimodal/generation/test_memory_leak.py -m core_model
36763678
- cd .. && VLLM_WORKER_MULTIPROC_METHOD=spawn pytest -v -s tests/models/multimodal/generation/test_whisper.py -m core_model
36773679

@@ -3771,6 +3773,7 @@ steps:
37713773
- tests/v1/executor
37723774
- tests/v1/kv_offload
37733775
- tests/v1/worker
3776+
- tests/v1/cudagraph
37743777
- tests/v1/kv_connector/unit
37753778
- tests/v1/metrics
37763779
- tests/entrypoints/openai/correctness/test_lmeval.py
@@ -3780,6 +3783,7 @@ steps:
37803783
- pytest -v -s v1/executor
37813784
- pytest -v -s v1/kv_offload
37823785
- pytest -v -s v1/worker
3786+
- pytest -v -s v1/cudagraph/test_encoder_cudagraph.py
37833787
- pytest -v -s -m 'not cpu_test' v1/kv_connector/unit
37843788
- pytest -v -s -m 'not cpu_test' v1/metrics
37853789
- pip install -U git+https://github.com/vllm-project/lm-evaluation-harness.git@streaming-api

.buildkite/test_areas/kernels.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,28 @@ steps:
339339
# e2e
340340
- pytest -v -s tests/models/quantization/test_nvfp4.py
341341

342+
- label: B12X Linear Kernels (DGX Spark) Nightly
343+
key: b12x-linear-kernels-dgx-spark-nightly
344+
timeout_in_minutes: 30
345+
device: dgx-spark
346+
optional: true
347+
num_devices: 1
348+
depends_on:
349+
- arm64-image-build
350+
source_file_dependencies:
351+
- setup.py
352+
- vllm/model_executor/kernels/linear/
353+
- vllm/model_executor/warmup/b12x_warmup.py
354+
- vllm/utils/b12x.py
355+
- tests/model_executor/kernels/test_b12x_linear.py
356+
- tests/model_executor/test_b12x_warmup.py
357+
- tests/kernels/quantization/test_block_fp8.py
358+
commands:
359+
- uv pip install --system b12x==1.2.4
360+
- pytest -v -s model_executor/kernels/test_b12x_linear.py
361+
model_executor/test_b12x_warmup.py
362+
kernels/quantization/test_block_fp8.py -k b12x
363+
342364
- label: Kernels Helion Test
343365
key: kernels-helion-test
344366
timeout_in_minutes: 115

.buildkite/test_areas/lm_eval.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,20 +195,21 @@ steps:
195195
commands:
196196
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/moe-refactor-dp-ep/config-b200.txt
197197

198-
- label: LM Eval Humming f16 (A100 - TEMPORARY)
198+
- label: LM Eval Humming f16 (A100 - TEMPORARY) %N
199199
key: lm-eval-humming-f16-a100
200200
timeout_in_minutes: 75
201201
device: a100
202202
optional: true
203203
num_devices: 1
204+
parallelism: 3
204205
source_file_dependencies:
205206
- vllm/model_executor/layers/quantization/humming.py
206207
- vllm/model_executor/layers/quantization/utils/humming_utils.py
207208
- vllm/model_executor/layers/fused_moe/experts/fused_humming_moe.py
208209
- vllm/model_executor/layers/fused_moe/oracle/
209210
- vllm/model_executor/kernels/linear/
210211
commands:
211-
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/humming/config.txt
212+
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/humming/config-a100-shard-$$BUILDKITE_PARALLEL_JOB.txt
212213

213214
- label: LM Eval Humming Act int8 (A100 - TEMPORARY)
214215
key: lm-eval-humming-act-a100

.buildkite/test_areas/misc.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ steps:
127127
- pytest -v -s v1/test_kv_cache_spec_registry.py
128128
- pytest -v -s v1/cudagraph/test_cudagraph_manager.py
129129
- pytest -v -s -m 'cpu_test' v1/kv_connector/unit
130+
- pytest -v -s -m 'cpu_test' v1/ec_connector/unit
130131
- pytest -v -s -m 'cpu_test' v1/metrics
131132

132133
- label: Extract Hidden States Integration
@@ -274,7 +275,8 @@ steps:
274275
- bash standalone_tests/python_only_compile.sh
275276
mirror:
276277
amd:
277-
device: mi250_1
278+
dind: false
279+
device: mi300_1
278280
timeout_in_minutes: 55
279281
soft_fail: true
280282
depends_on:

.buildkite/test_areas/plugins.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ steps:
7575
- vllm/model_executor/layers/quantization
7676
- tests/plugins_tests/bitsandbytes
7777
commands:
78+
# bitsandbytes' int8 quant syncs internally, and it is out-of-tree, so
79+
# there is nothing to wrap on the vLLM side.
80+
- unset VLLM_GPU_SYNC_CHECK
7881
- pip install "vllm-bnb-plugin >= 0.0.1"
7982
- pytest -v -s plugins_tests/bitsandbytes -m 'not distributed'
8083

@@ -89,5 +92,8 @@ steps:
8992
- vllm/model_executor/layers/quantization
9093
- tests/plugins_tests/bitsandbytes
9194
commands:
95+
# bitsandbytes' int8 quant syncs internally, and it is out-of-tree, so
96+
# there is nothing to wrap on the vLLM side.
97+
- unset VLLM_GPU_SYNC_CHECK
9298
- pip install "vllm-bnb-plugin >= 0.0.1"
9399
- pytest -v -s plugins_tests/bitsandbytes -m 'distributed(num_gpus=2)'

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
222222
# `+PTX` in TORCH_CUDA_ARCH_LIST is not preserved here. If a kernel really
223223
# needs PTX, add `+PTX` to that kernel's component-specific arch list below.
224224
#
225-
clear_cuda_arches(CUDA_ARCH_FLAGS)
225+
clear_cuda_gencode_flags(CUDA_ARCH_FLAGS)
226+
warn_if_ptx_arch_requested("${CUDA_ARCH_FLAGS}")
226227
extract_unique_cuda_archs_ascending(CUDA_ARCHS "${CUDA_ARCH_FLAGS}")
227228
message(STATUS "CUDA target architectures: ${CUDA_ARCHS}")
228229
# Filter the target architectures by the supported supported archs

cmake/external_projects/flashkda.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ else()
1313
FetchContent_Declare(
1414
flashkda
1515
GIT_REPOSITORY https://github.com/vllm-project/FlashKDA.git
16-
GIT_TAG b5d11010ff01c1d4a683c0dde42e76cbeaa8107f
16+
GIT_TAG 053de1b716ef3255873e02d2d28f4adf09951978
1717
GIT_PROGRESS TRUE
1818
GIT_SUBMODULES cutlass
1919
)

cmake/utils.cmake

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,11 +220,11 @@ endmacro()
220220
#
221221
# Example:
222222
# CMAKE_CUDA_FLAGS="-Wall -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75"
223-
# clear_cuda_arches(CUDA_ARCH_FLAGS)
223+
# clear_cuda_gencode_flags(CUDA_ARCH_FLAGS)
224224
# CUDA_ARCH_FLAGS="-gencode arch=compute_70,code=sm_70;-gencode arch=compute_75,code=sm_75"
225225
# CMAKE_CUDA_FLAGS="-Wall"
226226
#
227-
macro(clear_cuda_arches CUDA_ARCH_FLAGS)
227+
macro(clear_cuda_gencode_flags CUDA_ARCH_FLAGS)
228228
# Extract all `-gencode` flags from `CMAKE_CUDA_FLAGS`
229229
string(REGEX MATCHALL "-gencode arch=[^ ]+" CUDA_ARCH_FLAGS
230230
${CMAKE_CUDA_FLAGS})
@@ -235,6 +235,26 @@ macro(clear_cuda_arches CUDA_ARCH_FLAGS)
235235
${CMAKE_CUDA_FLAGS})
236236
endmacro()
237237

238+
#
239+
# Warn when a caller requested PTX code generation through global CUDA arch
240+
# flags. vLLM removes those flags and reapplies per-source gencode flags, so the
241+
# user's global PTX request will not be preserved.
242+
#
243+
function(warn_if_ptx_arch_requested CUDA_ARCH_FLAGS)
244+
foreach(_ARCH_FLAG ${CUDA_ARCH_FLAGS})
245+
if(_ARCH_FLAG MATCHES "code=.*compute_[0-9]+[af]?")
246+
message(WARNING
247+
"PTX code generation requested in CUDA architecture flags "
248+
"(${_ARCH_FLAG}), but vLLM does not preserve global PTX requests "
249+
"when normalizing per-source CUDA architectures. Remove '+PTX' from "
250+
"TORCH_CUDA_ARCH_LIST or rely on vLLM's built-in per-kernel PTX "
251+
"selection.")
252+
return()
253+
endif()
254+
endforeach()
255+
endfunction()
256+
257+
238258
#
239259
# Extract unique CUDA architectures from a list of compute capabilities codes in
240260
# the form `<major><minor>[<letter>]`, convert them to the form sort

0 commit comments

Comments
 (0)