Buckets:

hf-doc-build/doc / diffusers /main /ru /api /modular_diffusers /pipeline_components.md
mishig's picture
|
download
raw
21.9 kB

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

ComponentSpec[[diffusers.ComponentSpec]]

diffusers.ComponentSpec[[diffusers.ComponentSpec]]

diffusers.ComponentSpec(name: str | None = None, type_hint: typing.Optional[typing.Type] = None, description: str | None = None, config: diffusers.configuration_utils.FrozenDict | None = None, pretrained_model_name_or_path: str | list[str] | None = None, subfolder: str | None = '', variant: str | None = None, revision: str | None = None, default_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[[diffusers.ComponentSpec.create]]

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

Источник

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

decode_load_id[[diffusers.ComponentSpec.decode_load_id]]

decode_load_id(load_id: str)

Источник

Параметры:

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

Возвращает:

Словарь, сопоставляющий имена полей загрузки с их значениями. Например, { "pretrained_model_name_or_path": "path/to/repo", "subfolder": "subfolder", "variant": "variant", "revision": "revision" }. Если значение сегмента равно "null", оно заменяется на None. Возвращает None, если load_id равно "null" (что указывает на то, что компонент не был создан с помощью метода load).

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

from_component[[diffusers.ComponentSpec.from_component]]

from_component(name: str, component: Any)

Источник

Параметры:

name : Название компонента

component : Объект компонента, на основе которого создаётся спецификация

Возвращает:

Объект ComponentSpec

Исключения: ValueError

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

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

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

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

load[[diffusers.ComponentSpec.load]]

load(**kwargs)

Источник

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

loading_fields[[diffusers.ComponentSpec.loading_fields]]

loading_fields()

Источник

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

ConfigSpec[[diffusers.ConfigSpec]]

diffusers.ConfigSpec[[diffusers.ConfigSpec]]

diffusers.ConfigSpec(name: str, default: Any, description: str | None = None)

Источник

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

ComponentsManager[[diffusers.ComponentsManager]]

diffusers.ComponentsManager[[diffusers.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")

добавить[[diffusers.ComponentsManager.add]]

add(name: str, component: Any, collection: str | None = None)

Источник

Параметры:

name (str) : имя компонента

component (Any) : Компонент для добавления

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

Возвращает: str

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

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

disable_auto_cpu_offload[[diffusers.ComponentsManager.disable_auto_cpu_offload]]

disable_auto_cpu_offload()

Источник

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

enable_auto_cpu_offload[[diffusers.ComponentsManager.enable_auto_cpu_offload]]

enable_auto_cpu_offload(device: str | int | torch.device = None, memory_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[[diffusers.ComponentsManager.get_components_by_ids]]

get_components_by_ids(ids: list[str], return_dict_with_names: bool | None = True)

Источник

Параметры:

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[[diffusers.ComponentsManager.get_components_by_names]]

get_components_by_names(names: list[str], collection: str | None = None)

Источник

Параметры:

names (list[str]) : список имён компонентов

collection (str | None) : Необязательная коллекция для фильтрации

Возвращает: dict[str, Any]

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

Исключения: ValueError

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

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

get_ids[[diffusers.ComponentsManager.get_ids]]

get_ids(names: str | list[str] = None, collection: str | None = None)

Источник

Параметры:

names (str | list[str]) : список имён компонентов

collection (str | None) : Необязательная коллекция для фильтрации

Возвращает: list[str]

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

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

get_model_info[[diffusers.ComponentsManager.get_model_info]]

get_model_info(component_id: str, fields: str | list[str] | None = None)

Источник

Параметры:

component_id (str) : Имя компонента, для которого нужно получить информацию

fields (str | list[str] | None) : Поле (или поля) для возврата. Может быть строкой для одного поля или списком полей. Если None, используется настройка available_info_fields.

Возвращает:

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

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

get_one[[diffusers.ComponentsManager.get_one]]

get_one(component_id: str | None = None, name: str | None = None, collection: str | None = None, load_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 Вызывает ошибку, если найдено несколько совпадающих компонентов или ни одного.

удалить[[diffusers.ComponentsManager.remove]]

remove(component_id: str = None)

Источник

Параметры:

component_id (str) : идентификатор компонента для удаления

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

remove_from_collection[[diffusers.ComponentsManager.remove_from_collection]]

remove_from_collection(component_id: str, collection: str)

Источник

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

search_components[[diffusers.ComponentsManager.search_components]]

search_components(names: str | None = None, collection: str | None = None, load_id: str | None = None, return_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, возвращает словарь с идентификаторами компонентов в качестве ключей

Возвращает:

Dictionary mapping component names to components if return_dict_with_names=True, or a dictionary mapping component IDs to components if return_dict_with_names=False

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

set_offload_strategy[[diffusers.ComponentsManager.set_offload_strategy]]

set_offload_strategy(offload_strategy)

Источник

Параметры:

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

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

InsertableDict[[diffusers.modular_pipelines.InsertableDict]]

diffusers.modular_pipelines.InsertableDict[[diffusers.modular_pipelines.InsertableDict]]

Источник

Xet Storage Details

Size:
21.9 kB
·
Xet hash:
1dbec4b61793ffdc78244a54efaa74088b053e916d76d6d7bc8ce949e4a03971

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.