bridge.peft.module_matcher#
Module Contents#
Classes#
Implements the LoRA (Low-Rank Adaptation) module for parameter-efficient fine-tuning. |
Data#
API#
- bridge.peft.module_matcher.HAVE_TE#
‘all(…)’
- class bridge.peft.module_matcher.ModuleMatcher#
Implements the LoRA (Low-Rank Adaptation) module for parameter-efficient fine-tuning.
LoRA uses a low-rank projection to adapt the weights of a pre-trained model to a new downstream task. This class facilitates the application of LoRA to specific modules within the model architecture.
- Parameters:
target_modules (List[str], optional) – A list of module names to apply LoRA to. Defaults to all linear layers [‘linear_qkv’, ‘linear_proj’, ‘linear_fc1’, ‘linear_fc2’]. - ‘linear_qkv’: Apply LoRA to the fused linear layer used for query, key, and value projections in self-attention. - ‘linear_proj’: Apply LoRA to the linear layer used for projecting the output of self-attention. - ‘linear_fc1’: Apply LoRA to the first fully-connected layer in MLP. - ‘linear_fc2’: Apply LoRA to the second fully-connected layer in MLP. Target modules can also contain wildcards. For example, you can specify target_modules=[’.layers.0..linear_qkv’, ‘.layers.1..linear_qkv’] to add LoRA to only linear_qkv on the first two layers.
- target_modules: List[str]#
‘field(…)’
- exclude_modules: List[str]#
‘field(…)’
- canonical_mapping: Dict[str, Set]#
‘field(…)’
- match(
- m: torch.nn.Module,
- name: Optional[str] = None,
- prefix: Optional[str] = None,
Determines whether a given module matches specified target patterns.
This function checks if the provided module
mshould be included based on predefined mapping rules (canonical_mapping,target_modules, andexclude_modules). It returns the matching pattern if a match is found; otherwise, it returnsNone.- Parameters:
m (nn.Module) – The module being checked.
name (str, optional) – The module’s name.
prefix (str, optional) – A prefix to be used in constructing
full_name.
- Returns:
A tuple containing (matching_pattern, full_name) if a match is found; otherwise,
None.- Return type:
Optional[Tuple[str, str]]
Matching Logic:
If
canonical_mappingis defined, it checks:
Whether
nameexactly matches a pattern.Whether
full_namematches any regex pattern incanonical_mapping.
If
target_modulesis defined, it follows the same logic ascanonical_mapping.If neither
canonical_mappingnortarget_modulesare defined, it ensures:
nameis not inexclude_modules.full_namedoes not match anytarget_modulespatterns.mis an instance ofnn.Linear.
Notes:
exclude_modulesshould only be non-empty if neithercanonical_mappingnortarget_modulesare set.The function asserts that
exclude_modulesis empty when usingcanonical_mappingortarget_modules.