@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 05d610e5cd
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 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