From 9ba001f301e72b7ced05a39dc1f9dff3a9247b24 Mon Sep 17 00:00:00 2001 From: David Corvoysier Date: Wed, 8 Jan 2025 08:55:48 +0000 Subject: [PATCH] refactor(peft): check minimum version --- optimum/neuron/accelerate/accelerator.py | 2 +- optimum/neuron/distributed/checkpointing.py | 2 +- optimum/neuron/distributed/parallel_layers.py | 2 +- optimum/neuron/distributed/utils.py | 3 +-- optimum/neuron/trainers.py | 2 +- optimum/neuron/utils/import_utils.py | 14 ++++++++++++++ optimum/neuron/utils/peft_utils.py | 2 +- optimum/neuron/utils/require_utils.py | 3 ++- 8 files changed, 22 insertions(+), 8 deletions(-) diff --git a/optimum/neuron/accelerate/accelerator.py b/optimum/neuron/accelerate/accelerator.py index dc4915cc3..5085e275c 100644 --- a/optimum/neuron/accelerate/accelerator.py +++ b/optimum/neuron/accelerate/accelerator.py @@ -33,7 +33,6 @@ from torch.utils.data import DataLoader from torch.utils.data.distributed import DistributedSampler from transformers import PreTrainedModel -from transformers.utils import is_peft_available from ...utils import logging from ..distributed import Parallelizer, ParallelizersManager @@ -47,6 +46,7 @@ patch_within_function, replace_class_in_inheritance_hierarchy, ) +from ..utils.import_utils import is_peft_available from ..utils.misc import args_and_kwargs_to_kwargs_only, is_main_worker from ..utils.model_utils import get_tied_parameters_dict, tie_parameters from ..utils.require_utils import requires_neuronx_distributed, requires_torch_xla diff --git a/optimum/neuron/distributed/checkpointing.py b/optimum/neuron/distributed/checkpointing.py index 7f9ce7d78..19075afd1 100644 --- a/optimum/neuron/distributed/checkpointing.py +++ b/optimum/neuron/distributed/checkpointing.py @@ -26,9 +26,9 @@ SAFE_WEIGHTS_NAME, WEIGHTS_INDEX_NAME, WEIGHTS_NAME, - is_peft_available, ) +from ..utils.import_utils import is_peft_available from ..utils.peft_utils import ADAPTER_MODEL_PARALLEL_SHARDS_DIR_NAME from ..utils.require_utils import requires_neuronx_distributed, requires_safetensors, requires_torch_xla from .utils import MODEL_PARALLEL_SHARDS_DIR_NAME, ParameterMetadata, compute_query_indices_for_rank diff --git a/optimum/neuron/distributed/parallel_layers.py b/optimum/neuron/distributed/parallel_layers.py index 8e5ce0819..bbba16c88 100644 --- a/optimum/neuron/distributed/parallel_layers.py +++ b/optimum/neuron/distributed/parallel_layers.py @@ -23,10 +23,10 @@ import torch from torch.nn.modules.loss import _WeightedLoss -from transformers.utils import is_peft_available from ...utils import NormalizedConfigManager, logging from ..utils import patch_everywhere, patch_within_function +from ..utils.import_utils import is_peft_available from ..utils.misc import is_main_worker from ..utils.require_utils import requires_neuronx_distributed from .utils import ( diff --git a/optimum/neuron/distributed/utils.py b/optimum/neuron/distributed/utils.py index 135e13fa1..ac888c89f 100644 --- a/optimum/neuron/distributed/utils.py +++ b/optimum/neuron/distributed/utils.py @@ -27,12 +27,11 @@ import torch from transformers import PretrainedConfig -from transformers.utils import is_peft_available from transformers.utils.fx import HFTracer from ...utils import logging from ..utils import DynamicPatch, Patcher -from ..utils.import_utils import is_neuronx_distributed_available +from ..utils.import_utils import is_neuronx_distributed_available, is_peft_available from ..utils.misc import download_checkpoints_in_cache, is_precompilation from ..utils.peft_utils import NeuronPeftModel from ..utils.require_utils import requires_neuronx_distributed, requires_peft, requires_safetensors, requires_torch_xla diff --git a/optimum/neuron/trainers.py b/optimum/neuron/trainers.py index 6f5f04afb..80a4374b1 100755 --- a/optimum/neuron/trainers.py +++ b/optimum/neuron/trainers.py @@ -80,7 +80,6 @@ WEIGHTS_NAME, is_accelerate_available, is_apex_available, - is_peft_available, is_sagemaker_mp_enabled, ) @@ -90,6 +89,7 @@ from .distributed.utils import make_optimizer_constructor_lazy from .training_args import NeuronTrainingArguments from .utils import ( + is_peft_available, is_torch_xla_available, is_trl_available, patch_within_function, diff --git a/optimum/neuron/utils/import_utils.py b/optimum/neuron/utils/import_utils.py index 449324ff9..9279a1e5a 100644 --- a/optimum/neuron/utils/import_utils.py +++ b/optimum/neuron/utils/import_utils.py @@ -21,6 +21,7 @@ MIN_ACCELERATE_VERSION = "0.20.1" +MIN_PEFT_VERSION = "0.14.0" def is_neuron_available() -> bool: @@ -80,3 +81,16 @@ def is_trl_available(required_version: Optional[str] = None) -> bool: raise RuntimeError(f"Only `trl=={required_version}` is supported, but {trl.__version__} is installed.") return False + + +def is_peft_available(min_version: Optional[str] = MIN_PEFT_VERSION) -> bool: + _peft_available = importlib.util.find_spec("peft") is not None + if min_version is not None: + if _peft_available: + import peft + + _peft_version = peft.__version__ + return version.parse(_peft_version) >= version.parse(min_version) + else: + return False + return _peft_available diff --git a/optimum/neuron/utils/peft_utils.py b/optimum/neuron/utils/peft_utils.py index 34c414701..7780ff7ed 100644 --- a/optimum/neuron/utils/peft_utils.py +++ b/optimum/neuron/utils/peft_utils.py @@ -22,8 +22,8 @@ from typing import Any, List, Optional, Tuple, Union import torch -from transformers.utils import is_peft_available +from .import_utils import is_peft_available from .patching import Patcher, replace_class_in_inheritance_hierarchy from .require_utils import requires_neuronx_distributed, requires_safetensors from .training_utils import _get_model_param_count diff --git a/optimum/neuron/utils/require_utils.py b/optimum/neuron/utils/require_utils.py index df9f68313..34130d55d 100644 --- a/optimum/neuron/utils/require_utils.py +++ b/optimum/neuron/utils/require_utils.py @@ -17,10 +17,11 @@ import functools from typing import Any, Callable, Dict -from transformers.utils import is_peft_available, is_safetensors_available +from transformers.utils import is_safetensors_available from .import_utils import ( is_neuronx_distributed_available, + is_peft_available, is_torch_neuronx_available, is_torch_xla_available, is_transformers_neuronx_available,