[CI/Build] Fix LoRA testing (#47242)
Signed-off-by: Jee Jee Li <jeejeelee@inferact.ai>
Jee Jee Li committed
Jul 1, 2026 at 15:36 UTC
8f82be5705692f5e45b65186051e8bcf7f8ef8c2
1 file changed
+17
-2
tests/lora/test_default_mm_loras.py
+17
-2
@@ -42,7 +42,11 @@ VLLM_RUNNER_BASE_KWARGS = {
42
}
43
44
45
-def run_test(vllm_runner, audio_assets, lora_request, expected_suffix, **kwargs):
45
+def run_test(
46
+ vllm_runner, audio_assets, monkeypatch, lora_request, expected_suffix, **kwargs
47
+):
48
+ monkeypatch.setenv("VLLM_WORKER_MULTIPROC_METHOD", "spawn")
49
+
50
inputs = [([AUDIO_PROMPT], [audio_assets[0].audio_and_sample_rate[0]])]
51
52
# Apply any additional kwargs as overrides to the base kwargs
@@ -66,11 +70,13 @@ def run_test(vllm_runner, audio_assets, lora_request, expected_suffix, **kwargs)
70
def test_active_default_mm_lora(
71
vllm_runner: type[VllmRunner],
72
audio_assets: AudioTestAssets,
73
+ monkeypatch: pytest.MonkeyPatch,
74
):
75
"""Ensure that we can use the default audio lora."""
76
run_test(
77
vllm_runner,
78
audio_assets,
79
+ monkeypatch,
80
lora_request=None,
81
default_mm_loras={"audio": AUDIO_LORA_PATH},
82
expected_suffix=RESPONSE_SUFFIX_WITH_LORA,
@@ -84,12 +90,14 @@ def test_active_default_mm_lora(
90
def test_inactive_default_mm_lora(
91
vllm_runner: type[VllmRunner],
92
audio_assets: AudioTestAssets,
93
+ monkeypatch: pytest.MonkeyPatch,
94
):
95
"""Ensure that modalities are filtered properly."""
96
# Default image lora won't be active since we only pass audio
97
run_test(
98
vllm_runner,
99
audio_assets,
100
+ monkeypatch,
101
lora_request=None,
102
default_mm_loras={"image": IMAGE_LORA_PATH},
103
expected_suffix=RESPONSE_SUFFIX_WITHOUT_LORA,
@@ -103,11 +111,13 @@ def test_inactive_default_mm_lora(
111
def test_default_mm_lora_succeeds_with_redundant_lora_request(
112
vllm_runner: type[VllmRunner],
113
audio_assets: AudioTestAssets,
114
+ monkeypatch: pytest.MonkeyPatch,
115
):
116
"""Ensure that redundantly providing the lora works."""
117
run_test(
118
vllm_runner,
119
audio_assets,
120
+ monkeypatch,
121
lora_request=LoRARequest("audio", 1, AUDIO_LORA_PATH),
122
default_mm_loras={"audio": AUDIO_LORA_PATH},
123
expected_suffix=RESPONSE_SUFFIX_WITH_LORA,
@@ -121,12 +131,14 @@ def test_default_mm_lora_succeeds_with_redundant_lora_request(
131
def test_default_mm_lora_fails_with_overridden_lora_request(
132
vllm_runner: type[VllmRunner],
133
audio_assets: AudioTestAssets,
134
+ monkeypatch: pytest.MonkeyPatch,
135
):
136
"""Ensure that if the lora_request conflicts with default_mm_loras,
137
we use the lora_request."""
138
run_test(
139
vllm_runner,
140
audio_assets,
141
+ monkeypatch,
142
lora_request=LoRARequest("speech", 2, AUDIO_LORA_PATH),
143
default_mm_loras={"audio": IMAGE_LORA_PATH},
144
expected_suffix=RESPONSE_SUFFIX_WITH_LORA,
@@ -134,7 +146,10 @@ def test_default_mm_lora_fails_with_overridden_lora_request(
146
147
148
@create_new_process_for_each_test()
137
-def test_default_mm_lora_does_not_expand_string_reqs(vllm_runner):
149
+def test_default_mm_lora_does_not_expand_string_reqs(vllm_runner, monkeypatch):
150
+ # See run_test: force spawn to avoid the forked-child CUDA re-init crash.
151
+ monkeypatch.setenv("VLLM_WORKER_MULTIPROC_METHOD", "spawn")
152
+
153
class MockEngineException(Exception):
154
pass
155