Source code for mednet.config.peft
# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Functions to retrieve the correct PEFT configuration, check `PEFT configurations and models <https://huggingface.co/docs/peft/tutorial/peft_model_config>`_."""
from peft import LoraConfig
[docs]
def get_lora_config(
target_modules: list[str] | str | None,
modules_to_save: list[str],
rank: int = 8,
alpha: int = 8,
lora_dropout: float = 0.0,
use_rslora: bool = False,
) -> LoraConfig:
"""Create and return a LoraConfig object with the specified parameters.
This utility simplifies the instantiation of a LoraConfig for applying
Low-Rank Adaptation (LoRA) to a model. It allows customization of target
modules, rank, scaling factor, dropout, and optional support for Rank-Stabilized LoRA.
Parameters
----------
target_modules
The names of the modules to apply the adapter to. If this is specified, only the modules with the specified
names will be replaced. When passing a string, a regex match will be performed. When passing a list of
strings, either an exact match will be performed or it is checked if the name of the module ends with any
of the passed strings. If this is specified as 'all-linear', then all linear/Conv1D modules are chosen (if
the model is a PreTrainedModel, the output layer excluded). If this is not specified, modules will be
chosen according to the model architecture. If the architecture is not known, an error will be raised -- in
this case, you should specify the target modules manually.
modules_to_save
List of modules apart from adapter layers to be set as trainable and saved in the final checkpoint.
rank
Lora approximation matrices dimension.
alpha
The alpha parameter for Lora scaling.
lora_dropout
The dropout probability for Lora layers.
use_rslora
When set to True, uses `Rank-Stabilized LoRA <https://doi.org/10.48550/arXiv.2312.03732>`_ which
sets the adapter scaling factor to `lora_alpha/math.sqrt(r)`, since it was proven to work better.
Otherwise, it will use the original default value of `lora_alpha/r`.
Returns
-------
A LoraConfig object.
"""
return LoraConfig(
r=rank,
lora_alpha=alpha,
target_modules=target_modules,
lora_dropout=lora_dropout,
modules_to_save=modules_to_save,
use_rslora=use_rslora,
)