Diffusers documentation

UNet

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNet

Некоторые методы обучения, такие как LoRA и Custom Diffusion, как правило, нацелены на слои внимания UNet, однако эти методы могут применяться и к другим слоям, не связанным с вниманием. Вместо обучения всех параметров модели обучается только их подмножество, что быстрее и эффективнее. Этот класс полезен, если вы только загружаете веса в UNet. Если вам нужно загрузить веса в текстовый энкодер или одновременно в текстовый энкодер и UNet, используйте вместо этого функцию load_lora_weights().

Класс UNet2DConditionLoadersMixin предоставляет функции для загрузки и сохранения весов, слияния и разделения LoRA, отключения и включения LoRA, а также установки и удаления адаптеров.

Чтобы узнать больше о том, как загрузить веса LoRA, см. руководство LoRA.

UNet2DConditionLoadersMixin

класс diffusers.loaders.UNet2DConditionLoadersMixin

< >

( )

Загрузите слои LoRA в UNet2DCondtionModel.

load_attn_procs

< >

( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )

Параметры

  • pretrained_model_name_or_path_or_dict (str или os.PathLike или dict) — Может быть одним из следующих:
    • Строка, идентификатор модели (например, google/ddpm-celebahq-256) предобученной модели, размещенной на Hub.
    • Путь к каталогу (например, ./my_model_directory), содержащему веса модели, сохранённые с помощью ModelMixin.save_pretrained().
    • Словарь состояния torch.
  • 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 или локально.
  • weight_name (str, необязательный, по умолчанию None) — Имя файла сериализованного state dict.

Загрузите предобученные слои attention-процессора Custom Diffusion в UNet2DConditionModel. Слой attention-процессора должен быть определён в attention_processor.py и являться классом torch.nn.Module. Для загрузки слоёв LoRA используйте вместо этого load_lora_adapter().

Пример:

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")

save_attn_procs

< >

( save_directory: str | os.PathLikeis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True**kwargs )

Параметры

  • save_directory (str или os.PathLike) — Каталог для сохранения attention processor (будет создан, если не существует).
  • is_main_process (bool, необязательный, по умолчанию True) — Указывает, является ли процесс, вызывающий эту функцию, основным. Полезно при распределенном обучении, когда необходимо вызвать эту функцию во всех процессах. В этом случае установите is_main_process=True только в основном процессе, чтобы избежать гонок.
  • save_function (Callable) — Функция, используемая для сохранения словаря состояния. Полезно при распределённом обучении, когда необходимо заменить torch.save на другой метод. Может быть настроена с помощью переменной окружения DIFFUSERS_SAVE_MODE.
  • safe_serialization (bool, необязательный, по умолчанию True) — Сохранять ли модель с помощью safetensors или с помощью pickle.

Сохраните слои процессора внимания Custom Diffusion в каталог, чтобы их можно было загрузить с помощью метода load_attn_procs(). Для сохранения слоёв LoRA используйте вместо этого save_lora_adapter().

Пример:

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
pipeline.unet.save_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
Update on GitHub