Diffusers documentation

Pipeline

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