Transformers documentation

PEFT

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PEFT

Класс PeftAdapterMixin предоставляет функции из библиотеки PEFT для управления адаптерами в Transformers. Этот миксин поддерживает все методы PEFT, не основанные на обучении промптов (LoRA, IA3, AdaLoRA и другие). Методы prefix tuning (prompt tuning, prompt learning) не поддерживаются, поскольку их невозможно внедрить в модуль torch.

класс transformers.integrations.PeftAdapterMixin

< >

( )

Класс, содержащий все функции для загрузки и использования весов адаптеров, поддерживаемых в библиотеке PEFT. Более подробную информацию об адаптерах и их внедрении в модель на основе трансформера можно найти в документации библиотеки PEFT: https://huggingface.co/docs/peft/index

В настоящее время поддерживаются только методы PEFT, не использующие обучение промптов (LoRA, IA³ и т. д.). Другие модели PEFT, такие как prompt tuning и prompt learning, не входят в область применения, поскольку эти адаптеры нельзя «встроить» в модуль torch. Для использования этих методов обратитесь к руководству по использованию библиотеки PEFT.

С помощью этого миксина, если установлена правильная версия PEFT (>= 0.20.0), становится возможным:

  • Загрузите адаптер, сохранённый по локальному пути или в удалённом репозитории Hub, и внедрите его в модель
  • Подключите новые адаптеры к модели и обучите их с помощью Trainer или самостоятельно.
  • Подключите несколько адаптеров и последовательно активируйте / деактивируйте их
  • Активировать / деактивировать все адаптеры из модели.
  • Получите state_dict активного адаптера.

load_adapter

< >

( peft_model_id: str | None = Noneadapter_name: str | None = Nonepeft_config: dict[str, typing.Any] | None = Noneadapter_state_dict: dict[str, 'torch.Tensor'] | None = Nonelow_cpu_mem_usage: bool = Falseis_trainable: bool = Falsehotswap: typing.Union[bool, typing.Literal['auto']] = 'auto'local_files_only: bool = Falseadapter_kwargs: dict[str, typing.Any] | None = Noneload_config: typing.Optional[ForwardRef('LoadStateDictConfig')] = None**kwargs )

Параметры

  • peft_model_id (str, необязательный) — Идентификатор модели для поиска на Hub или локальный путь к сохранённому файлу конфигурации адаптера и весам адаптера.
  • adapter_name (str, необязательный) — Имя адаптера для использования. Если не задано, будет использовано имя «default».
  • load_config (LoadStateDictConfig, необязательный) — Конфигурация загрузки для повторного использования при получении весов адаптера, как правило, из from_pretrained.
  • kwargs (dict[str, Any], необязательный) — Дополнительные поля LoadStateDictConfig, передаваемые в виде именованных аргументов.
  • peft_config (dict[str, Any], необязательный) — Конфигурация добавляемого адаптера. Поддерживаются все конфигурации обучения, не основанные на промптах (LoRA, IA³ и т. д.). Этот аргумент используется, если пользователь напрямую передаёт state dict PEFT.
  • adapter_state_dict (dict[str, torch.Tensor], необязательный) — Словарь состояния адаптера для загрузки. Этот аргумент используется, если пользователи напрямую передают словари состояния PEFT.
  • low_cpu_mem_usage (bool, необязательный, по умолчанию False) — Снижает потребление памяти при загрузке адаптера PEFT. Это также должно ускорить процесс загрузки.
  • is_trainable (bool, необязательный, по умолчанию False) — Определяет, должен ли адаптер быть обучаемым. Если False, адаптер будет заморожен и сможет использоваться только для инференса.
  • hotswap — ("auto" or bool, optional, defaults to "auto") Whether to substitute an existing (LoRA) adapter with the newly loaded adapter in-place. This means that, instead of loading an additional adapter, this will take the existing adapter weights and replace them with the weights of the new adapter. This can be faster and more memory efficient. However, the main advantage of hotswapping is that when the model is compiled with torch.compile, loading the new adapter does not require recompilation of the model. When using hotswapping, the passed adapter_name should be the name of an already loaded adapter.

    Если у нового адаптера и старого адаптера разные ранги и/или значения LoRA alpha (т. е. масштабирование), перед загрузкой адаптера необходимо вызвать дополнительный метод:

    model = AutoModel.from_pretrained(...)
    max_rank = ...  # the highest rank among all LoRAs that you want to load
    # call *before* compiling and loading the LoRA adapter
    model.enable_peft_hotswap(target_rank=max_rank)
    model.load_adapter(file_name_1, adapter_name="default")
    # optionally compile the model now
    model = torch.compile(model, ...)
    output_1 = model(...)
    # now you can hotswap the 2nd adapter, use the same name as for the 1st
    # hotswap is activated by default since enable_peft_hotswap was called
    model.load_adapter(file_name_2, adapter_name="default")
    output_2 = model(...)

    По умолчанию hotswap отключён и требует передачи hotswap=True. Если вы сначала вызвали enable_peft_hotswap, он будет включён. В этом случае вы всё ещё можете отключить его вручную, передав hotswap=False.

    Обратите внимание, что hotswapping имеет несколько ограничений, описанных здесь: https://huggingface.co/docs/peft/main/en/package_reference/hotswap

  • adapter_kwargs (dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод from_pretrained конфигурации адаптера и метод find_adapter_config_file.

Загрузите веса адаптера из файла или удалённой папки на Hub. Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас ознакомиться с ними в официальной документации PEFT: https://huggingface.co/docs/peft

Для загрузки весов адаптера требуется установка PEFT в качестве бэкенда.

add_adapter

< >

( adapter_configadapter_name: str | None = None )

Параметры

  • adapter_config (~peft.PeftConfig) — Конфигурация добавляемого адаптера. Поддерживаются методы обучения без промптов (LoRA, IA³ и т. д.).
  • adapter_name (str, необязательный, по умолчанию "default") — Имя добавляемого адаптера. Если имя не передано, адаптеру будет присвоено имя по умолчанию.

Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас ознакомиться с ними подробнее в официальной документации PEFT: https://huggingface.co/docs/peft

Добавляет новый адаптер к текущей модели для целей обучения. Если имя адаптера не передано, ему будет присвоено имя по умолчанию в соответствии с конвенцией библиотеки PEFT (в PEFT в качестве имени адаптера по умолчанию используется «default»).

Обратите внимание, что вновь добавленный адаптер не активируется автоматически. Для его активации используйте model.set_adapter.

set_adapter

< >

( adapter_name: list[str] | str )

Параметры

  • adapter_name (Union[list[str], str]) — Имя адаптера для установки. Также может быть списком строк для установки нескольких адаптеров.

Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас ознакомиться с ними подробнее в официальной документации PEFT: https://huggingface.co/docs/peft

Устанавливает конкретный адаптер, принудительно заставляя модель использовать этот адаптер и отключая остальные адаптеры.

disable_adapters

< >

( )

Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас ознакомиться с ними подробнее в официальной документации PEFT: https://huggingface.co/docs/peft

Отключите все адаптеры, подключенные к модели. В результате инференс будет выполняться только с базовой моделью.

enable_adapters

< >

( )

Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас ознакомиться с ними подробнее в официальной документации PEFT: https://huggingface.co/docs/peft

Включите адаптеры, подключенные к модели.

enable_peft_hotswap

< >

( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )

Параметры

  • target_rank (int, необязательный, по умолчанию 128) — Наибольший ранг среди всех адаптеров, которые будут загружены.
  • check_compiled (str, необязательный, по умолчанию "error") — Как обрабатывать ситуацию, когда модель уже скомпилирована (в целом этого следует избегать). Варианты:
    • “error” (по умолчанию): вызывать ошибку
    • “warn”: выдать предупреждение
    • “ignore”: ничего не делать

Позволяет выполнять горячую замену адаптеров PEFT с различными рангами или, если модель скомпилирована, без запуска повторной компиляции.

Сейчас hotswapping поддерживается только для LoRA.

Вызов этого метода необходим только при горячей замене адаптеров, если модель скомпилирована или ранги загруженных адаптеров различаются. Если все ранги идентичны, а модель не скомпилирована, горячая замена работает без предварительного вызова этого метода.

active_adapters

< >

( )

Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас ознакомиться с ними подробнее в официальной документации PEFT: https://huggingface.co/docs/peft

Получает текущие активные адаптеры модели. В случае многоадаптерного вывода (комбинации нескольких адаптеров для вывода) возвращает список всех активных адаптеров, чтобы пользователи могли работать с ними соответствующим образом.

Для предыдущих версий PEFT (не поддерживающих вывод с несколькими адаптерами) module.active_adapter возвращает одну строку.

get_adapter_state_dict

< >

( adapter_name: str | None = Nonestate_dict: dict | None = None )

Параметры

  • adapter_name (str, необязательный) — Имя адаптера, из которого нужно получить state dict. Если имя не передано, используется активный адаптер.
  • state_dict (вложенный словарь torch.Tensor, необязательный) — Словарь состояния модели. По умолчанию используется self.state_dict(), но этот параметр можно указать, если при восстановлении словаря состояния модели требуются особые меры предосторожности (например, при использовании параллелизма моделей).

Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас ознакомиться с ними подробнее в официальной документации PEFT: https://huggingface.co/docs/peft

Получает словарь состояния адаптера, который должен содержать только тензоры весов указанного адаптера adapter_name. Если adapter_name не передан, используется активный адаптер.

delete_adapter

< >

( adapter_names: list[str] | str )

Параметры

  • adapter_names (Union[list[str], str]) — Имя или список имён адаптеров, которые нужно удалить.

Удалить адаптер PEFT из базовой модели.

Update on GitHub