main
py 51 lines 1.73 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3 import sys
4 from unittest.mock import patch
5
6 from vllm.config import VllmConfig
7 from vllm.engine.arg_utils import AsyncEngineArgs
8 from vllm.v1.engine.async_llm import AsyncLLM
9
10
11 def test_mp_reducer():
12 """Test that _reduce_config reducer is registered when AsyncLLM is instantiated
13 without transformers_modules. This is a regression test for
14 https://github.com/vllm-project/vllm/pull/18640.
15 """
16 # Ensure transformers_modules is not in sys.modules
17 if "transformers_modules" in sys.modules:
18 del sys.modules["transformers_modules"]
19
20 with patch("multiprocessing.reducer.register") as mock_register:
21 engine_args = AsyncEngineArgs(
22 model="facebook/opt-125m",
23 max_model_len=32,
24 gpu_memory_utilization=0.1,
25 disable_log_stats=True,
26 )
27
28 async_llm = AsyncLLM.from_engine_args(
29 engine_args,
30 start_engine_loop=False,
31 )
32
33 assert mock_register.called, (
34 "multiprocessing.reducer.register should have been called"
35 )
36
37 vllm_config_registered = False
38 for call_args in mock_register.call_args_list:
39 # Verify that a reducer for VllmConfig was registered
40 if len(call_args[0]) >= 2 and call_args[0][0] == VllmConfig:
41 vllm_config_registered = True
42
43 reducer_func = call_args[0][1]
44 assert callable(reducer_func), "Reducer function should be callable"
45 break
46
47 assert vllm_config_registered, (
48 "VllmConfig should have been registered to multiprocessing.reducer"
49 )
50
51 async_llm.shutdown()