Diffusers documentation

Компоненты и конфигурации

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

and get access to the augmented documentation experience

to get started

Компоненты и конфигурации

ComponentSpec

класс diffusers.ComponentSpec

< >

( name: str | None = Nonetype_hint: typing.Optional[typing.Type] = Nonedescription: str | None = Noneconfig: diffusers.configuration_utils.FrozenDict | None = Nonepretrained_model_name_or_path: str | list[str] | None = Nonesubfolder: str | None = ''variant: str | None = Nonerevision: str | None = Nonedefault_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained'repo: str | list[str] | None = None )

Параметры

  • name — Название компонента
  • type_hint — Тип компонента (например, UNet2DConditionModel)
  • description — Необязательное описание компонента
  • config — Необязательный словарь конфигурации для создания init
  • pretrained_model_name_or_path — Необязательный путь pretrained_model_name_or_path для создания через from_pretrained
  • subfolder — Необязательная подпапка в pretrained_model_name_or_path
  • variant — Необязательный вариант в pretrained_model_name_or_path
  • revision — необязательная ревизия в pretrained_model_name_or_path
  • default_creation_method — предпочтительный метод создания — «from_config» или «from_pretrained»

Спецификация компонента конвейера.

Компонент можно создать двумя способами:

  1. С нуля с помощью init и словаря конфигурации
  2. с помощью from_pretrained

create

< >

( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )

Создайте компонент с помощью from_config с конфигурацией.

decode_load_id

< >

( load_id: str )

Параметры

  • load_id — строка load_id для декодирования, формат: “pretrained_model_name_or_path|subfolder|variant|revision”, где значения None представлены как “null”

Декодировать строку load_id обратно в словарь полей и значений загрузки.

from_component

< >

( name: strcomponent: Any )

Параметры

  • name — Название компонента
  • component — объект Component, на основе которого создаётся спецификация

Исключения

ValueError

  • ValueError — если компонент не поддерживается (например, nn.Module без load_id, не ConfigMixin)

Создайте ComponentSpec из Component.

В настоящее время поддерживаются:

  • Компоненты, созданные с помощью метода ComponentSpec.load()
  • Компоненты, являющиеся подклассами ConfigMixin, но не nn.Modules (например, планировщики, направляющие)

load

< >

( **kwargs )

Загрузите компонент с помощью from_pretrained.

loading_fields

< >

( )

Возвращает имена всех полей, связанных с загрузкой (то есть тех, для которых field.metadata[“loading”] равно True).

ConfigSpec

класс diffusers.ConfigSpec

< >

( name: strdefault: Anydescription: str | None = None )

Спецификация параметра конфигурации конвейера.

ComponentsManager

класс diffusers.ComponentsManager

< >

( )

Центральный реестр и система управления компонентами моделей в нескольких конвейерах.

ComponentsManager предоставляет единый способ регистрации, отслеживания и повторного использования компонентов модели (таких как UNet, VAE, текстовые энкодеры и т. д.) в различных модульных конвейерах. Он включает функции для обнаружения дубликатов, управления памятью и организации компонентов.

> Это экспериментальная функция, которая может измениться в будущем.

Пример:

from diffusers import ComponentsManager

# Create a components manager
cm = ComponentsManager()

# Add components
cm.add("unet", unet_model, collection="sdxl")
cm.add("vae", vae_model, collection="sdxl")

# Enable auto offloading
cm.enable_auto_cpu_offload()

# Retrieve components
unet = cm.get_one(name="unet", collection="sdxl")

add

< >

( name: strcomponent: Anycollection: str | None = None ) → str

Параметры

  • name (str) — Имя компонента
  • component (Any) — Компонент для добавления
  • collection (str | None) — Коллекция, в которую нужно добавить компонент

Возвращает

str

Уникальный идентификатор компонента, который генерируется как “{name}_{id(component)}”, где id(component) — это встроенный в Python уникальный идентификатор объекта

Добавьте компонент в ComponentsManager.

disable_auto_cpu_offload

< >

( )

Отключите автоматическую выгрузку на CPU для всех компонентов.

enable_auto_cpu_offload

< >

( device: str | int | torch.device = Nonememory_reserve_margin = '3GB'offload_strategy = None )

Параметры

  • device (str | int | torch.device) — Устройство выполнения, на которое модели перемещаются для прямых проходов
  • memory_reserve_margin (str) — Запас памяти, который следует использовать. По умолчанию — 3 ГБ. Это объём памяти, который нужно держать свободным на устройстве, чтобы избежать нехватки памяти во время выполнения модели (например, для промежуточных активаций, градиентов и т. д.).
  • offload_strategy — любой вызываемый объект с сигнатурой (hooks, model_id, model, execution_device) -> hooks, возвращающий, какие резидентные модели следует выгрузить (offload) перед загрузкой входящей. По умолчанию используется AutoOffloadStrategy, который освобождает наименьшую достаточную комбинацию.

Включите автоматическую выгрузку на CPU для всех компонентов.

Алгоритм работает следующим образом:

  1. Все модели по умолчанию загружаются на CPU
  2. Когда вызывается прямой проход модели, она перемещается на устройство выполнения
  3. Если памяти недостаточно, другие модели на устройстве возвращаются на CPU
  4. Система пытается выгрузить наименьшую комбинацию моделей, которая освобождает достаточно памяти
  5. Модели остаются на устройстве выполнения, пока другая модель не потребует память и не вытеснит их

Модель, выгружаемая группами, участвует в этом процессе, но определяет своё расположение: она может освободить место, переместив другие модели, но никогда не перемещается, чтобы освободить место для них. Порядок не имеет значения — выгрузка групп может выполняться до или после включения этой функции. AutoOffloadStrategy принимает решения на основе объёма памяти, занимаемой моделями, что не отражает ситуацию, когда модель удерживает только одну группу за раз, поэтому передайте offload_strategy, который принимает решения на основе рабочего процесса.

get_components_by_ids

< >

( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]

Параметры

  • ids (list[str]) — список идентификаторов компонентов
  • return_dict_with_names (bool | None) — Возвращать ли словарь с именами компонентов в качестве ключей:

Возвращает

dict[str, Any]

Словарь компонентов.

  • Если return_dict_with_names=True, ключами являются имена компонентов.
  • Если return_dict_with_names=False, ключами являются идентификаторы компонентов.

Исключения

ValueError

  • ValueError — если в результатах поиска обнаружены дублирующиеся имена компонентов при return_dict_with_names=True

Получение компонентов по списку идентификаторов.

get_components_by_names

< >

( names: list[str]collection: str | None = None ) → dict[str, Any]

Параметры

  • names (list[str]) — список имён компонентов
  • collection (str | None) — Необязательная коллекция для фильтрации

Возвращает

dict[str, Any]

Словарь компонентов, где ключами являются имена компонентов

Исключения

ValueError

  • ValueError — если в результатах поиска обнаружены дублирующиеся имена компонентов

Получить компоненты по списку имен, при необходимости с фильтром по коллекции.

get_ids

< >

( names: str | list[str] = Nonecollection: str | None = None ) → list[str]

Параметры

  • names (str | list[str]) — список имён компонентов
  • collection (str | None) — Необязательная коллекция для фильтрации

Возвращает

list[str]

список идентификаторов компонентов

Получить идентификаторы компонентов по списку имен, при необходимости с фильтрацией по коллекции.

get_model_info

< >

( component_id: strfields: str | list[str] | None = None )

Параметры

  • component_id (str) — Имя компонента, для которого нужно получить информацию
  • fields (str | list[str] | None) — Field(s) to return. Can be a string for single field or list of fields. If None, uses the available_info_fields setting.

Получите подробную информацию о компоненте.

get_one

< >

( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )

Параметры

  • component_id (str | None) — Необязательный идентификатор компонента для получения
  • name (str | None) — Имя компонента или шаблон
  • collection (str | None) — Необязательная коллекция для фильтрации
  • load_id (str | None) — Необязательный load_id для фильтрации

Исключения

ValueError

  • ValueError — если ни один компонент не совпадает или совпадает несколько

Получить один компонент можно одним из способов:

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

удаление

< >

( component_id: str = None )

Параметры

  • component_id (str) — Идентификатор компонента, который нужно удалить

Удалить компонент из ComponentsManager.

remove_from_collection

< >

( component_id: strcollection: str )

Удалить компонент из коллекции.

search_components

< >

( names: str | None = Nonecollection: str | None = Noneload_id: str | None = Nonereturn_dict_with_names: bool = True )

Параметры

  • names — Имя или имена компонентов или шаблон(ы) Шаблоны:
    • “unet” : совпадает с любым компонентом с базовым именем “unet” (например, unet_123abc)
    • “!unet”: всё, кроме компонентов с базовым именем “unet”
    • “unet*” : всё, что имеет базовое имя, начинающееся с “unet”
    • “!unet*” : всё, чьё базовое имя НЕ начинается с “unet”
    • ”unet” : всё, что содержит “unet” в базовом имени
    • “!unet” : всё, что в базовом имени НЕ содержит “unet”
    • “refiner|vae|unet” : всё, что имеет базовое имя, точно совпадающее с “refiner”, “vae” или “unet”
    • “!refiner|vae|unet” : всё, чьё базовое имя НЕ совпадает точно с “refiner”, “vae” или “unet”
    • “unet|vae”: всё, что имеет базовое имя, начинающееся с “unet” ИЛИ с “vae”
  • collection — Необязательная коллекция для фильтрации
  • load_id — Необязательный load_id для фильтрации
  • return_dict_with_names — Если True, возвращает словарь с именами компонентов в качестве ключей; если обнаружено несколько компонентов с одинаковым именем, возникает ошибка. Если False, возвращает словарь с идентификаторами компонентов в качестве ключей

Ищите компоненты по имени с помощью простого сопоставления шаблонов. При необходимости фильтруйте по коллекции или load_id.

set_offload_strategy

< >

( offload_strategy )

Параметры

  • offload_strategy — Любая вызываемая функция с сигнатурой (hooks, model_id, model, execution_device) -> hooks: она принимает хуки моделей, находящихся в данный момент на устройстве, и возвращает те, которые нужно выгрузить перед загрузкой входящей модели. По умолчанию используется AutoOffloadStrategy, который освобождает наименьшую достаточную комбинацию.

Замените стратегию offload для всех управляемых моделей. Действительно только при включённом автоматическом offloading на CPU.

InsertableDict

класс diffusers.modular_pipelines.InsertableDict

< >

( )

Update on GitHub