Buckets:
| # PEFT | |
| Diffusers поддерживает загрузку адаптеров, таких как [LoRA](../../tutorials/using_peft_for_inference), с помощью библиотеки [PEFT](https://huggingface.co/docs/peft/index) и класса [PeftAdapterMixin](/docs/diffusers/main/ru/api/loaders/peft#diffusers.loaders.PeftAdapterMixin). Это позволяет классам моделирования в Diffusers, таким как [UNet2DConditionModel](/docs/diffusers/main/ru/api/models/unet2d-cond#diffusers.UNet2DConditionModel) и [SD3Transformer2DModel](/docs/diffusers/main/ru/api/models/sd3_transformer2d#diffusers.SD3Transformer2DModel), работать с адаптером. | |
| > [!TIP] | |
| > См. учебник [Inference with PEFT](../../tutorials/using_peft_for_inference) для обзора того, как использовать PEFT в Diffusers для инференса. | |
| ## PeftAdapterMixin[[diffusers.loaders.PeftAdapterMixin]] | |
| #### diffusers.loaders.PeftAdapterMixin[[diffusers.loaders.PeftAdapterMixin]] | |
| ```python | |
| diffusers.loaders.PeftAdapterMixin() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L62) | |
| Класс, содержащий все функции для загрузки и использования весов адаптеров, поддерживаемых в библиотеке PEFT. Дополнительные сведения об адаптерах и их внедрении в базовую модель см. в [документации](https://huggingface.co/docs/peft/index) PEFT. | |
| Установите последнюю версию PEFT и используйте этот миксин, чтобы: | |
| - Подключите новые адаптеры к модели. | |
| - Подключайте несколько адаптеров и последовательно активируйте/деактивируйте их. | |
| - Активировать/деактивировать все адаптеры из модели. | |
| - Получите список активных адаптеров. | |
| #### active_adapters[[diffusers.loaders.PeftAdapterMixin.active_adapters]] | |
| ```python | |
| active_adapters() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L652) | |
| Получает текущий список активных адаптеров модели. | |
| Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас прочитать о них подробнее в [документации](https://huggingface.co/docs/peft) PEFT. | |
| #### add_adapter[[diffusers.loaders.PeftAdapterMixin.add_adapter]] | |
| ```python | |
| add_adapter(adapter_config, adapter_name: str = 'default') | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L518) | |
| **Параметры:** | |
| adapter_config (`[~peft.PeftConfig]`) : конфигурация добавляемого адаптера; поддерживаются методы non-prefix tuning и adaption prompt. | |
| adapter_name (`str`, *необязательный*, по умолчанию `"default"`) : Имя добавляемого адаптера. Если имя не передано, адаптеру будет присвоено имя по умолчанию. | |
| Добавляет новый адаптер к текущей модели для обучения. Если имя адаптера не передано, ему назначается имя по умолчанию в соответствии с конвенцией библиотеки PEFT. | |
| Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас прочитать о них подробнее в [документации](https://huggingface.co/docs/peft) PEFT. | |
| #### delete_adapters[[diffusers.loaders.PeftAdapterMixin.delete_adapters]] | |
| ```python | |
| delete_adapters(adapter_names: list[str] | str) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L777) | |
| **Параметры:** | |
| adapter_names (`list[str, str]`) : Имена (одна строка или список строк) адаптера, который нужно удалить. | |
| Удалите слои LoRA адаптера из базовой модели. | |
| Пример: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 | |
| ).to("cuda") | |
| pipeline.load_lora_weights( | |
| "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_names="cinematic" | |
| ) | |
| pipeline.unet.delete_adapters("cinematic") | |
| ``` | |
| #### disable_adapters[[diffusers.loaders.PeftAdapterMixin.disable_adapters]] | |
| ```python | |
| disable_adapters() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L607) | |
| Отключите все адаптеры, подключенные к модели, и вернитесь к инференсу только с базовой моделью. | |
| Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас прочитать о них подробнее в [документации](https://huggingface.co/docs/peft) PEFT. | |
| #### disable_lora[[diffusers.loaders.PeftAdapterMixin.disable_lora]] | |
| ```python | |
| disable_lora() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L731) | |
| Отключает активные слои LoRA базовой модели. | |
| Пример: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 | |
| ).to("cuda") | |
| pipeline.load_lora_weights( | |
| "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" | |
| ) | |
| pipeline.unet.disable_lora() | |
| ``` | |
| #### enable_adapters[[diffusers.loaders.PeftAdapterMixin.enable_adapters]] | |
| ```python | |
| enable_adapters() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L629) | |
| Включает адаптеры, привязанные к модели. Модель использует `self.active_adapters()` для получения списка адаптеров, которые необходимо включить. | |
| Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас прочитать о них подробнее в [документации](https://huggingface.co/docs/peft) PEFT. | |
| #### enable_lora[[diffusers.loaders.PeftAdapterMixin.enable_lora]] | |
| ```python | |
| enable_lora() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L754) | |
| Включает активные слои LoRA базовой модели. | |
| Пример: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 | |
| ).to("cuda") | |
| pipeline.load_lora_weights( | |
| "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" | |
| ) | |
| pipeline.unet.enable_lora() | |
| ``` | |
| #### enable_lora_hotswap[[diffusers.loaders.PeftAdapterMixin.enable_lora_hotswap]] | |
| ```python | |
| enable_lora_hotswap(target_rank: int = 128, check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error') | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L815) | |
| **Параметры:** | |
| target_rank (`int`, *необязательный*, по умолчанию `128`) : Наибольший ранг среди всех адаптеров, которые будут загружены. | |
| check_compiled (`str`, *необязательный*, по умолчанию `"error"`) : способ обработки случая, когда модель уже скомпилирована, чего следует избегать. Варианты: - "error" (по умолчанию): вызвать ошибку - "warn": вывести предупреждение - "ignore": ничего не делать | |
| Включает возможность горячей замены адаптеров LoRA. | |
| Вызов этого метода необходим только при горячей замене адаптеров, если модель скомпилирована или ранги загруженных адаптеров различаются. | |
| #### load_lora_adapter[[diffusers.loaders.PeftAdapterMixin.load_lora_adapter]] | |
| ```python | |
| load_lora_adapter(pretrained_model_name_or_path_or_dict, prefix = 'transformer', hotswap: bool = False, **kwargs) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L85) | |
| **Параметры:** | |
| pretrained_model_name_or_path_or_dict (`str` или `os.PathLike` или `dict`) : Может быть одним из следующих: - Строка, *model id* (например, `google/ddpm-celebahq-256`) предобученной модели, размещенной на Hub. - Путь к *каталогу* (например, `./my_model_directory`), содержащему веса модели, сохраненные с помощью [ModelMixin.save_pretrained()](/docs/diffusers/main/ru/api/models/overview#diffusers.ModelMixin.save_pretrained). - [torch state dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). | |
| prefix (`str`, *необязательный*) : Префикс для фильтрации state dict. | |
| cache_dir (`str | os.PathLike`, *необязательный*) : Путь к каталогу, в котором кэшируется конфигурация загруженной предобученной модели, если стандартный кэш не используется. | |
| force_download (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, заменяя кэшированные версии, если они существуют. | |
| proxies (`dict[str, str]`, *необязательный*) : Словарь прокси-серверов для использования по протоколу или конечной точке, например, `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`. Прокси используются при каждом запросе. | |
| local_files_only (`bool`, *необязательный*, по умолчанию `False`) : Загружать только локальные веса модели и файлы конфигурации или нет. Если установлено в `True`, модель не будет скачана с Hub. | |
| token (`str` или *bool*, *необязательный*) : Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если `True`, используется токен, сгенерированный командой `diffusers-cli login` (сохранённый в `~/.huggingface`). | |
| revision (`str`, *необязательный*, по умолчанию `"main"`) : Конкретная версия модели, которую следует использовать. Может быть именем ветки, именем тега, идентификатором коммита или любым другим идентификатором, поддерживаемым Git. | |
| subfolder (`str`, *необязательный*, по умолчанию `""`) : Путь к подпапке, в которой находится файл модели в составе более крупного репозитория моделей на Hub или локально. | |
| network_alphas (`dict[str, float]`) : Значение альфы сети, используемое для стабильного обучения и предотвращения подтекания. Это значение имеет тот же смысл, что и опция `--network_alpha` в скрипте обучения kohya-ss. См. [эту ссылку](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). | |
| low_cpu_mem_usage (`bool`, *необязательный*) : Ускоряет загрузку модели, загружая только предобученные веса LoRA и не инициализируя случайные веса. | |
| hotswap : (`bool`, *необязательный*) По умолчанию `False`. Определяет, следует ли заменить существующий адаптер (LoRA) на вновь загруженный адаптер на месте. Это означает, что вместо загрузки дополнительного адаптера будут взяты веса существующего адаптера и заменены весами нового адаптера. Это может быть быстрее и экономнее по памяти. Однако главное преимущество горячей замены заключается в том, что при компиляции модели с помощью torch.compile загрузка нового адаптера не требует повторной компиляции модели. При использовании горячей замены переданный `adapter_name` должен быть именем уже загруженного адаптера. Если у нового и старого адаптеров разные ранги и/или значения LoRA alpha (т.е. масштабирование), перед загрузкой адаптера необходимо вызвать дополнительный метод: ```py pipeline = ... # load diffusers pipeline max_rank = ... # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter pipeline.enable_lora_hotswap(target_rank=max_rank) pipeline.load_lora_weights(file_name) # optionally compile the model now ``` Обратите внимание, что горячая замена адаптеров текстового кодировщика пока не поддерживается. У этой техники есть некоторые дополнительные ограничения, которые описаны здесь: https://huggingface.co/docs/peft/main/en/package_reference/hotswap | |
| metadata : метаданные адаптера LoRA. Если они переданы, метаданные, выведенные из state dict, не используются для инициализации `LoraConfig`. | |
| Загружает адаптер LoRA в базовую модель. | |
| #### save_lora_adapter[[diffusers.loaders.PeftAdapterMixin.save_lora_adapter]] | |
| ```python | |
| save_lora_adapter(save_directory, adapter_name: str = 'default', upcast_before_saving: bool = False, safe_serialization: bool = True, weight_name: str | None = None) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L394) | |
| **Параметры:** | |
| save_directory (`str` или `os.PathLike`) : Каталог для сохранения параметров LoRA. Будет создан, если не существует. | |
| adapter_name : (`str`, по умолчанию "default"): имя адаптера для сериализации. Полезно, если в базовой модели загружено несколько адаптеров. | |
| upcast_before_saving (`bool`, по умолчанию `False`) : Преобразовать ли базовую модель в `torch.float32` перед сериализацией. | |
| safe_serialization (`bool`, *необязательный*, по умолчанию `True`) : Сохранять ли модель с помощью `safetensors` или традиционным способом PyTorch с использованием `pickle`. | |
| weight_name : (`str`, *необязательный*, по умолчанию `None`): Имя файла, в который сериализовать state dict. | |
| Сохраните параметры LoRA, соответствующие базовой модели. | |
| #### set_adapter[[diffusers.loaders.PeftAdapterMixin.set_adapter]] | |
| ```python | |
| set_adapter(adapter_name: str | list[str]) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L558) | |
| **Параметры:** | |
| adapter_name (str | list[str])) : список адаптеров для установки или имя адаптера в случае с одним адаптером. | |
| Устанавливает конкретный адаптер, принудительно заставляя модель использовать только его и отключая остальные адаптеры. | |
| Если вы не знакомы с адаптерами и методами PEFT, мы приглашаем вас прочитать о них подробнее в [документации](https://huggingface.co/docs/peft) PEFT. | |
| #### set_adapters[[diffusers.loaders.PeftAdapterMixin.set_adapters]] | |
| ```python | |
| set_adapters(adapter_names: list[str] | str, weights: float | dict | list[float] | list[dict] | list[None] | None = None) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/peft.py#L462) | |
| **Параметры:** | |
| adapter_names (`list[str]` или `str`) : Имена адаптеров, которые следует использовать. | |
| weights (`Union[List[float], float]`, *необязательный*) : Веса адаптера(ов), используемые с UNet. Если `None`, веса устанавливаются в `1.0` для всех адаптеров. | |
| Установите адаптеры, активные в данный момент, для использования в диффузионной сети (например, unet, transformer и т. д.). | |
| Пример: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 | |
| ).to("cuda") | |
| pipeline.load_lora_weights( | |
| "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" | |
| ) | |
| pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") | |
| pipeline.unet.set_adapters(["cinematic", "pixel"], weights=[0.5, 0.5]) | |
| ``` | |
Xet Storage Details
- Size:
- 19.3 kB
- Xet hash:
- 54189bd4564d1c2bb9dab017496f0993d3bc7493acae496a7d0ba9b9c2f429fb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.