diff --git a/src/transformers/lib_integrations/peft/peft_mixin.py b/src/transformers/lib_integrations/peft/peft_mixin.py index 82afe8db00e3..78e5fd3e9a70 100644 --- a/src/transformers/lib_integrations/peft/peft_mixin.py +++ b/src/transformers/lib_integrations/peft/peft_mixin.py @@ -27,6 +27,8 @@ from accelerate import dispatch_model from accelerate.utils import get_balanced_memory, infer_auto_device_map +# Minimum PEFT version supported for the integration +MIN_PEFT_VERSION = "0.5.0" logger = logging.get_logger(__name__) @@ -113,7 +115,7 @@ def load_adapter( offload_index (`int`, `optional`): `offload_index` argument to be passed to `accelerate.dispatch_model` method. """ - check_peft_version(min_version="0.4.0") + check_peft_version(min_version=MIN_PEFT_VERSION) adapter_name = adapter_name if adapter_name is not None else "default" @@ -198,7 +200,7 @@ def add_adapter(self, adapter_config, adapter_name: Optional[str] = None) -> Non adapter_name (`str`, *optional*, defaults to `"default"`): The name of the adapter to add. If no name is passed, a default name is assigned to the adapter. """ - check_peft_version(min_version="0.4.0") + check_peft_version(min_version=MIN_PEFT_VERSION) from peft import PeftConfig, inject_adapter_in_model @@ -229,7 +231,7 @@ def set_adapter(self, adapter_name: str) -> None: adapter_name (`str`): The name of the adapter to set. """ - check_peft_version(min_version="0.4.0") + check_peft_version(min_version=MIN_PEFT_VERSION) if not self._hf_peft_config_loaded: raise ValueError("No adapter loaded. Please load an adapter first.") elif adapter_name not in self.peft_config: @@ -258,7 +260,7 @@ def disable_adapters(self) -> None: Disable all adapters that are attached to the model. This leads to inferring with the base model only. """ - check_peft_version(min_version="0.4.0") + check_peft_version(min_version=MIN_PEFT_VERSION) if not self._hf_peft_config_loaded: raise ValueError("No adapter loaded. Please load an adapter first.") @@ -276,7 +278,7 @@ def enable_adapters(self) -> None: Enable adapters that are attached to the model. The model will use `self.active_adapter()` """ - check_peft_version(min_version="0.4.0") + check_peft_version(min_version=MIN_PEFT_VERSION) if not self._hf_peft_config_loaded: raise ValueError("No adapter loaded. Please load an adapter first.") @@ -294,7 +296,7 @@ def active_adapter(self) -> str: Gets the current active adapter of the model. """ - check_peft_version(min_version="0.4.0") + check_peft_version(min_version=MIN_PEFT_VERSION) if not is_peft_available(): raise ImportError("PEFT is not available. Please install PEFT to use this function: `pip install peft`.") @@ -320,7 +322,7 @@ def get_adapter_state_dict(self, adapter_name: Optional[str] = None) -> dict: adapter_name (`str`, *optional*): The name of the adapter to get the state dict from. If no name is passed, the active adapter is used. """ - check_peft_version(min_version="0.4.0") + check_peft_version(min_version=MIN_PEFT_VERSION) if not self._hf_peft_config_loaded: raise ValueError("No adapter loaded. Please load an adapter first.") diff --git a/src/transformers/utils/peft_utils.py b/src/transformers/utils/peft_utils.py index 818b98f24ed0..5d68f6539e39 100644 --- a/src/transformers/utils/peft_utils.py +++ b/src/transformers/utils/peft_utils.py @@ -91,7 +91,7 @@ def check_peft_version(min_version: str) -> None: if not is_peft_available(): raise ValueError("PEFT is not installed. Please install it with `pip install peft`") - is_peft_version_compatible = version.parse(importlib.metadata.version("peft")) <= version.parse(min_version) + is_peft_version_compatible = version.parse(importlib.metadata.version("peft")) >= version.parse(min_version) if not is_peft_version_compatible: raise ValueError(