@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 225d1090a0
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 7, 02:45 UTC

Enabling some B200-specific tests on MI355 (#35253)

Signed-off-by: Alexei V. Ivanov <alexei.ivanov@amd.com> Signed-off-by: Alexei-V-Ivanov-AMD <156011006+Alexei-V-Ivanov-AMD@users.noreply.github.com>

Alexei-V-Ivanov-AMD committed Mar 6, 2026 at 13:27 UTC 225d1090a0996710a23d58cfcd1d4d2b089cc553
4 files changed +89 -110
.buildkite/test-amd.yaml
+71 -110
@@ -499,17 +499,6 @@ steps:
499 - pytest -v -s v1/determinism/test_batch_invariance.py
500 - pytest -v -s v1/determinism/test_rms_norm_batch_invariant.py
501
502 -- label: V1 Test attention (B200) # 10min
503 - timeout_in_minutes: 30
504 - gpu: b200
505 - source_file_dependencies:
506 - - vllm/config/attention.py
507 - - vllm/model_executor/layers/attention
508 - - vllm/v1/attention
509 - - tests/v1/attention
510 - commands:
511 - - pytest -v -s v1/attention
512 -
502 - label: V1 Test others (CPU) # 5 mins
503 mirror_hardwares: [amdexperimental, amdproduction, amdtentative]
504 agent_pool: mi325_1
@@ -1185,47 +1174,40 @@ steps:
1174 # Whisper needs spawn method to avoid deadlock
1175 - VLLM_WORKER_MULTIPROC_METHOD=spawn python3 examples/offline_inference/audio_language.py --model-type whisper
1176
1188 -- label: Blackwell Test # 21 min
1189 - timeout_in_minutes: 30
1177 +- label: Blackwell Fusion and Compile Tests # 30 min
1178 + timeout_in_minutes: 40
1179 working_dir: "/vllm-workspace/"
1180 gpu: b200
1192 - # optional: true
1181 source_file_dependencies:
1182 - csrc/quantization/fp4/
1195 - - csrc/attention/mla/
1196 - - csrc/quantization/cutlass_w8a8/moe/
1197 - - vllm/model_executor/layers/fused_moe/cutlass_moe.py
1198 - - vllm/model_executor/layers/fused_moe/flashinfer_cutlass_moe.py
1199 - - vllm/model_executor/layers/fused_moe/flashinfer_a2a_prepare_finalize.py
1183 - vllm/model_executor/layers/quantization/utils/flashinfer_utils.py
1184 - vllm/v1/attention/backends/flashinfer.py
1202 - - vllm/v1/attention/backends/mla/cutlass_mla.py
1203 - - vllm/v1/attention/backends/mla/flashinfer_mla.py
1204 - - vllm/v1/attention/selector.py
1205 - - vllm/platforms/cuda.py
1185 + - vllm/v1/worker/
1186 + - vllm/v1/cudagraph_dispatcher.py
1187 + - vllm/compilation/
1188 + # can affect pattern matching
1189 + - vllm/model_executor/layers/layernorm.py
1190 + - vllm/model_executor/layers/activation.py
1191 + - vllm/model_executor/layers/quantization/input_quant_fp8.py
1192 + - tests/compile/passes/test_fusion_attn.py
1193 + - tests/compile/passes/test_silu_mul_quant_fusion.py
1194 + - tests/compile/passes/distributed/test_fusion_all_reduce.py
1195 + - tests/compile/fullgraph/test_full_graph.py
1196 commands:
1197 - nvidia-smi
1208 - - python3 examples/offline_inference/basic/chat.py
1209 - # Attention
1210 - # num_heads2 broken by https://github.com/flashinfer-ai/flashinfer/issues/1353
1211 - - pytest -v -s tests/kernels/attention/test_attention_selector.py
1212 - - pytest -v -s tests/kernels/attention/test_flashinfer.py -k 'not num_heads2'
1213 - - pytest -v -s tests/kernels/attention/test_flashinfer_trtllm_attention.py
1214 - - pytest -v -s tests/kernels/attention/test_cutlass_mla_decode.py
1215 - - pytest -v -s tests/kernels/attention/test_flashinfer_mla_decode.py
1216 - # Quantization
1217 - - pytest -v -s tests/kernels/quantization/test_cutlass_scaled_mm.py -k 'fp8'
1218 - - pytest -v -s tests/kernels/quantization/test_nvfp4_quant.py
1219 - - pytest -v -s tests/kernels/quantization/test_silu_mul_nvfp4_quant.py
1220 - - pytest -v -s tests/kernels/quantization/test_nvfp4_scaled_mm.py
1221 - - pytest -v -s tests/kernels/quantization/test_flashinfer_scaled_mm.py
1222 - - pytest -v -s tests/kernels/quantization/test_flashinfer_nvfp4_scaled_mm.py
1223 - - pytest -v -s tests/kernels/quantization/test_nvfp4_qutlass.py
1224 - - pytest -v -s tests/kernels/quantization/test_mxfp4_qutlass.py
1225 - - pytest -v -s tests/kernels/moe/test_nvfp4_moe.py
1226 - - pytest -v -s tests/kernels/moe/test_ocp_mx_moe.py
1227 - - pytest -v -s tests/kernels/moe/test_flashinfer.py
1228 - - pytest -v -s tests/kernels/moe/test_cutedsl_moe.py
1198 + - pytest -v -s tests/compile/passes/test_fusion_attn.py
1199 + - pytest -v -s tests/compile/passes/test_silu_mul_quant_fusion.py
1200 + # this runner has 2 GPUs available even though num_gpus=2 is not set
1201 + - pytest -v -s tests/compile/passes/distributed/test_fusion_all_reduce.py
1202 +
1203 + # # Limit to Inductor partition, no custom ops, and allreduce & attn fusion to reduce running time
1204 + # # Wrap with quotes to escape yaml
1205 + # - "pytest -v -s tests/compile/distributed/test_fusions_e2e.py::test_tp2_attn_quant_allreduce_rmsnorm -k 'True and not +quant_fp8 and not +rms_norm'"
1206 + # Old E2E tests were removed in https://github.com/vllm-project/vllm/pull/33293
1207 + # in favor of new tests in fusions_e2e. We avoid replicating the new jobs in this file as it's deprecated.
1208 +
1209 + # test_fp8_kv_scale_compile requires FlashAttention (not supported on default L4/L40)
1210 + - pytest -v -s tests/compile/fullgraph/test_full_graph.py::test_fp8_kv_scale_compile
1211
1212 - label: Blackwell GPT-OSS Eval
1213 timeout_in_minutes: 60
@@ -1258,16 +1240,6 @@ steps:
1240 commands:
1241 - pytest -s -v tests/quantization/test_blackwell_moe.py
1242
1261 -- label: Blackwell LM Eval Small Models
1262 - timeout_in_minutes: 120
1263 - gpu: b200
1264 - optional: true # run on nightlies
1265 - source_file_dependencies:
1266 - - csrc/
1267 - - vllm/model_executor/layers/quantization
1268 - commands:
1269 - - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-blackwell.txt
1270 -
1243 ##### 1 GPU test #####
1244 ##### multi gpus test #####
1245
@@ -1681,16 +1653,6 @@ steps:
1653 commands:
1654 - bash .buildkite/scripts/scheduled_integration_test/qwen30b_a3b_fp8_block_ep_eplb.sh 0.8 200 8020
1655
1684 -- label: Qwen3-30B-A3B-FP8-block Accuracy (B200)
1685 - timeout_in_minutes: 60
1686 - gpu: b200
1687 - optional: true
1688 - num_gpus: 2
1689 - working_dir: "/vllm-workspace"
1690 - commands:
1691 - - bash .buildkite/scripts/scheduled_integration_test/qwen30b_a3b_fp8_block_ep_eplb.sh 0.8 200 8020 2 1
1692 -
1693 -
1656 - label: Qwen3-Next-80B-A3B-Instruct MTP Async EPLB Accuracy
1657 timeout_in_minutes: 60
1658 mirror_hardwares: [amdexperimental, amdproduction]
@@ -2176,19 +2138,6 @@ steps:
2138
2139 # TODO: Add the "V1 Test attention (MI300)" test group
2140
2179 -- label: V1 Test attention (H100) # 10min
2180 - mirror_hardwares: [amdexperimental]
2181 - agent_pool: mi355_1
2182 - timeout_in_minutes: 30
2183 - gpu: h100
2184 - source_file_dependencies:
2185 - - vllm/config/attention.py
2186 - - vllm/model_executor/layers/attention
2187 - - vllm/v1/attention
2188 - - tests/v1/attention
2189 - commands:
2190 - - pytest -v -s v1/attention
2191 -
2141 - label: Batch Invariance Tests (H100) # 10min
2142 mirror_hardwares: [amdexperimental]
2143 agent_pool: mi355_1
@@ -2205,6 +2154,8 @@ steps:
2154 - pytest -v -s v1/determinism/test_rms_norm_batch_invariant.py
2155
2156 - label: V1 Test attention (B200) # 10min
2157 + mirror_hardwares: [amdexperimental, amdmi355]
2158 + agent_pool: mi355_1
2159 timeout_in_minutes: 30
2160 gpu: b200
2161 source_file_dependencies:
@@ -2829,7 +2780,9 @@ steps:
2780 # Whisper needs spawn method to avoid deadlock
2781 - VLLM_WORKER_MULTIPROC_METHOD=spawn python3 examples/offline_inference/audio_language.py --model-type whisper
2782
2832 -- label: Blackwell Test # 21 min
2783 +- label: Blackwell Test (MI355) # 21 min
2784 + mirror_hardwares: [amdexperimental, amdmi355]
2785 + agent_pool: mi355_1
2786 timeout_in_minutes: 30
2787 working_dir: "/vllm-workspace/"
2788 gpu: b200
@@ -2848,28 +2801,28 @@ steps:
2801 - vllm/v1/attention/selector.py
2802 - vllm/platforms/cuda.py
2803 commands:
2851 - - nvidia-smi
2804 + rocm-smi
2805 - python3 examples/offline_inference/basic/chat.py
2806 # Attention
2807 # num_heads2 broken by https://github.com/flashinfer-ai/flashinfer/issues/1353
2855 - - pytest -v -s tests/kernels/attention/test_attention_selector.py
2856 - - pytest -v -s tests/kernels/attention/test_flashinfer.py -k 'not num_heads2'
2857 - - pytest -v -s tests/kernels/attention/test_flashinfer_trtllm_attention.py
2858 - - pytest -v -s tests/kernels/attention/test_cutlass_mla_decode.py
2859 - - pytest -v -s tests/kernels/attention/test_flashinfer_mla_decode.py
2860 - # Quantization
2861 - - pytest -v -s tests/kernels/quantization/test_cutlass_scaled_mm.py -k 'fp8'
2862 - - pytest -v -s tests/kernels/quantization/test_nvfp4_quant.py
2863 - - pytest -v -s tests/kernels/quantization/test_silu_mul_nvfp4_quant.py
2864 - - pytest -v -s tests/kernels/quantization/test_nvfp4_scaled_mm.py
2865 - - pytest -v -s tests/kernels/quantization/test_flashinfer_scaled_mm.py
2866 - - pytest -v -s tests/kernels/quantization/test_flashinfer_nvfp4_scaled_mm.py
2867 - - pytest -v -s tests/kernels/quantization/test_nvfp4_qutlass.py
2868 - - pytest -v -s tests/kernels/quantization/test_mxfp4_qutlass.py
2869 - - pytest -v -s tests/kernels/moe/test_nvfp4_moe.py
2870 - - pytest -v -s tests/kernels/moe/test_ocp_mx_moe.py
2871 - - pytest -v -s tests/kernels/moe/test_flashinfer.py
2872 - - pytest -v -s tests/kernels/moe/test_cutedsl_moe.py
2808 + - pytest -v -s tests/kernels/attention/test_attention_selector.py
2809 + #- pytest -v -s tests/kernels/attention/test_flashinfer.py -k 'not num_heads2'
2810 + #- pytest -v -s tests/kernels/attention/test_flashinfer_trtllm_attention.py
2811 + #- pytest -v -s tests/kernels/attention/test_cutlass_mla_decode.py
2812 + #- pytest -v -s tests/kernels/attention/test_flashinfer_mla_decode.py
2813 + ## Quantization
2814 + #- pytest -v -s tests/kernels/quantization/test_cutlass_scaled_mm.py -k 'fp8'
2815 + #- pytest -v -s tests/kernels/quantization/test_nvfp4_quant.py
2816 + #- pytest -v -s tests/kernels/quantization/test_silu_mul_nvfp4_quant.py
2817 + #- pytest -v -s tests/kernels/quantization/test_nvfp4_scaled_mm.py
2818 + #- pytest -v -s tests/kernels/quantization/test_flashinfer_scaled_mm.py
2819 + #- pytest -v -s tests/kernels/quantization/test_flashinfer_nvfp4_scaled_mm.py
2820 + #- pytest -v -s tests/kernels/quantization/test_nvfp4_qutlass.py
2821 + #- pytest -v -s tests/kernels/quantization/test_mxfp4_qutlass.py
2822 + #- pytest -v -s tests/kernels/moe/test_nvfp4_moe.py
2823 + #- pytest -v -s tests/kernels/moe/test_ocp_mx_moe.py
2824 + #- pytest -v -s tests/kernels/moe/test_flashinfer.py
2825 + #- pytest -v -s tests/kernels/moe/test_cutedsl_moe.py
2826
2827 - label: Blackwell Fusion and Compile Tests # 30 min
2828 timeout_in_minutes: 40
@@ -2939,13 +2892,15 @@ steps:
2892
2893 - label: Blackwell LM Eval Small Models
2894 timeout_in_minutes: 120
2895 + mirror_hardwares: [amdexperimental, amdproduction, amdmi355]
2896 + agent_pool: mi355_2
2897 gpu: b200
2898 optional: true # run on nightlies
2899 source_file_dependencies:
2900 - csrc/
2901 - vllm/model_executor/layers/quantization
2902 commands:
2948 - - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-blackwell.txt
2903 + - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=configs/models-mi355.txt
2904
2905 ##### 1 GPU test #####
2906 ##### multi gpus test #####
@@ -3328,18 +3283,9 @@ steps:
3283 commands:
3284 - bash .buildkite/scripts/scheduled_integration_test/deepseek_v2_lite_ep_eplb.sh 0.25 200 8010
3285
3331 -- label: Qwen3-30B-A3B-FP8-block Accuracy (H100)
3332 - mirror_hardwares: [amdexperimental, amdproduction]
3333 - agent_pool: mi355_4
3334 - timeout_in_minutes: 60
3335 - gpu: h100
3336 - optional: true
3337 - num_gpus: 4
3338 - working_dir: "/vllm-workspace"
3339 - commands:
3340 - - bash .buildkite/scripts/scheduled_integration_test/qwen30b_a3b_fp8_block_ep_eplb.sh 0.8 200 8020
3341 -
3342 -- label: Qwen3-30B-A3B-FP8-block Accuracy (B200)
3286 +- label: Qwen3-30B-A3B-FP8-block Accuracy (B200/MI355)
3287 + mirror_hardwares: [amdexperimental, amdproduction, amdmi355]
3288 + agent_pool: mi355_2
3289 timeout_in_minutes: 60
3290 gpu: b200
3291 optional: true
@@ -3358,3 +3304,18 @@ steps:
3304 working_dir: "/vllm-workspace"
3305 commands:
3306 - bash .buildkite/scripts/scheduled_integration_test/qwen3_next_mtp_async_eplb.sh 0.8 1319 8040
3307 +
3308 +- label: Attention Benchmarks Smoke Test (B200/MI355)
3309 + device: b200
3310 + mirror_hardwares: [amdexperimental, amdmi355]
3311 + agent_pool: mi355_2
3312 + num_gpus: 2
3313 + optional: true
3314 + working_dir: "/vllm-workspace/"
3315 + timeout_in_minutes: 10
3316 + source_file_dependencies:
3317 + - benchmarks/attention_benchmarks/
3318 + - vllm/v1/attention/
3319 + commands:
3320 + - python3 benchmarks/attention_benchmarks/benchmark.py --backends ROCM_ATTN ROCM_AITER_FA ROCM_AITER_UNIFIED_ATTN --batch-specs "8q1s1k" --repeats 1 --warmup-iters 1
3321 +
tests/evals/gsm8k/configs/Qwen3-Next-FP8-EP2_MI355.yaml new
+9
@@ -0,0 +1,9 @@
1 +model_name: "Qwen/Qwen3-Next-80B-A3B-Instruct-FP8"
2 +accuracy_threshold: 0.85
3 +num_questions: 1319
4 +num_fewshot: 5
5 +server_args: >-
6 + --max-model-len 4096
7 + --tensor-parallel-size 2
8 + --enable-expert-parallel
9 + --async-scheduling
tests/evals/gsm8k/configs/models-mi355.txt new
+5
@@ -0,0 +1,5 @@
1 +Qwen3-0.6B-FP8.yaml
2 +Qwen2.5-VL-3B-Instruct-FP8-dynamic.yaml
3 +Qwen1.5-MoE-W4A16-CT.yaml
4 +DeepSeek-V2-Lite-Instruct-FP8.yaml
5 +Qwen3-Next-FP8-EP2_MI355.yaml
tests/kernels/attention/test_attention_selector.py
+4
@@ -343,6 +343,10 @@ def test_auto_backend_selection_behavior():
343 ("FLEX_ATTENTION", None, False), # Flex does not support
344 ],
345 )
346 +@pytest.mark.skipif(
347 + current_platform.is_rocm(),
348 + reason="Attention backend FA3 is not supported on ROCm. This test can't succeed.",
349 +)
350 def test_per_head_quant_scales_backend_selection(
351 backend_name: str, flash_attn_version: int | None, should_succeed: bool
352 ):