PEFT documentation
Вспомогательные методы
Вспомогательные методы
Набор вспомогательных функций для PEFT.
Проверка, является ли модель PEFT
peft.helpers.check_if_peft_model
< source >( model_name_or_path: str ) → bool
Проверьте, является ли модель PEFT-моделью.
Временное изменение масштаба адаптера в модулях LoraLayer
peft.helpers.rescale_adapter_scale
< source >( model: Modulemultiplier: float | int )
Параметры
- model — модель, содержащая модули
LoraLayer, для которых необходимо скорректировать масштабирование. - multiplier (float или int) —
Множитель, перемасштабирующий атрибут
scaling. Должен иметь тип float или int.
Исключения
ValueError
ValueError— если модель не содержит ни одного экземпляраLoraLayer, что указывает на отсутствие поддержки масштабирования в модели.
Контекстный менеджер для временного изменения масштаба адаптера LoRA в модели.
Исходные значения масштабирования восстанавливаются при выходе из контекстного менеджера. Этот контекстный менеджер работает с моделями transformers и diffusers, в которые адаптеры LoRA были загружены напрямую.
Для LoRA применение этого контекстного менеджера с множителем в диапазоне [0, 1] строго эквивалентно применению wise-ft (см. #1940 для подробностей). Это может улучшить производительность модели, если существует сдвиг распределения между обучающими данными, использованными для дообучения, и тестовыми данными, используемыми во время инференса.
Warning: Сообщалось, что при использовании бэкенда MPS от Apple для PyTorch необходимо добавить короткую паузу после выхода из контекста, чтобы масштабы были полностью восстановлены.
Контекстный менеджер для отключения приведения типа входных данных в методе forward слоёв LoRA
peft.helpers.disable_input_dtype_casting
< source >( model: Moduleactive: bool = True )
Контекстный менеджер отключает приведение типа входных данных к типу весов.
Контекстный менеджер для включения кэширования DoRA (быстрее на этапе вывода, но требует больше памяти)
Контекстный менеджер для включения кэширования DoRA, что повышает скорость инференса DoRA за счёт потребления памяти.
При активном кэшировании материализованный вес LoRA (B @ A) и норма веса (базовый вес + вес LoRA) кэшируются.
Даже в контексте кэширования, если модель находится в режиме обучения, кэширование отключается. При переключении модели в режим обучения кэш очищается.
Пример:
>>> from peft.helpers import DoraCaching
>>> model.eval() # put in eval model for caching to work
>>> with DoraCaching(): # use as a context manager
... output = model(inputs)
>>> dora_caching = DoraCaching()
>>> dora_caching(enabled=True) # permanently enable caching
>>> output = model(inputs)
>>> dora_caching(enabled=False) # permanently disable caching
>>> output = model(inputs)Выбор цели KappaTune
KappaTuneSelector и find_kappa_target_modules реализуют общий процесс выбора целевых модулей из статьи KappaTune.
Метод выявляет модули с большей гибкостью (более высокой дифференциальной энтропией выходных данных) и меньшей специализацией (более низкой чувствительностью к конкретным направлениям входных данных).
Эти свойства делают выбранные модули хорошими кандидатами для смягчения катастрофического забывания в любом методе адаптации, добавляющем обучаемые параметры, включая LoRA, DoRA, LoHa, AdaLoRA и даже прямую дообучение исходных весов.
класс peft.helpers.KappaTuneSelector
< source >( model: Modulemax_dim_size_to_analyze: int = 16384moe_param_suffixes: tuple[str, ...] | None = Noneshow_progress: bool = True )
Лёгкая утилита для вычисления чисел обусловленности по модулям / по параметрам и возврата лучших целей для LoRA.
Поддерживает:
- Классические модули nn.Linear (target_modules в LoraConfig)
- Современные объединённые веса MoE, хранящиеся как 3D-параметр nn.Parameter (gate_up_proj / down_proj, gate_proj / up_proj и т. д.), используемые в моделях Llama-4, Qwen2_MoE, Qwen3_MoE, Mixtral, OLMoE и аналогичных. Они возвращаются через target_parameters.
Примечания:
- Вычисление числа обусловленности требует выполнения SVD и может занимать несколько минут на очень больших моделях. Полосу прогресса можно показать/отключить с помощью
show_progress.
peft.find_kappa_target_modules
< source >( model: Moduletop_p: float = 0.2max_dim_size_to_analyze: int = 16384moe_param_suffixes: tuple[str, ...] | None = Noneshow_progress: bool = True )
Параметры
- model (nn.Module) — Базовая модель, веса которой будут проанализированы на предмет чисел обусловленности.
- top_p (float, optional) — Выбирает верхнюю долю кандидатов (модулей/параметров) с наименьшими числами обусеченности.
- max_dim_size_to_analyze (int, optional) — Верхняя граница максимального размера матрицы, анализируемой с помощью SVD. По умолчанию 16384.
- moe_param_suffixes (Optional[tuple[str, …]], optional) —
Суффиксы имён параметров, используемые для идентификации объединённых тензоров MoE, которые должны возвращаться через
target_parameters. Если значение равно None, используются разумные значения по умолчанию. - show_progress (bool, optional) — Отображать ли индикатор прогресса при вычислении чисел обусловленности (на основе SVD) для кандидатов тензоров/модулей. Отключите в CI или других неинтерактивных средах. По умолчанию True.
Удобная однострочная функция для выбора целевых модулей KappaTune. Возвращает как target_modules, так и target_parameters.