Diffusers documentation

Pipeline

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

Pipeline

ModularPipeline

класс diffusers.ModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

Параметры

  • blocks — ModularPipelineBlocks, блоки, используемые в конвейере

Базовый класс для всех модульных конвейеров.

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | Nonetrust_remote_code: bool | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = None**kwargs )

Параметры

  • pretrained_model_name_or_path (str или os.PathLike, необязательно) — Путь к конфигурации предобученного конвейера. Сначала будет предпринята попытка загрузить конфигурацию из modular_model_index.json, затем, для совместимости со стандартными немодульными репозиториями, будет использован model_index.json. Если pretrained_model_name_or_path не содержит конфигурации конвейера, в процессе инициализации он будет установлен в None.
  • trust_remote_code (bool, optional) — Следует ли доверять удалённому коду при загрузке конвейера. Необходимо установить в True, если вы хотите создавать блоки конвейера на основе пользовательского кода из pretrained_model_name_or_path
  • components_manager (ComponentsManager, optional) — экземпляр ComponentsManager для управления несколькими компонентами в разных пайплайнах и применения стратегий offloading.
  • collection (str, optional) —` Имя коллекции для организации компонентов в ComponentsManager.
  • workflow (str, optional) — Имя workflow, объявленного блоками pipeline. Если указано, блоки обрезаются до блоков выполнения этого workflow, так что pipeline ожидает — и load_components() загружает — только те компоненты, которые использует данный workflow.

Загрузите ModularPipeline из репозитория на Hugging Face Hub.

get_component_spec

< >

( name: str )

load_components

< >

( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )

Параметры

  • names — list of component names to load. If None, will load all components with default_creation_method == “from_pretrained”. If provided as a list or string, will load only the specified components.
  • workflow — имя workflow, объявленного блоками конвейера. Если указано, загружаются только те компоненты, которые используются блоками выполнения этого workflow. Не может использоваться вместе с names.
  • **kwargs — дополнительные аргументы, передаваемые в from_pretrained().Может быть:
    • единое значение, применяемое ко всем компонентам, которые будут загружены, например, dtype=torch.bfloat16
    • словарь, например, dtype={“unet”: torch.bfloat16, “default”: torch.float32}
    • если при передаче в kwargs другого поля загрузки, например pretrained_model_name_or_path, variant, revision и т. д., потенциально переопределяет ComponentSpec
    • если при передаче в kwargs другого поля загрузки, например pretrained_model_name_or_path, variant, revision и т. д., потенциально переопределяет ComponentSpec

Загрузите выбранные компоненты из спецификаций.

register_components

< >

( **kwargs )

Параметры

  • **kwargs — Именованные аргументы, где ключи — это имена компонентов, а значения — объекты компонентов. Например, register_components(unet=unet_model, text_encoder=encoder_model)

Зарегистрируйте компоненты с соответствующими им спецификациями.

Этот метод отвечает за:

  1. Устанавливает объекты компонентов в качестве атрибутов загрузчика (например, self.unet = unet)
  2. Обновляет словарь конфигурации, который будет сохранён как modular_model_index.json во время save_pretrained (только для компонентов from_pretrained)
  3. Добавляет компоненты в менеджер компонентов, если он подключен (только для компонентов from_pretrained)

Этот метод вызывается, когда:

  • Компоненты сначала инициализируются в init:
    • компоненты from_pretrained не загружаются во время init, поэтому регистрируются как None;
    • компоненты, отличные от from_pretrained, создаются во время init и регистрируются как сам объект
  • Компоненты обновляются с помощью метода update_components(): например, loader.update_components(unet=unet) или loader.update_components(guider=guider_spec)
  • (from_pretrained) Компоненты загружаются с помощью метода load_components(): например, loader.load_components(names=[“unet”]) или loader.load_components() для загрузки всех компонентов по умолчанию

Примечания:

  • При регистрации None для компонента атрибуту присваивается значение None, но спецификации всё равно синхронизируются со словарём конфигурации, который сохраняется как modular_model_index.json во время вызова save_pretrained
  • component_specs обновляются в соответствии с новым компонентом вне этого метода, например, в методе update_components()

save_pretrained

< >

( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = False**kwargs )

Параметры

  • save_directory (str или os.PathLike) — Каталог для сохранения конвейера. Будет создан, если не существует.
  • safe_serialization (bool, необязательный, по умолчанию True) — Определяет, сохранять ли модель с помощью safetensors или традиционным способом PyTorch с использованием pickle.
  • variant (str, необязательный) — Если указано, веса сохраняются в формате pytorch_model.<variant>.bin.
  • max_shard_size (int or str, по умолчанию None) — Максимальный размер контрольной точки перед её разбиением на части. Каждая часть контрольной точки будет иметь размер, меньший этого значения. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например, "5GB"). Если значение указано в виде целого числа, единицей измерения являются байты.
  • push_to_hub (bool, необязательный, по умолчанию False) — Следует ли отправить пайплайн на Hugging Face model hub после его сохранения.
  • **kwargs — Дополнительные именованные аргументы:
    • overwrite_modular_index (bool, необязательный, по умолчанию True): Определяет, следует ли обновлять modular_model_index.json так, чтобы спецификация загрузки каждого сохраняемого компонента указывала на назначение: repo_id при отправке на Hub, в противном случае save_directory. Компоненты, которые не загружаются, не сохраняются и всегда сохраняют свои записанные спецификации загрузки. Передайте False, чтобы также сохранить записанные спецификации компонентов, которые сохраняются (например, для индекса, который намеренно ссылается на другие репозитории); компоненты без идентификатора загрузки (например, пользовательские модели, добавленные с помощью update_components) всё равно переписываются, поскольку у них нет записанного источника.
    • repo_id (str, необязательный): Идентификатор репозитория, в который будет загружен конвейер. По умолчанию используется последний компонент save_directory.
    • commit_message (str, необязательный): Сообщение коммита для операции push в hub.
    • private (bool, необязательный): Определяет, должна ли репозиторий быть закрытым.
    • create_pr (bool, необязательный, по умолчанию False): Создавать ли pull request вместо прямого push.
    • token (str, необязательный): Токен Hugging Face, используемый для аутентификации.

Сохраните конвейер и все его компоненты в каталог, чтобы его можно было загрузить снова с помощью метода класса from_pretrained().

до

< >

( *args**kwargs ) → DiffusionPipeline

Параметры

  • dtype (torch.dtype, необязательный) — Возвращает конвейер с указанным dtype
  • device (torch.Device, необязательный) — Возвращает конвейер с указанным device
  • silence_dtype_warnings (str, необязательный, по умолчанию False) — Определяет, следует ли подавлять предупреждения, если целевой dtype несовместим с целевым device.

Возвращает

DiffusionPipeline

Пайплайн преобразован в указанный dtype и/или dtype.

Выполняет преобразование dtype и/или device для Pipeline. Значения torch.dtype и torch.device выводятся из аргументов self.to(*args, **kwargs).

> Если у пайплайна уже есть необходимые torch.dtype и torch.device, он возвращается без изменений. В противном случае > возвращаемый пайплайн является копией self с требуемыми torch.dtype и torch.device.

Способы вызова to:

  • to(dtype, silence_dtype_warnings=False) → DiffusionPipeline для возврата пайплайна с указанным dtype
  • to(device, silence_dtype_warnings=False) → DiffusionPipeline для возврата пайплайна с указанным device
  • to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline возвращает пайплайн с указанными device и dtype

unload_components

< >

( names: list[str] | str )

Параметры

  • names — имя компонента или список имён компонентов для выгрузки.

Разгрузите выбранные компоненты, освободив их память.

Атрибут компонента сбрасывается в None, а если к нему подключён ComponentsManager, компонент удаляется из него. Спецификация компонента остаётся без изменений, поэтому компонент можно снова загрузить позже с помощью load_components().

update_components

< >

( **kwargs )

Параметры

  • **kwargs — Объекты компонентов или значения конфигурации для обновления:
    • Объекты компонентов: модели, загруженные с помощью AutoModel.from_pretrained() или ComponentSpec.load(), автоматически помечаются информацией о загрузке. Объекты ConfigMixin без весов (например, планировщики, направляющие) можно передавать напрямую.
    • Значения конфигурации: простые значения для обновления параметров конфигурации (например, requires_safety_checker=False)

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

Этот метод позволяет вам:

  1. Замените существующие компоненты новыми (например, обновите self.unet или self.text_encoder)
  2. Обновление значений конфигурации (например, изменение флага self.requires_safety_checker)

Помимо обновления компонентов и значений конфигурации в качестве атрибутов конвейера, метод также обновляет:

  • соответствующие спецификации в _component_specs и _config_specs
  • словарь config, который будет сохранён как modular_model_index.json при вызове save_pretrained

Примеры:

# Update pre-trained model
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)

# Update configuration values
pipeline.update_components(requires_safety_checker=False)

Примечания:

  • Компоненты, загруженные с помощью AutoModel.from_pretrained() или ComponentSpec.load(), сохраняют спецификации загрузки для сериализации. Для пользовательских или локально загруженных компонентов без ссылок на Hub записи в modular_model_index.json обновляются автоматически во время save_pretrained().
  • Объекты ConfigMixin без весов (например, планировщики, направляющие) можно передавать напрямую.
Update on GitHub