[ROCm][CI] Expand MI355 mirrors and route MIG-sized jobs to DPX (#59137)

Signed-off-by: Andreas Karatzas <andreas.karatzas@protonmail.com>
This commit is contained in:
Andreas Karatzas
2026-09-29 03:40:07 -05:00
committed by GitHub
parent 70dc122f81
commit 6ebb5bd64f
15 changed files with 534 additions and 91 deletions
+212 -50
View File
@@ -3301,6 +3301,85 @@ steps:
- pytest -v -s tests/compile/passes/test_fusion_attn.py tests/compile/passes/test_silu_mul_quant_fusion.py tests/compile/passes/test_silu_mul_quant_manual_fusion.py
- pytest -v -s tests/compile/correctness_e2e/test_attn_quant.py
- label: ":amd: (MI355) Sequence Parallel Correctness"
timeout_in_minutes: 180
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_2
num_gpus: 2
optional: true
working_dir: "/vllm-workspace/"
source_file_dependencies:
- .buildkite/test_areas/compile.yaml
- vllm/compilation/
- vllm/config/
- vllm/distributed/
- vllm/model_executor/kernels/linear/
- vllm/model_executor/layers/
- vllm/model_executor/models/llama.py
- vllm/v1/attention/
- vllm/v1/worker/
- vllm/v1/cudagraph_dispatcher.py
- vllm/platforms/rocm.py
- tests/compile/correctness_e2e/test_sequence_parallel.py
- tests/models/registry.py
- tests/utils.py
commands:
- export VLLM_TEST_CLEAN_GPU_MEMORY=1
- pytest -v -s tests/compile/correctness_e2e/test_sequence_parallel.py
- label: ":amd: (MI355) AsyncTP Correctness"
timeout_in_minutes: 60
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_2
num_gpus: 2
optional: true
working_dir: "/vllm-workspace/"
source_file_dependencies:
- .buildkite/test_areas/compile.yaml
- vllm/compilation/
- vllm/config/
- vllm/distributed/
- vllm/model_executor/layers/
- vllm/model_executor/kernels/linear/
- vllm/model_executor/models/llama.py
- vllm/model_executor/models/qwen3.py
- vllm/v1/attention/
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
- vllm/transformers_utils/repo_utils.py
- tests/compile/correctness_e2e/test_async_tp.py
- tests/compile/fusions_e2e/common.py
- tests/models/registry.py
- tests/utils.py
commands:
- export VLLM_TEST_CLEAN_GPU_MEMORY=1
- pytest -v -s tests/compile/correctness_e2e/test_async_tp.py::test_rocm_async_tp_bf16_output_correctness
- pytest -v -s tests/compile/correctness_e2e/test_async_tp.py::test_async_tp_pass_correctness -k RedHatAI
- pytest -v -s tests/compile/correctness_e2e/test_async_tp.py::test_async_tp_pass_nvfp4_correctness
- label: ":amd: (MI355 DPX) Fusion E2E FP8 Config Sweep"
timeout_in_minutes: 45
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_dpx
num_gpus: 1
optional: true
working_dir: "/vllm-workspace/"
source_file_dependencies:
- .buildkite/test_areas/compile.yaml
- csrc/quantization/
- vllm/compilation/
- vllm/model_executor/
- vllm/v1/attention/
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
- tests/compile/fusions_e2e/
commands:
- rocm-smi
- pytest -v -s tests/compile/fusions_e2e/test_tp1_quant.py -k "test_tp1_fp8_fusions and inductor_partition and not +rms_norm and not True and ((Llama-3 and TRITON_ATTN) or (Qwen3-30B and +quant_fp8 and TRITON_ATTN) or (DeepSeek-Coder and +quant_fp8 and TRITON_MLA))"
#-------------------------------------------------------- mi355 · distributed --------------------------------------------------------#
- label: ":amd: (MI355 DPX) EPLB Algorithm" # TBD
@@ -3572,6 +3651,26 @@ steps:
- pytest -v -s tests/distributed/test_rocm_quick_reduce.py
- pytest -v -s tests/distributed/test_quick_all_reduce.py
- label: ":amd: (MI355) Distributed AgRs All2All"
timeout_in_minutes: 30
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_2
num_gpus: 2
optional: true
working_dir: "/vllm-workspace/"
source_file_dependencies:
- .buildkite/test_areas/distributed.yaml
- vllm/distributed/
- vllm/config/parallel.py
- vllm/config/vllm.py
- vllm/forward_context.py
- vllm/platforms/rocm.py
- tests/distributed/test_mnnvl_alltoall.py
- tests/utils.py
commands:
- pytest -v -s tests/distributed/test_mnnvl_alltoall.py::test_args_dispatch_combine
- label: ":amd: (MI355) Fusion E2E TP2 Quick" # TBD
timeout_in_minutes: 60
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
@@ -3953,6 +4052,30 @@ steps:
commands:
- pytest -s -v evals/gpt_oss/test_gpqa_correctness.py --config-list-file=configs/models-gfx950.txt
- label: ":amd: (MI355 DPX) LM Eval Small Models"
timeout_in_minutes: 45
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_dpx
num_gpus: 1
optional: true
working_dir: "/vllm-workspace/tests"
source_file_dependencies:
- .buildkite/test_areas/lm_eval.yaml
- csrc/
- tests/evals/gsm8k/
- vllm/model_executor/layers/quantization
- vllm/model_executor/kernels/linear/
- vllm/model_executor/layers/fused_moe/
- vllm/model_executor/models/
- vllm/model_executor/model_loader/
- vllm/v1/attention/backends/
- vllm/v1/attention/selector.py
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
commands:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-gfx950-small.txt
- label: ":amd: (MI355 DPX) LM Eval Watermarking"
timeout_in_minutes: 45
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
@@ -3999,7 +4122,7 @@ steps:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-watermark-dspark-tp2.txt
- label: ":amd: (MI355) LM Eval Qwen3-5 Models" # TBD
timeout_in_minutes: 40
timeout_in_minutes: 75
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_2
@@ -4018,6 +4141,10 @@ steps:
- vllm/distributed/
- vllm/model_executor/layers/fused_moe/
- vllm/third_party/flash_linear_attention/ops/
- vllm/model_executor/layers/quantization/modelopt.py
- vllm/model_executor/kernels/linear/nvfp4/
- vllm/v1/attention/
- vllm/v1/worker/
- tests/evals/gsm8k/
- tests/utils.py
- vllm/_aiter_ops.py
@@ -4025,6 +4152,48 @@ steps:
commands:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-qwen35-mi355.txt
- label: ":amd: (MI355) LM Eval Large Models EP"
timeout_in_minutes: 120
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_2
num_gpus: 2
optional: true
working_dir: "/vllm-workspace/tests"
source_file_dependencies:
- .buildkite/test_areas/lm_eval.yaml
- tests/evals/gsm8k/
- tests/utils.py
- tests/conftest.py
- csrc/
- vllm/config/
- vllm/distributed/
- vllm/model_executor/models/config.py
- vllm/model_executor/models/registry.py
- vllm/model_executor/models/utils.py
- vllm/model_executor/models/qwen3_next.py
- vllm/model_executor/models/qwen3_next_mtp.py
- vllm/model_executor/models/nemotron_h.py
- vllm/model_executor/models/nemotron_h_mtp.py
- vllm/transformers_utils/configs/qwen3_next.py
- vllm/transformers_utils/configs/nemotron_h.py
- vllm/model_executor/model_loader/
- vllm/model_executor/layers/quantization/
- vllm/model_executor/layers/fused_moe/
- vllm/model_executor/layers/mamba/
- vllm/model_executor/layers/layernorm.py
- vllm/model_executor/layers/linear.py
- vllm/model_executor/kernels/linear/
- vllm/third_party/flash_linear_attention/ops/
- vllm/v1/attention/
- vllm/v1/spec_decode/
- vllm/v1/worker/
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
commands:
- export VLLM_WORKER_MULTIPROC_METHOD=spawn
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-blackwell-ep-mi355.txt
- label: ":amd: (MI355) Qwen3-8-Flash-Next-FP8 Accuracy Eval"
timeout_in_minutes: 105
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
@@ -4046,11 +4215,11 @@ steps:
- uv pip install --system 'evalscope==1.10.0'
- pytest -s -v evals/qwen4_exp/test_accuracy.py --config-list-file=configs/models-rocm.txt
- label: ":amd: (MI355) LM Eval TurboQuant k8v4"
- label: ":amd: (MI355 DPX) LM Eval TurboQuant k8v4"
timeout_in_minutes: 30
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
agent_pool: mi355_dpx
num_gpus: 1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -4072,11 +4241,11 @@ steps:
commands:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/models-turboquant-k8v4-rocm.txt
- label: ":amd: (MI355) LM Eval TurboQuant t4nc"
- label: ":amd: (MI355 DPX) LM Eval TurboQuant t4nc"
timeout_in_minutes: 30
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
agent_pool: mi355_dpx
num_gpus: 1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -4098,11 +4267,11 @@ steps:
commands:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/models-turboquant-t4nc-rocm.txt
- label: ":amd: (MI355) LM Eval TurboQuant k3v4nc"
- label: ":amd: (MI355 DPX) LM Eval TurboQuant k3v4nc"
timeout_in_minutes: 30
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
agent_pool: mi355_dpx
num_gpus: 1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -4124,11 +4293,11 @@ steps:
commands:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/models-turboquant-k3v4nc-rocm.txt
- label: ":amd: (MI355) LM Eval TurboQuant t3nc"
- label: ":amd: (MI355 DPX) LM Eval TurboQuant t3nc"
timeout_in_minutes: 30
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
agent_pool: mi355_dpx
num_gpus: 1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -4500,41 +4669,6 @@ steps:
- python3 features/speculative_decoding/spec_decode_offline.py --test --method eagle --num_spec_tokens 3 --dataset-name hf --dataset-path philschmid/mt-bench --num-prompts 80 --temp 0 --top-p 1.0 --top-k -1 --tp 1 --enable-chunked-prefill --max-model-len 2048
- python3 features/speculative_decoding/spec_decode_offline.py --test --method eagle3 --num_spec_tokens 3 --dataset-name hf --dataset-path philschmid/mt-bench --num-prompts 80 --temp 0 --top-p 1.0 --top-k -1 --tp 1 --enable-chunked-prefill --max-model-len 1536
- label: ":amd: (MI355) Examples" # TBD
timeout_in_minutes: 75
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
working_dir: "/vllm-workspace/examples"
source_file_dependencies:
- vllm/entrypoints
- vllm/multimodal
- examples/
- vllm/platforms/rocm.py
optional: true
commands:
# Basic
# Multi-modal models
# Pooling models
# Features demo
- pip install --no-deps tensorizer
- python3 basic/offline_inference/chat.py
- python3 basic/offline_inference/generate.py --model facebook/opt-125m
- python3 basic/offline_inference/generate.py --model meta-llama/Llama-2-13b-chat-hf --cpu-offload-gb 10
- python3 basic/offline_inference/classify.py
- python3 basic/offline_inference/embed.py
- python3 basic/offline_inference/score.py
- python3 generate/multimodal/audio_language_offline.py --seed 0
- python3 generate/multimodal/vision_language_offline.py --seed 0
- python3 generate/multimodal/vision_language_multi_image_offline.py --seed 0
- python3 generate/multimodal/encoder_decoder_multimodal_offline.py --model-type whisper --seed 0
- python3 pooling/embed/vision_embedding_offline.py --seed 0
- python3 features/automatic_prefix_caching/prefix_caching_offline.py
- python3 deployment/llm_engine_example.py
- python3 features/tensorize_vllm_model.py --model facebook/opt-125m serialize --serialized-directory /tmp/ --suffix v1 && python3 features/tensorize_vllm_model.py --model facebook/opt-125m deserialize --path-to-tensors /tmp/vllm/facebook/opt-125m/v1/model.tensors
- python3 features/speculative_decoding/spec_decode_offline.py --test --method eagle --num_spec_tokens 3 --dataset-name hf --dataset-path philschmid/mt-bench --num-prompts 80 --temp 0 --top-p 1.0 --top-k -1 --tp 1 --enable-chunked-prefill --max-model-len 2048
- python3 features/speculative_decoding/spec_decode_offline.py --test --method eagle3 --num_spec_tokens 3 --dataset-name hf --dataset-path philschmid/mt-bench --num-prompts 80 --temp 0 --top-p 1.0 --top-k -1 --tp 1 --enable-chunked-prefill --max-model-len 1536
#---------------------------------------------------------- mi355 · kernels ----------------------------------------------------------#
- label: ":amd: (MI355) mHC Kernels"
@@ -5291,12 +5425,12 @@ steps:
#------------------------------------------------------- mi355 · quantization --------------------------------------------------------#
- label: ":amd: (MI355) Quantization Shard %N"
- label: ":amd: (MI355 DPX) Quantization Shard %N"
timeout_in_minutes: 115
parallelism: 4
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
agent_pool: mi355_dpx
working_dir: "/vllm-workspace/tests"
source_file_dependencies:
- csrc/
@@ -5339,6 +5473,34 @@ steps:
#------------------------------------------------------------ mi355 · v1 -------------------------------------------------------------#
- label: ":amd: (MI355) Spec Decode AL DFlash2 Nightly"
timeout_in_minutes: 60
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
num_gpus: 1
optional: true
working_dir: "/vllm-workspace/tests"
source_file_dependencies:
- .buildkite/test_areas/spec_decode.yaml
- tests/v1/e2e/spec_decode/
- tests/evals/gsm8k/
- tests/utils.py
- vllm/v1/spec_decode/
- vllm/v1/worker/gpu/spec_decode/
- vllm/v1/worker/gpu/sample/
- vllm/v1/worker/gpu/model_runner.py
- vllm/v1/attention/
- vllm/model_executor/models/qwen3_dflash.py
- vllm/model_executor/models/qwen3_dflash2.py
- vllm/model_executor/models/qwen3_5.py
- vllm/model_executor/model_loader/
- vllm/model_executor/layers/quantization/
- vllm/model_executor/kernels/linear/
- vllm/platforms/rocm.py
commands:
- pytest -v -s v1/e2e/spec_decode/acceptance_rates/dflash/ -k "dflash2"
- label: ":amd: (MI355 DPX) Spec Decode Draft Model" # TBD
timeout_in_minutes: 60
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
@@ -6056,11 +6218,11 @@ steps:
- pytest -v -s v1/test_outputs.py
- label: ":amd: (MI355) V1 Spec Decode" # TBD
- label: ":amd: (MI355 DPX) V1 Spec Decode" # TBD
timeout_in_minutes: 50
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
agent_pool: mi355_dpx
working_dir: "/vllm-workspace/tests"
source_file_dependencies:
- vllm/
@@ -6230,11 +6392,11 @@ steps:
- amdmi355
optional: true
- label: ":amd: (MI355) MRV2 Sampler JIT Warmup"
- label: ":amd: (MI355 DPX) MRV2 Sampler JIT Warmup"
timeout_in_minutes: 10
mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
dind: false
agent_pool: mi355_1
agent_pool: mi355_dpx
num_gpus: 1
optional: true
working_dir: "/vllm-workspace/"
+77
View File
@@ -12,6 +12,30 @@ steps:
commands:
- export VLLM_TEST_CLEAN_GPU_MEMORY=1
- pytest -v -s tests/compile/correctness_e2e/test_sequence_parallel.py
mirror:
amd:
label: ":amd: (MI355) Sequence Parallel Correctness"
dind: false
device: mi355_2
num_devices: 2
timeout_in_minutes: 180
depends_on:
- image-build-amd
source_file_dependencies:
- .buildkite/test_areas/compile.yaml
- vllm/compilation/
- vllm/config/
- vllm/distributed/
- vllm/model_executor/kernels/linear/
- vllm/model_executor/layers/
- vllm/model_executor/models/llama.py
- vllm/v1/attention/
- vllm/v1/worker/
- vllm/v1/cudagraph_dispatcher.py
- vllm/platforms/rocm.py
- tests/compile/correctness_e2e/test_sequence_parallel.py
- tests/models/registry.py
- tests/utils.py
- label: ":nvidia: (B200) AsyncTP Correctness"
key: asynctp-correctness-tests-b200
@@ -23,6 +47,38 @@ steps:
commands:
- export VLLM_TEST_CLEAN_GPU_MEMORY=1
- pytest -v -s tests/compile/correctness_e2e/test_async_tp.py
mirror:
amd:
label: ":amd: (MI355) AsyncTP Correctness"
dind: false
device: mi355_2
num_devices: 2
timeout_in_minutes: 60
working_dir: "/vllm-workspace/"
depends_on:
- image-build-amd
source_file_dependencies:
- .buildkite/test_areas/compile.yaml
- vllm/compilation/
- vllm/config/
- vllm/distributed/
- vllm/model_executor/layers/
- vllm/model_executor/kernels/linear/
- vllm/model_executor/models/llama.py
- vllm/model_executor/models/qwen3.py
- vllm/v1/attention/
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
- vllm/transformers_utils/repo_utils.py
- tests/compile/correctness_e2e/test_async_tp.py
- tests/compile/fusions_e2e/common.py
- tests/models/registry.py
- tests/utils.py
commands:
- export VLLM_TEST_CLEAN_GPU_MEMORY=1
- pytest -v -s tests/compile/correctness_e2e/test_async_tp.py::test_rocm_async_tp_bf16_output_correctness
- pytest -v -s tests/compile/correctness_e2e/test_async_tp.py::test_async_tp_pass_correctness -k RedHatAI
- pytest -v -s tests/compile/correctness_e2e/test_async_tp.py::test_async_tp_pass_nvfp4_correctness
- label: ":nvidia: (H100) Distributed Compile"
key: distributed-compile-unit-tests-2xh100
@@ -188,6 +244,27 @@ steps:
# Qwen/Deepseek requires +quant_fp8 as -quant_fp8 rms+quant fusion is not supported
# Run just llama3 (fp8 & fp4) for all config combinations (only inductor partition)
- pytest -v -s tests/compile/fusions_e2e/test_tp1_quant.py -k "inductor_partition and (FLASHINFER and not +rms_norm and (not +quant_fp8 or +quant_fp8 and (qwen3 or deepseek)) or llama-3)"
mirror:
amd:
label: ":amd: (MI355 DPX) Fusion E2E FP8 Config Sweep"
dind: false
device: mi355_dpx
timeout_in_minutes: 45
working_dir: "/vllm-workspace/"
depends_on:
- image-build-amd
source_file_dependencies:
- .buildkite/test_areas/compile.yaml
- csrc/quantization/
- vllm/compilation/
- vllm/model_executor/
- vllm/v1/attention/
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
- tests/compile/fusions_e2e/
commands:
- rocm-smi
- pytest -v -s tests/compile/fusions_e2e/test_tp1_quant.py -k "test_tp1_fp8_fusions and inductor_partition and not +rms_norm and not True and ((Llama-3 and TRITON_ATTN) or (Qwen3-30B and +quant_fp8 and TRITON_ATTN) or (DeepSeek-Coder and +quant_fp8 and TRITON_MLA))"
- label: ":nvidia: (H100) Fusion E2E TP2 Quick"
key: fusion-e2e-tp2-quick-h100
+21
View File
@@ -439,6 +439,27 @@ steps:
- pytest -v -s tests/distributed/test_nccl_symm_mem.py
- pytest -v -s tests/v1/distributed/test_dbo.py
- pytest -v -s tests/distributed/test_mnnvl_alltoall.py
mirror:
amd:
label: ":amd: (MI355) Distributed AgRs All2All"
dind: false
device: mi355_2
num_devices: 2
timeout_in_minutes: 30
working_dir: "/vllm-workspace/"
depends_on:
- image-build-amd
source_file_dependencies:
- .buildkite/test_areas/distributed.yaml
- vllm/distributed/
- vllm/config/parallel.py
- vllm/config/vllm.py
- vllm/forward_context.py
- vllm/platforms/rocm.py
- tests/distributed/test_mnnvl_alltoall.py
- tests/utils.py
commands:
- pytest -v -s tests/distributed/test_mnnvl_alltoall.py::test_args_dispatch_combine
- label: ":nvidia: (B200) GEMM-RS/AR"
key: gemm-rs-ar-2xb200
+2 -2
View File
@@ -23,9 +23,9 @@ steps:
mirror:
amd:
# Focused MRV2 regression; the broader model/backend matrix is pending.
label: ':amd: (MI355) MRV2 Sampler JIT Warmup'
label: ':amd: (MI355 DPX) MRV2 Sampler JIT Warmup'
dind: false
device: mi355_1
device: mi355_dpx
num_devices: 1
timeout_in_minutes: 10
working_dir: /vllm-workspace/
+63 -9
View File
@@ -151,15 +151,18 @@ steps:
label: ":amd: (MI355 DPX) LM Eval Small Models"
dind: false
device: mi355_dpx
num_devices: 1
timeout_in_minutes: 45
working_dir: /vllm-workspace/tests
depends_on:
- image-build-amd
source_file_dependencies:
- .buildkite/test_areas/lm_eval.yaml
- csrc/
- tests/evals/gsm8k/
- vllm/model_executor/layers/quantization
- vllm/model_executor/kernels/linear/
- vllm/model_executor/layers/fused_moe/
- vllm/model_executor/models/
- vllm/model_executor/model_loader/
- vllm/v1/attention/backends/
@@ -383,6 +386,49 @@ steps:
- vllm/model_executor/layers/quantization
commands:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-blackwell-ep.txt
mirror:
amd:
label: ":amd: (MI355) LM Eval Large Models EP"
dind: false
device: mi355_2
num_devices: 2
timeout_in_minutes: 120
working_dir: "/vllm-workspace/tests"
depends_on:
- image-build-amd
source_file_dependencies:
- .buildkite/test_areas/lm_eval.yaml
- tests/evals/gsm8k/
- tests/utils.py
- tests/conftest.py
- csrc/
- vllm/config/
- vllm/distributed/
- vllm/model_executor/models/config.py
- vllm/model_executor/models/registry.py
- vllm/model_executor/models/utils.py
- vllm/model_executor/models/qwen3_next.py
- vllm/model_executor/models/qwen3_next_mtp.py
- vllm/model_executor/models/nemotron_h.py
- vllm/model_executor/models/nemotron_h_mtp.py
- vllm/transformers_utils/configs/qwen3_next.py
- vllm/transformers_utils/configs/nemotron_h.py
- vllm/model_executor/model_loader/
- vllm/model_executor/layers/quantization/
- vllm/model_executor/layers/fused_moe/
- vllm/model_executor/layers/mamba/
- vllm/model_executor/layers/layernorm.py
- vllm/model_executor/layers/linear.py
- vllm/model_executor/kernels/linear/
- vllm/third_party/flash_linear_attention/ops/
- vllm/v1/attention/
- vllm/v1/spec_decode/
- vllm/v1/worker/
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
commands:
- export VLLM_WORKER_MULTIPROC_METHOD=spawn
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-blackwell-ep-mi355.txt
- label: ":nvidia: (B200) LM Eval Qwen3.5 Models"
key: lm-eval-qwen3-5-models-2xb200
@@ -405,7 +451,7 @@ steps:
label: ":amd: (MI355) LM Eval Qwen3.5 Models"
dind: false
device: mi355_2
timeout_in_minutes: 40
timeout_in_minutes: 75
depends_on:
- image-build-amd
source_file_dependencies:
@@ -418,10 +464,18 @@ steps:
- vllm/model_executor/models/qwen3_next.py
- vllm/model_executor/models/qwen3_next_mtp.py
- vllm/third_party/flash_linear_attention/ops/
- vllm/distributed/
- vllm/model_executor/layers/fused_moe/
- vllm/model_executor/layers/quantization/modelopt.py
- vllm/model_executor/kernels/linear/nvfp4/
- vllm/v1/attention/
- vllm/v1/worker/
- tests/evals/gsm8k/configs/models-qwen35-mi355.txt
- tests/evals/gsm8k/configs/Qwen3.5-35B-A3B-DEP2.yaml
- tests/evals/gsm8k/configs/Qwen3.5-35B-A3B-FP8-DEP2.yaml
- tests/evals/gsm8k/configs/Qwen3.5-35B-A3B-MXFP4-AITER-TP2.yaml
- tests/evals/gsm8k/configs/Qwen3.5-35B-A3B-MXFP4-EMU-TP2.yaml
- tests/evals/gsm8k/configs/Qwen3.5-397B-A17B-NVFP4-DEP2.yaml
- tests/evals/gsm8k/test_gsm8k_correctness.py
- vllm/_aiter_ops.py
- vllm/platforms/rocm.py
@@ -855,9 +909,9 @@ steps:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/models-turboquant-k8v4.txt
mirror:
amd:
label: ":amd: (MI355) LM Eval TurboQuant k8v4"
label: ":amd: (MI355 DPX) LM Eval TurboQuant k8v4"
dind: false
device: mi355_1
device: mi355_dpx
num_devices: 1
timeout_in_minutes: 30
working_dir: /vllm-workspace/tests
@@ -895,9 +949,9 @@ steps:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/models-turboquant-t4nc.txt
mirror:
amd:
label: ":amd: (MI355) LM Eval TurboQuant t4nc"
label: ":amd: (MI355 DPX) LM Eval TurboQuant t4nc"
dind: false
device: mi355_1
device: mi355_dpx
num_devices: 1
timeout_in_minutes: 30
working_dir: /vllm-workspace/tests
@@ -935,9 +989,9 @@ steps:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/models-turboquant-k3v4nc.txt
mirror:
amd:
label: ":amd: (MI355) LM Eval TurboQuant k3v4nc"
label: ":amd: (MI355 DPX) LM Eval TurboQuant k3v4nc"
dind: false
device: mi355_1
device: mi355_dpx
num_devices: 1
timeout_in_minutes: 30
working_dir: /vllm-workspace/tests
@@ -975,9 +1029,9 @@ steps:
- pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/models-turboquant-t3nc.txt
mirror:
amd:
label: ":amd: (MI355) LM Eval TurboQuant t3nc"
label: ":amd: (MI355 DPX) LM Eval TurboQuant t3nc"
dind: false
device: mi355_1
device: mi355_dpx
num_devices: 1
timeout_in_minutes: 30
working_dir: /vllm-workspace/tests
+26
View File
@@ -423,6 +423,32 @@ steps:
- tests/v1/e2e/spec_decode/
commands:
- pytest -v -s v1/e2e/spec_decode/acceptance_rates/dflash/ -k "dflash2"
mirror:
amd:
label: ":amd: (MI355) Spec Decode AL DFlash2 Nightly"
dind: false
device: mi355_1
num_devices: 1
timeout_in_minutes: 60
depends_on:
- image-build-amd
source_file_dependencies:
- .buildkite/test_areas/spec_decode.yaml
- tests/v1/e2e/spec_decode/
- tests/evals/gsm8k/
- tests/utils.py
- vllm/v1/spec_decode/
- vllm/v1/worker/gpu/spec_decode/
- vllm/v1/worker/gpu/sample/
- vllm/v1/worker/gpu/model_runner.py
- vllm/v1/attention/
- vllm/model_executor/models/qwen3_dflash.py
- vllm/model_executor/models/qwen3_dflash2.py
- vllm/model_executor/models/qwen3_5.py
- vllm/model_executor/model_loader/
- vllm/model_executor/layers/quantization/
- vllm/model_executor/kernels/linear/
- vllm/platforms/rocm.py
- label: ":nvidia: (H200 MIG 35GB) Spec Decode AL DSpark Nightly"
key: spec-decode-dspark-nightly
+45 -16
View File
@@ -3,6 +3,7 @@
import json
import logging
from contextlib import nullcontext
import pytest
@@ -174,13 +175,18 @@ def test_async_tp_pass_correctness(
@create_new_process_for_each_test()
def test_async_tp_pass_nvfp4_correctness(num_gpus_available: int):
if (
not current_platform.is_cuda()
or not current_platform.is_device_capability_family(100)
):
pytest.skip("NVFP4 requires Blackwell")
if not has_flashinfer():
def test_async_tp_pass_nvfp4_correctness(num_gpus_available: int, caplog_mp_spawn):
is_blackwell = current_platform.is_cuda() and (
current_platform.is_device_capability_family(100)
)
is_rocm_cdna = False
if current_platform.is_rocm():
from vllm.platforms.rocm import on_cdna
is_rocm_cdna = on_cdna()
if not (is_blackwell or is_rocm_cdna):
pytest.skip("NVFP4 AsyncTP requires Blackwell or ROCm CDNA")
if is_blackwell and not has_flashinfer():
pytest.skip("FlashInfer is required for the NVFP4 AsyncTP path")
tp_size = 2
@@ -196,8 +202,7 @@ def test_async_tp_pass_nvfp4_correctness(num_gpus_available: int):
"8",
"--load-format",
"dummy",
"--linear-backend",
"flashinfer_cutlass",
*(["--linear-backend", "flashinfer_cutlass"] if is_blackwell else []),
"--hf-overrides",
json.dumps(NVFP4_HF_OVERRIDES),
]
@@ -213,6 +218,8 @@ def test_async_tp_pass_nvfp4_correctness(num_gpus_available: int):
"sp_min_token_num": 1,
},
}
if is_rocm_cdna:
compilation_config["inductor_compile_config"] = {"force_disable_caches": True}
async_tp_args = [
*common_args,
@@ -232,10 +239,32 @@ def test_async_tp_pass_nvfp4_correctness(num_gpus_available: int):
"mp",
]
compare_two_settings(
NVFP4_MODEL_ID,
async_tp_args,
tp_args,
method="generate",
force_v1_runner=True,
)
env = {"VLLM_DISABLE_COMPILE_CACHE": "1"} if is_rocm_cdna else None
log_context = caplog_mp_spawn(logging.DEBUG) if is_rocm_cdna else nullcontext()
with log_context as logs:
compare_two_settings(
NVFP4_MODEL_ID,
async_tp_args,
tp_args,
env1=env,
env2=env,
method="generate",
force_v1_runner=True,
)
if is_rocm_cdna:
assert logs is not None
matches_by_rank = {
rank: [
int(count)
for line in logs.text.splitlines()
if line.startswith(f"(Worker_TP{rank} pid=")
for count in FUSION_LOG_PATTERNS["async_tp"].findall(line)
]
for rank in range(tp_size)
}
assert all(
any(count > 0 for count in matches) for matches in matches_by_rank.values()
), (
"Expected positive NVFP4 AsyncTP rewrites on both TP workers, "
f"found {matches_by_rank}"
)
@@ -374,11 +374,16 @@ def test_tp_sp_generation_prompt_embeds(
@create_new_process_for_each_test()
def test_tp_sp_nvfp4_generation(num_gpus_available: int):
if (
not current_platform.is_cuda()
or not current_platform.is_device_capability_family(100)
):
pytest.skip("NVFP4 requires Blackwell")
is_blackwell = current_platform.is_cuda() and (
current_platform.is_device_capability_family(100)
)
is_rocm_cdna = False
if current_platform.is_rocm():
from vllm.platforms.rocm import on_cdna
is_rocm_cdna = on_cdna()
if not (is_blackwell or is_rocm_cdna):
pytest.skip("NVFP4 sequence parallelism requires Blackwell or ROCm CDNA")
comparison = _build_sp_args(
NVFP4_MODEL_ID,
+15 -9
View File
@@ -8,6 +8,7 @@ Run: pytest tests/distributed/test_mnnvl_alltoall.py -v
import os
import traceback
from contextlib import contextmanager
import pytest
import torch
@@ -148,16 +149,17 @@ def _init_dp_environment(world_size, rank, port, dp_size, dp_port):
ensure_model_parallel_initialized(1, 1)
@contextmanager
def _make_forward_context(rank, world_size, num_tokens_per_rank):
"""Create a forward context with mock DP metadata for AgRs tests.
"""Keep the vLLM config and mock-DP forward context active together.
Returns a context manager suitable for ``with`` statements.
The real DPMetadata (with sp_local_sizes etc.) is created internally
by set_forward_context from num_tokens_across_dp; the attn_metadata
placeholder just satisfies the "attn_metadata is not None" guard.
"""
from vllm.config import VllmConfig, set_current_vllm_config
from vllm.config.parallel import ParallelConfig
from vllm.config.vllm import VllmConfig
from vllm.forward_context import set_forward_context
class _AttnMeta:
@@ -173,14 +175,18 @@ def _make_forward_context(rank, world_size, num_tokens_per_rank):
is_moe_model=True,
data_parallel_rank=rank,
)
return set_forward_context(
_AttnMeta(),
vllm_config,
num_tokens=num_tokens_per_rank,
num_tokens_across_dp=torch.tensor(
[num_tokens_per_rank] * world_size, dtype=torch.int
with (
set_current_vllm_config(vllm_config),
set_forward_context(
_AttnMeta(),
vllm_config,
num_tokens=num_tokens_per_rank,
num_tokens_across_dp=torch.tensor(
[num_tokens_per_rank] * world_size, dtype=torch.int
),
),
)
):
yield
# ---------------------------------------------------------------------------
@@ -0,0 +1,18 @@
model_name: "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4"
accuracy_threshold: 0.93
num_questions: 1319
num_fewshot: 5
max_concurrency: 16
rocm_request_timeout_seconds: 1800
min_acceptance_length: 2.0
startup_max_wait_seconds: 1200
server_args: >-
--enforce-eager
--max-model-len 4096
--max-num-seqs 16
--max-num-batched-tokens 32768
--gpu-memory-utilization 0.5
--tensor-parallel-size 2
--enable-expert-parallel
--mamba-backend triton
--speculative-config '{"method":"mtp","num_speculative_tokens":5}'
@@ -0,0 +1,17 @@
model_name: "nm-testing/Qwen3-Next-80B-A3B-Instruct-NVFP4"
accuracy_threshold: 0.75
num_questions: 1319
num_fewshot: 5
max_concurrency: 16
rocm_request_timeout_seconds: 1800
server_args: >-
--enforce-eager
--max-model-len 4096
--max-num-seqs 16
--max-num-batched-tokens 32768
--gpu-memory-utilization 0.5
--tensor-parallel-size 2
--enable-expert-parallel
--all2all-backend allgather_reducescatter
--attention-backend TRITON_ATTN
--no-async-scheduling
@@ -0,0 +1,19 @@
model_name: "nvidia/Qwen3-Next-80B-A3B-Instruct-NVFP4"
accuracy_threshold: 0.85
num_questions: 1319
num_fewshot: 5
max_concurrency: 16
rocm_request_timeout_seconds: 1800
min_acceptance_length: 1.5
server_args: >-
--enforce-eager
--max-model-len 4096
--max-num-seqs 16
--max-num-batched-tokens 32768
--gpu-memory-utilization 0.5
--tensor-parallel-size 2
--enable-expert-parallel
--all2all-backend allgather_reducescatter
--attention-backend TRITON_ATTN
--no-async-scheduling
--speculative-config '{"method":"qwen3_next_mtp","num_speculative_tokens":1}'
@@ -0,0 +1,5 @@
# Exact B200 compressed-tensors checkpoint; it does not contain MTP weights.
Qwen3-Next-80B-A3B-NVFP4-EP2-CT-MI355.yaml
# MTP-capable ModelOpt checkpoint exercises NVFP4 EP2 with MTP1.
Qwen3-Next-80B-A3B-NVFP4-EP2-MTP-MI355.yaml
Nemotron-3-Super-120B-A12B-NVFP4-MI355.yaml
@@ -1,2 +1,5 @@
Qwen3-0.6B-FP8.yaml
Qwen3-1.7B-MXFP4.yaml
Qwen3-30B-A3B-NVFP4.yaml
Laguna-XS.2-NVFP4.yaml
Laguna-XS-2.1-INT4.yaml
@@ -2,3 +2,4 @@ Qwen3.5-35B-A3B-DEP2.yaml
Qwen3.5-35B-A3B-FP8-DEP2.yaml
Qwen3.5-35B-A3B-MXFP4-AITER-TP2.yaml
Qwen3.5-35B-A3B-MXFP4-EMU-TP2.yaml
Qwen3.5-397B-A17B-NVFP4-DEP2.yaml