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 3, 22:45 UTC
[CI/Build] Reduce LoRA model tests. (#42266)
Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>
Jee Jee Li committed
May 11, 2026 at 14:49 UTC
05d610e5cdb710bffdccdda630b4eb0f79afd76d
11 files changed
+50
-31
.buildkite/test-amd.yaml
+2
-2
@@ -460,7 +460,7 @@ steps:
460
- tests/lora
461
- vllm/platforms/rocm.py
462
commands:
463
- - pytest -v -s lora --shard-id=$$BUILDKITE_PARALLEL_JOB --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --ignore=lora/test_chatglm3_tp.py --ignore=lora/test_llama_tp.py --ignore=lora/test_llm_with_multi_loras.py --ignore=lora/test_olmoe_tp.py --ignore=lora/test_deepseekv2_tp.py --ignore=lora/test_gptoss_tp.py --ignore=lora/test_qwen3moe_tp.py --ignore=lora/test_qwen35_densemodel_lora.py
463
+ - pytest -v -s lora --shard-id=$$BUILDKITE_PARALLEL_JOB --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --ignore=lora/test_chatglm3_tp.py --ignore=lora/test_llama_tp.py --ignore=lora/test_qwen3_with_multi_loras.py --ignore=lora/test_olmoe_tp.py --ignore=lora/test_deepseekv2_tp.py --ignore=lora/test_gptoss_tp.py --ignore=lora/test_qwen3moe_tp.py --ignore=lora/test_qwen35_densemodel_lora.py
464
465
#------------------------------------------------------ mi250 · model_executor -------------------------------------------------------#
466
@@ -1760,7 +1760,7 @@ steps:
1760
- export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
1761
- pytest -v -s -x lora/test_chatglm3_tp.py
1762
- pytest -v -s -x lora/test_llama_tp.py
1763
- - pytest -v -s -x lora/test_llm_with_multi_loras.py
1763
+ - pytest -v -s -x lora/test_qwen3_with_multi_loras.py
1764
- pytest -v -s -x lora/test_olmoe_tp.py
1765
- pytest -v -s -x lora/test_gptoss_tp.py
1766
- pytest -v -s -x lora/test_qwen35_densemodel_lora.py
.buildkite/test_areas/lora.yaml
+2
-2
@@ -9,7 +9,7 @@ steps:
9
- vllm/lora
10
- tests/lora
11
commands:
12
- - pytest -v -s lora --shard-id=$$BUILDKITE_PARALLEL_JOB --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --ignore=lora/test_chatglm3_tp.py --ignore=lora/test_llama_tp.py --ignore=lora/test_llm_with_multi_loras.py --ignore=lora/test_olmoe_tp.py --ignore=lora/test_deepseekv2_tp.py --ignore=lora/test_gptoss_tp.py --ignore=lora/test_qwen3moe_tp.py --ignore=lora/test_qwen35_densemodel_lora.py
12
+ - pytest -v -s lora --shard-id=$$BUILDKITE_PARALLEL_JOB --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --ignore=lora/test_chatglm3_tp.py --ignore=lora/test_llama_tp.py --ignore=lora/test_qwen3_with_multi_loras.py --ignore=lora/test_olmoe_tp.py --ignore=lora/test_deepseekv2_tp.py --ignore=lora/test_gptoss_tp.py --ignore=lora/test_qwen3moe_tp.py --ignore=lora/test_qwen35_densemodel_lora.py
13
parallelism: 4
14
15
@@ -31,7 +31,7 @@ steps:
31
# requires multi-GPU testing for validation.
32
- pytest -v -s -x lora/test_chatglm3_tp.py
33
- pytest -v -s -x lora/test_llama_tp.py
34
- - pytest -v -s -x lora/test_llm_with_multi_loras.py
34
+ - pytest -v -s -x lora/test_qwen3_with_multi_loras.py
35
- pytest -v -s -x lora/test_olmoe_tp.py
36
- pytest -v -s -x lora/test_gptoss_tp.py
37
- pytest -v -s -x lora/test_qwen35_densemodel_lora.py
\ No newline at end of file
tests/lora/test_chatglm3_tp.py
+9
@@ -1,9 +1,12 @@
1
# SPDX-License-Identifier: Apache-2.0
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4
+import pytest
5
+
6
import vllm
7
import vllm.config
8
from vllm.lora.request import LoRARequest
9
+from vllm.platforms import current_platform
10
11
from ..utils import create_new_process_for_each_test, multi_gpu_test
12
@@ -50,6 +53,9 @@ def do_sample(llm: vllm.LLM, lora_path: str, lora_id: int) -> list[str]:
53
return generated_texts
54
55
56
+@pytest.mark.skipif(
57
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
58
+)
59
@create_new_process_for_each_test()
60
def test_chatglm3_lora(chatglm3_lora_files):
61
llm = vllm.LLM(
@@ -70,6 +76,9 @@ def test_chatglm3_lora(chatglm3_lora_files):
76
assert output2[i] == EXPECTED_LORA_OUTPUT[i]
77
78
79
+@pytest.mark.skipif(
80
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
81
+)
82
@multi_gpu_test(num_gpus=4)
83
def test_chatglm3_lora_tp4(chatglm3_lora_files):
84
llm = vllm.LLM(
tests/lora/test_default_mm_loras.py
+10
@@ -11,6 +11,7 @@ import pytest
11
from huggingface_hub import snapshot_download
12
13
from vllm.lora.request import LoRARequest
14
+from vllm.platforms import current_platform
15
16
from ..conftest import AudioTestAssets, VllmRunner
17
from ..utils import create_new_process_for_each_test
@@ -76,6 +77,9 @@ def test_active_default_mm_lora(
77
)
78
79
80
+@pytest.mark.skipif(
81
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
82
+)
83
@create_new_process_for_each_test()
84
def test_inactive_default_mm_lora(
85
vllm_runner: type[VllmRunner],
@@ -92,6 +96,9 @@ def test_inactive_default_mm_lora(
96
)
97
98
99
+@pytest.mark.skipif(
100
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
101
+)
102
@create_new_process_for_each_test()
103
def test_default_mm_lora_succeeds_with_redundant_lora_request(
104
vllm_runner: type[VllmRunner],
@@ -107,6 +114,9 @@ def test_default_mm_lora_succeeds_with_redundant_lora_request(
114
)
115
116
117
+@pytest.mark.skipif(
118
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
119
+)
120
@create_new_process_for_each_test()
121
def test_default_mm_lora_fails_with_overridden_lora_request(
122
vllm_runner: type[VllmRunner],
tests/lora/test_llama_tp.py
+4
@@ -10,6 +10,7 @@ import vllm.config
10
from vllm import LLM
11
from vllm.lora.request import LoRARequest
12
from vllm.model_executor.model_loader.tensorizer import TensorizerConfig
13
+from vllm.platforms import current_platform
14
15
from ..utils import VLLM_PATH, create_new_process_for_each_test, multi_gpu_test
16
@@ -139,6 +140,9 @@ def test_llama_lora(llama32_lora_files, cudagraph_specialize_lora: bool):
140
generate_and_test(llm, llama32_lora_files)
141
142
143
+@pytest.mark.skipif(
144
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
145
+)
146
@multi_gpu_test(num_gpus=4)
147
def test_llama_lora_tp4(llama32_lora_files):
148
llm = vllm.LLM(
tests/lora/test_minicpmv_tp.py
+3
@@ -68,6 +68,9 @@ def do_sample(llm: vllm.LLM, lora_path: str, lora_id: int) -> list[str]:
68
return generated_texts
69
70
71
+@pytest.mark.skipif(
72
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
73
+)
74
def test_minicpmv_lora(minicpmv_lora_files):
75
llm = vllm.LLM(
76
MODEL_PATH,
tests/lora/test_olmoe_tp.py
+7
@@ -11,6 +11,7 @@ from safetensors.torch import load_file, save_file
11
12
import vllm
13
from vllm.lora.request import LoRARequest
14
+from vllm.platforms import current_platform
15
16
from ..utils import multi_gpu_test
17
@@ -110,6 +111,9 @@ def generate_and_test(
111
)
112
113
114
+@pytest.mark.skipif(
115
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
116
+)
117
def test_olmoe_lora(olmoe_lora_files, maybe_enable_lora_dual_stream):
118
# We enable enforce_eager=True here to reduce VRAM usage for lora-test CI,
119
# Otherwise, the lora-test will fail due to CUDA OOM.
@@ -178,6 +182,9 @@ def test_olmoe_lora_mixed_random(
182
assert outputs[0].outputs[0].text.strip().startswith(EXPECTED_LORA_OUTPUT[0])
183
184
185
+@pytest.mark.skipif(
186
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
187
+)
188
@pytest.mark.parametrize("fully_sharded_loras", [False, True])
189
@multi_gpu_test(num_gpus=2)
190
def test_olmoe_lora_tp2(olmoe_lora_files, fully_sharded_loras):
tests/lora/test_qwen35_densemodel_lora.py
+5
@@ -1,12 +1,14 @@
1
# SPDX-License-Identifier: Apache-2.0
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4
+import pytest
5
from transformers import AutoTokenizer
6
7
import vllm
8
import vllm.config
9
from vllm.assets.image import ImageAsset
10
from vllm.lora.request import LoRARequest
11
+from vllm.platforms import current_platform
12
13
from ..utils import create_new_process_for_each_test, multi_gpu_test
14
@@ -311,6 +313,9 @@ def _assert_qwen35_text_vl_and_mixed_lora(
313
)
314
315
316
+@pytest.mark.skipif(
317
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
318
+)
319
@create_new_process_for_each_test()
320
def test_qwen35_text_lora(
321
qwen35_text_lora_files, qwen35_vl_lora_files, maybe_enable_lora_dual_stream
tests/lora/test_qwen3_with_multi_loras.py
renamed
tests/lora/test_qwenvl.py
+8
@@ -2,12 +2,14 @@
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
from dataclasses import dataclass
4
5
+import pytest
6
from packaging.version import Version
7
from transformers import __version__ as TRANSFORMERS_VERSION
8
9
import vllm
10
from vllm.assets.image import ImageAsset
11
from vllm.lora.request import LoRARequest
12
+from vllm.platforms import current_platform
13
from vllm.sampling_params import BeamSearchParams
14
15
@@ -206,6 +208,9 @@ def test_qwen2vl_lora_beam_search(qwen2vl_lora_files):
208
)
209
210
211
+@pytest.mark.skipif(
212
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
213
+)
214
def test_qwen25vl_lora(qwen25vl_lora_files):
215
"""Test Qwen 2.5 VL model with LoRA"""
216
config = TestConfig(model_path=QWEN25VL_MODEL_PATH, lora_path=qwen25vl_lora_files)
@@ -216,6 +221,9 @@ def test_qwen25vl_lora(qwen25vl_lora_files):
221
tester.run_test(TEST_IMAGES, expected_outputs=EXPECTED_OUTPUTS, lora_id=lora_id)
222
223
224
+@pytest.mark.skipif(
225
+ current_platform.is_cuda_alike(), reason="Skipping to avoid redundant model tests"
226
+)
227
def test_qwen25vl_vision_lora(qwen25vl_vision_lora_files):
228
config = TestConfig(
229
model_path=QWEN25VL_MODEL_PATH,
tests/lora/test_whisper.py
-27
@@ -124,30 +124,3 @@ def test_whisper_multi_lora(whisper_lora_files):
124
f"Expected same outputs for same adapter with different IDs. "
125
f"Got: {outputs_lora1} vs {outputs_lora2}"
126
)
127
-
128
-
129
-@create_new_process_for_each_test()
130
-def test_whisper_with_and_without_lora(whisper_lora_files):
131
- """Test that Whisper produces different outputs with and without LoRA.
132
-
133
- This test verifies that the LoRA adapter actually affects the model output.
134
- """
135
- llm = create_whisper_llm(enable_lora=True)
136
-
137
- # Run with LoRA
138
- outputs_with_lora = run_whisper_inference(
139
- llm, lora_path=whisper_lora_files, lora_id=1
140
- )
141
-
142
- # Run without LoRA (base model only)
143
- outputs_without_lora = run_whisper_inference(llm, lora_path=None)
144
-
145
- # Both should produce valid outputs
146
- assert len(outputs_with_lora[0]) > 0
147
- assert len(outputs_without_lora[0]) > 0
148
-
149
- print(f"Output with LoRA: {outputs_with_lora[0]}")
150
- print(f"Output without LoRA: {outputs_without_lora[0]}")
151
-
152
- # Note: Outputs may or may not differ depending on the adapter
153
- # The main verification is that both configurations work