| 1 | group: Models - Language |
| 2 | depends_on: |
| 3 | - image-build |
| 4 | steps: |
| 5 | - label: ":nvidia: (H200 MIG 18GB) Language Models (Standard)" |
| 6 | key: language-models-tests-standard |
| 7 | timeout_in_minutes: 30 |
| 8 | device: h200_18gb |
| 9 | source_file_dependencies: |
| 10 | - vllm/ |
| 11 | - "!vllm/distributed/kv_transfer/" |
| 12 | - tests/models/language |
| 13 | commands: |
| 14 | # Test standard language models, excluding a subset of slow tests |
| 15 | - pip freeze | grep -E 'torch' |
| 16 | - pytest -v -s models/language -m 'core_model and (not slow_test)' |
| 17 | mirror: |
| 18 | amd: |
| 19 | label: ":amd: (MI355 DPX) Language Models (Standard)" |
| 20 | dind: false |
| 21 | device: mi355_dpx |
| 22 | timeout_in_minutes: 60 |
| 23 | depends_on: |
| 24 | - image-build-amd |
| 25 | |
| 26 | - label: ":nvidia: (H200 MIG 35GB) Language Models (Extra Standard) Shard %N" |
| 27 | device: h200_35gb |
| 28 | key: language-models-tests-extra-standard |
| 29 | timeout_in_minutes: 40 |
| 30 | source_file_dependencies: |
| 31 | - vllm/model_executor/models/ |
| 32 | - tests/models/language/pooling/test_embedding.py |
| 33 | - tests/models/language/generation/test_common.py |
| 34 | - tests/models/language/pooling/test_classification.py |
| 35 | commands: |
| 36 | # Shard slow subset of standard language models tests. Only run when model |
| 37 | # source is modified, or when specified test files are modified |
| 38 | - pip freeze | grep -E 'torch' |
| 39 | - pytest -v -s models/language -m 'core_model and slow_test' --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB |
| 40 | parallelism: 2 |
| 41 | mirror: |
| 42 | amd: |
| 43 | label: ":amd: (MI355 DPX) Language Models (Extra Standard) Shard %N" |
| 44 | dind: false |
| 45 | device: mi355_dpx |
| 46 | timeout_in_minutes: 40 |
| 47 | depends_on: |
| 48 | - image-build-amd |
| 49 | source_file_dependencies: |
| 50 | - vllm/model_executor/models/ |
| 51 | - vllm/model_executor/model_loader/ |
| 52 | - vllm/model_executor/layers/ |
| 53 | - vllm/v1/attention/backends/ |
| 54 | - vllm/v1/attention/selector.py |
| 55 | - tests/models/language/pooling/test_embedding.py |
| 56 | - tests/models/language/generation/test_common.py |
| 57 | - tests/models/language/pooling/test_classification.py |
| 58 | - vllm/_aiter_ops.py |
| 59 | - vllm/platforms/rocm.py |
| 60 | - label: ":nvidia: (H200 MIG 35GB) Language Models (Hybrid) Shard %N" |
| 61 | device: h200_35gb |
| 62 | key: language-models-tests-hybrid |
| 63 | timeout_in_minutes: 65 |
| 64 | env: |
| 65 | # GitHub intermittently rejects HTTP/2 upload-pack requests from the H200 |
| 66 | # CI image. Force Git's smart protocol to use HTTP/1.1 for source installs. |
| 67 | GIT_CONFIG_COUNT: "1" |
| 68 | GIT_CONFIG_KEY_0: http.version |
| 69 | GIT_CONFIG_VALUE_0: HTTP/1.1 |
| 70 | source_file_dependencies: |
| 71 | - vllm/ |
| 72 | - "!vllm/distributed/kv_transfer/" |
| 73 | - tests/models/language/generation |
| 74 | commands: |
| 75 | # Install fast path packages for testing against transformers |
| 76 | # torch>=2.14 nightly requires C++20 for ATen headers (pytorch/pytorch#178150); |
| 77 | # mamba@v2.3.0 pins -std=c++17, so build from a patched checkout instead of the git URL. |
| 78 | - rm -rf /tmp/mamba-src && git clone --depth 1 --branch v2.3.0 https://github.com/state-spaces/mamba /tmp/mamba-src && sed -i 's/-std=c++17/-std=c++20/g' /tmp/mamba-src/setup.py && MAMBA_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation /tmp/mamba-src |
| 79 | - CAUSAL_CONV1D_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/Dao-AILab/causal-conv1d@v1.6.0' |
| 80 | # Shard the hybrid language model tests that are numerically stable on Hopper. |
| 81 | - pytest -v -s models/language/generation -m hybrid_model -k 'not granite-4.0-tiny-preview' --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB |
| 82 | parallelism: 2 |
| 83 | mirror: |
| 84 | amd: |
| 85 | label: ":amd: (MI355 DPX) Language Models (Hybrid) Shard %N" |
| 86 | dind: false |
| 87 | device: mi355_dpx |
| 88 | timeout_in_minutes: 65 |
| 89 | depends_on: |
| 90 | - image-build-amd |
| 91 | commands: |
| 92 | - MAMBA_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/AndreasKaratzas/mamba@fix-rocm-7.0-warp-size-constexpr' |
| 93 | - CAUSAL_CONV1D_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/Dao-AILab/causal-conv1d@v1.6.0' |
| 94 | - pytest -v -s models/language/generation -m hybrid_model -k 'not granite-4.0-tiny-preview' --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB |
| 95 | |
| 96 | # Granite 4 hybrid generation is sensitive to hardware-specific Triton SSD |
| 97 | # autotuning (https://github.com/vllm-project/vllm/issues/25194). Keep this one |
| 98 | # correctness test on L4 until its H200 output matches the Transformers reference. |
| 99 | - label: ":nvidia: (L4) Granite Language Model Compatibility" |
| 100 | key: language-models-tests-granite-l4-compatibility |
| 101 | device: l4 |
| 102 | num_devices: 1 |
| 103 | timeout_in_minutes: 65 |
| 104 | source_file_dependencies: |
| 105 | - vllm/ |
| 106 | - "!vllm/distributed/kv_transfer/" |
| 107 | - tests/models/language/generation |
| 108 | commands: |
| 109 | # torch>=2.14 nightly requires C++20 for ATen headers (pytorch/pytorch#178150); |
| 110 | # mamba@v2.3.0 pins -std=c++17, so build from a patched checkout instead of the git URL. |
| 111 | - rm -rf /tmp/mamba-src && git clone --depth 1 --branch v2.3.0 https://github.com/state-spaces/mamba /tmp/mamba-src && sed -i 's/-std=c++17/-std=c++20/g' /tmp/mamba-src/setup.py && MAMBA_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation /tmp/mamba-src |
| 112 | - CAUSAL_CONV1D_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/Dao-AILab/causal-conv1d@v1.6.0' |
| 113 | - pytest -v -s models/language/generation -m hybrid_model -k 'granite-4.0-tiny-preview' |
| 114 | mirror: |
| 115 | amd: |
| 116 | label: ":amd: (MI355 DPX) Granite Language Model Compatibility" |
| 117 | dind: false |
| 118 | device: mi355_dpx |
| 119 | num_devices: 1 |
| 120 | timeout_in_minutes: 80 |
| 121 | working_dir: /vllm-workspace/tests |
| 122 | depends_on: |
| 123 | - image-build-amd |
| 124 | source_file_dependencies: |
| 125 | - vllm/ |
| 126 | - "!vllm/distributed/kv_transfer/" |
| 127 | - tests/models/language/generation |
| 128 | commands: |
| 129 | - export GIT_CONFIG_COUNT=1 |
| 130 | - export GIT_CONFIG_KEY_0=http.version |
| 131 | - export GIT_CONFIG_VALUE_0=HTTP/1.1 |
| 132 | - MAMBA_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/AndreasKaratzas/mamba@fix-rocm-7.0-warp-size-constexpr' |
| 133 | - CAUSAL_CONV1D_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/Dao-AILab/causal-conv1d@v1.6.0' |
| 134 | - pytest -v -s models/language/generation -m hybrid_model -k 'granite-4.0-tiny-preview' |
| 135 | |
| 136 | - label: ":nvidia: (H200 MIG 35GB) Language Models (Extended Generation)" |
| 137 | device: h200_35gb |
| 138 | key: language-models-test-extended-generation |
| 139 | timeout_in_minutes: 80 |
| 140 | optional: true |
| 141 | source_file_dependencies: |
| 142 | - vllm/ |
| 143 | - "!vllm/distributed/kv_transfer/" |
| 144 | - tests/models/language/generation |
| 145 | commands: |
| 146 | # Install fast path packages for testing against transformers |
| 147 | # torch>=2.14 nightly requires C++20 for ATen headers (pytorch/pytorch#178150); |
| 148 | # mamba@v2.3.0 pins -std=c++17, so build from a patched checkout instead of the git URL. |
| 149 | - rm -rf /tmp/mamba-src && git clone --depth 1 --branch v2.3.0 https://github.com/state-spaces/mamba /tmp/mamba-src && sed -i 's/-std=c++17/-std=c++20/g' /tmp/mamba-src/setup.py && MAMBA_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation /tmp/mamba-src |
| 150 | - CAUSAL_CONV1D_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/Dao-AILab/causal-conv1d@v1.6.0' |
| 151 | - pytest -v -s models/language/generation -m '(not core_model) and (not hybrid_model)' |
| 152 | mirror: |
| 153 | amd: |
| 154 | label: ":amd: (MI355 DPX) Language Models (Extended Generation)" |
| 155 | dind: false |
| 156 | device: mi355_dpx |
| 157 | timeout_in_minutes: 95 |
| 158 | depends_on: |
| 159 | - image-build-amd |
| 160 | commands: |
| 161 | - MAMBA_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/AndreasKaratzas/mamba@fix-rocm-7.0-warp-size-constexpr' |
| 162 | - CAUSAL_CONV1D_FORCE_BUILD=TRUE uv pip install --system --no-build-isolation 'git+https://github.com/Dao-AILab/causal-conv1d@v1.6.0' |
| 163 | - pytest -v -s models/language/generation -m '(not core_model) and (not hybrid_model)' |
| 164 | |
| 165 | - label: ":nvidia: (H200 MIG 18GB) Language Models (PPL)" |
| 166 | key: language-models-test-ppl |
| 167 | timeout_in_minutes: 30 |
| 168 | device: h200_18gb |
| 169 | optional: true |
| 170 | source_file_dependencies: |
| 171 | - vllm/ |
| 172 | - "!vllm/distributed/kv_transfer/" |
| 173 | - tests/models/language/generation_ppl_test |
| 174 | commands: |
| 175 | - pytest -v -s models/language/generation_ppl_test |
| 176 | mirror: |
| 177 | amd: |
| 178 | label: ":amd: (MI250) Language Models (PPL)" |
| 179 | dind: false |
| 180 | device: mi250_1 |
| 181 | timeout_in_minutes: 65 |
| 182 | depends_on: |
| 183 | - image-build-amd |
| 184 | source_file_dependencies: |
| 185 | - vllm/model_executor/models/qwen3_5.py |
| 186 | - vllm/model_executor/models/qwen3_5_mtp.py |
| 187 | - vllm/transformers_utils/configs/qwen3_5.py |
| 188 | - vllm/transformers_utils/configs/qwen3_5_moe.py |
| 189 | - vllm/model_executor/models/qwen2.py |
| 190 | - vllm/model_executor/models/qwen3.py |
| 191 | - vllm/model_executor/models/qwen3_next.py |
| 192 | - vllm/model_executor/models/qwen3_next_mtp.py |
| 193 | - vllm/model_executor/layers/fla/ops/ |
| 194 | - vllm/_aiter_ops.py |
| 195 | - vllm/v1/attention/backends/triton_attn.py |
| 196 | - vllm/v1/attention/backends/rocm_attn.py |
| 197 | - vllm/v1/attention/backends/rocm_aiter_unified_attn.py |
| 198 | - vllm/v1/attention/backends/rocm_aiter_fa.py |
| 199 | - vllm/v1/attention/backends/flex_attention.py |
| 200 | - vllm/v1/attention/ops/ |
| 201 | - vllm/platforms/rocm.py |
| 202 | - tests/models/language/generation_ppl_test |
| 203 | |
| 204 | - label: ":nvidia: (H200 MIG 35GB) Language Models (Extended Pooling) Shard %N" |
| 205 | device: h200_35gb |
| 206 | key: language-models-test-extended-pooling |
| 207 | timeout_in_minutes: 120 |
| 208 | parallelism: 4 |
| 209 | optional: true |
| 210 | source_file_dependencies: |
| 211 | - vllm/ |
| 212 | - "!vllm/distributed/kv_transfer/" |
| 213 | - tests/models/language/pooling |
| 214 | commands: |
| 215 | - pytest -v -s models/language/pooling -m 'not core_model' --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB |
| 216 | mirror: |
| 217 | amd: |
| 218 | label: ":amd: (MI300) Language Models (Extended Pooling) Shard %N" |
| 219 | dind: false |
| 220 | device: mi300_1 |
| 221 | timeout_in_minutes: 95 |
| 222 | depends_on: |
| 223 | - image-build-amd |
| 224 | |
| 225 | - label: ":nvidia: (H200 MIG 18GB) Language Models (MTEB)" |
| 226 | key: language-models-test-mteb |
| 227 | timeout_in_minutes: 68 |
| 228 | device: h200_18gb |
| 229 | optional: true |
| 230 | source_file_dependencies: |
| 231 | - vllm/ |
| 232 | - "!vllm/distributed/kv_transfer/" |
| 233 | - tests/models/language/pooling_mteb_test |
| 234 | commands: |
| 235 | - pytest -v -s models/language/pooling_mteb_test |
| 236 | mirror: |
| 237 | amd: |
| 238 | label: ":amd: (MI250) Language Models (MTEB)" |
| 239 | dind: false |
| 240 | device: mi250_1 |
| 241 | timeout_in_minutes: 60 |
| 242 | depends_on: |
| 243 | - image-build-amd |