diff --git a/tests/lora/test_lora_manager.py b/tests/lora/test_lora_manager.py index 1c07dc4ae6..cfe5b46c64 100644 --- a/tests/lora/test_lora_manager.py +++ b/tests/lora/test_lora_manager.py @@ -943,110 +943,3 @@ def test_target_modules_match_packed_runtime_modules( ("layer1.dense2", RowParallelLinearWithLoRA), ], ) - - -@pytest.mark.parametrize("device", DEVICES) -def test_load_adapter_warns_on_unsupported_modules( - default_vllm_config, dist_init, dummy_model_gate_up, device, tmp_path -): - """Test that _load_adapter warns when a LoRA adapter contains modules - not in the model's supported LoRA target modules.""" - from unittest.mock import patch - - import vllm.lora.worker_manager as wm_module - - lora_config = LoRAConfig( - max_lora_rank=8, max_cpu_loras=4, max_loras=4, lora_dtype=DEFAULT_DTYPE - ) - - dummy_lora_files = f"{tmp_path}/lora_adapter" - os.makedirs(dummy_lora_files, exist_ok=True) - create_peft_lora( - dummy_model_gate_up, - save_dir=dummy_lora_files, - target_modules=["layer1.dense1", "dense2"], - lora_dtype=DEFAULT_DTYPE, - ) - - model_config = ModelConfig(max_model_len=16) - vllm_config = VllmConfig(model_config=model_config, lora_config=lora_config) - vllm_config.scheduler_config.max_num_seqs = 4 - vllm_config.scheduler_config.max_num_batched_tokens = 2 - - worker_manager = WorkerLoRAManager(vllm_config, device, EMBEDDING_MODULES) - worker_manager.vocab_size = dummy_model_gate_up.unpadded_vocab_size - worker_manager.create_lora_manager(dummy_model_gate_up) - - # Patch from_local_checkpoint to inject an unsupported module - original_from_checkpoint = LoRAModel.from_local_checkpoint - - def patched_from_checkpoint(*args, **kwargs): - lora = original_from_checkpoint(*args, **kwargs) - lora.loras["unsupported_module"] = LoRALayerWeights( - module_name="unsupported_module", - rank=8, - lora_alpha=16, - lora_a=torch.randn(8, 10), - lora_b=torch.randn(10, 8), - ) - return lora - - lora_request = LoRARequest("test", 1, dummy_lora_files) - with ( - patch.object(LoRAModel, "from_local_checkpoint", patched_from_checkpoint), - patch.object(wm_module.logger, "warning_once") as mock_warning, - ): - worker_manager._load_adapter(lora_request) - warning_args = mock_warning.call_args_list - found = any("unsupported_module" in str(call) for call in warning_args) - assert found, ( - f"Expected warning about 'unsupported_module', got: {warning_args}" - ) - - -@pytest.mark.parametrize("device", DEVICES) -def test_load_adapter_warns_on_target_modules_restriction( - default_vllm_config, dist_init, dummy_model_gate_up, device, tmp_path -): - """Test that _load_adapter warns when a LoRA adapter contains modules - excluded by the deployment-time target_modules restriction.""" - from unittest.mock import patch - - import vllm.lora.worker_manager as wm_module - - # Restrict to only dense2 — adapter has dense1 which will be excluded - lora_config = LoRAConfig( - max_lora_rank=8, - max_cpu_loras=4, - max_loras=4, - lora_dtype=DEFAULT_DTYPE, - target_modules=["dense2"], - ) - - dummy_lora_files = f"{tmp_path}/lora_adapter" - os.makedirs(dummy_lora_files, exist_ok=True) - create_peft_lora( - dummy_model_gate_up, - save_dir=dummy_lora_files, - target_modules=["layer1.dense1", "dense2"], - lora_dtype=DEFAULT_DTYPE, - ) - - model_config = ModelConfig(max_model_len=16) - vllm_config = VllmConfig(model_config=model_config, lora_config=lora_config) - vllm_config.scheduler_config.max_num_seqs = 4 - vllm_config.scheduler_config.max_num_batched_tokens = 2 - - worker_manager = WorkerLoRAManager(vllm_config, device, EMBEDDING_MODULES) - worker_manager.vocab_size = dummy_model_gate_up.unpadded_vocab_size - worker_manager.create_lora_manager(dummy_model_gate_up) - - lora_request = LoRARequest("test", 1, dummy_lora_files) - with patch.object(wm_module.logger, "warning_once") as mock_warning: - worker_manager._load_adapter(lora_request) - warning_args = mock_warning.call_args_list - # dense1 is supported by the model but excluded by target_modules - found = any("target_modules" in str(call) for call in warning_args) - assert found, ( - f"Expected warning about target_modules restriction, got: {warning_args}" - ) diff --git a/vllm/lora/worker_manager.py b/vllm/lora/worker_manager.py index 6d8ef2db51..5b9bf2d76f 100644 --- a/vllm/lora/worker_manager.py +++ b/vllm/lora/worker_manager.py @@ -17,11 +17,7 @@ from vllm.lora.model_manager import ( ) from vllm.lora.peft_helper import PEFTHelper from vllm.lora.request import LoRARequest -from vllm.lora.utils import ( - get_adapter_absolute_path, - is_in_target_modules, - is_supported_lora_module, -) +from vllm.lora.utils import get_adapter_absolute_path logger = init_logger(__name__) @@ -146,34 +142,6 @@ class WorkerLoRAManager: skip_prefixes=lora_skip_prefixes, ) - # Warn about adapter modules that will be ignored. - target_modules = self.lora_config.target_modules - expected_lora_modules_lst = list(expected_lora_modules) - for module_name in lora.loras: - if not is_supported_lora_module(module_name, expected_lora_modules_lst): - logger.warning_once( - "LoRA module '%s' in adapter '%s' is not in the " - "model's supported LoRA target modules [%s]. " - "These parameters will be ignored, which may " - "cause abnormal model behavior.", - module_name, - lora_request.lora_path, - ", ".join(sorted(expected_lora_modules_lst)), - ) - elif not is_in_target_modules( - module_name, - target_modules, - packed_modules_mapping, - ): - logger.warning_once( - "LoRA module '%s' in adapter '%s' is not in the " - "deployment-time target_modules restriction [%s]." - " These parameters will be ignored.", - module_name, - lora_request.lora_path, - ", ".join(sorted(target_modules)), - ) - except FileNotFoundError as e: # FileNotFoundError should be raised if both # - No adapter found to download from huggingface (or in