[LoRA] Clarify target module matching logic (#55865)

Signed-off-by: linitra24 <renshuang.zhou@daocloud.io>

linitra24 committed Sep 8, 2026 at 22:30 UTC b105d8284f076be2e0e13629eed8825b791a4b14
1 file changed +17 -25
vllm/lora/model_manager.py
+17 -25
@@ -418,16 +418,14 @@ class LoRAModelManager:
418 if isinstance(module, PPMissingLayer):
419 continue
420
421 - target_modules = self.lora_config.target_modules
422 - is_configured_target = target_modules is not None and is_in_target_modules(
423 - module_name,
424 - target_modules,
425 - self.packed_modules_mapping,
426 - )
427 - if (
428 - not self._match_target_modules(module_name, module)
429 - and not is_configured_target
430 - ):
421 + if self.lora_config.target_modules is None:
422 + if not is_supported_lora_module(
423 + module_name,
424 + module,
425 + self.supported_lora_modules,
426 + ):
427 + continue
428 + elif not self._match_target_modules(module_name):
429 continue
430
431 punica_wrapper = self._get_punica_wrapper(module_name)
@@ -574,7 +572,12 @@ class LoRAModelManager:
572 model = LoRAModel(lora_id, rank, {})
573 for module_name, module in self.model.named_modules():
574 if (
577 - not self._match_target_modules(module_name, module)
575 + not is_supported_lora_module(
576 + module_name,
577 + module,
578 + self.supported_lora_modules,
579 + )
580 + or not self._match_target_modules(module_name)
581 or not isinstance(module, BaseLayerWithLoRA)
582 or self._get_punica_wrapper(module_name) is None
583 ):
@@ -710,27 +713,16 @@ class LoRAModelManager:
713 )
714 return adjusted_rank
715
713 - def _match_target_modules(self, module_name: str, module: nn.Module) -> bool:
714 - """Check if a module should have LoRA applied.
715 -
716 - This method first checks if the module is in vLLM's supported LoRA
717 - modules, then applies deployment-time restrictions based on
718 - LoRAConfig.target_modules.
716 + def _match_target_modules(self, module_name: str) -> bool:
717 + """Check if a module passes the deployment-time target filter.
718
719 Args:
720 module_name: Full dot-separated module name (e.g.,
721 "model.layers.0.self_attn.o_proj")
723 - module: Runtime module associated with ``module_name``.
722
723 Returns:
726 - True if LoRA should be applied to this module, False otherwise.
724 + True if the module passes the filter, False otherwise.
725 """
728 - if not is_supported_lora_module(
729 - module_name,
730 - module,
731 - self.supported_lora_modules,
732 - ):
733 - return False
726 return is_in_target_modules(
727 module_name,
728 self.lora_config.target_modules,