Buckets:

mishig's picture
|
download
raw
19.2 kB
# Pipeline
## ModularPipeline[[diffusers.ModularPipeline]]
#### diffusers.ModularPipeline[[diffusers.ModularPipeline]]
```python
diffusers.ModularPipeline(blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = None, pretrained_model_name_or_path: str | os.PathLike | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None, workflow: str | None = None, modular_config_dict: dict[str, typing.Any] | None = None, config_dict: dict[str, typing.Any] | None = None, **kwargs)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L1700)
**Параметры:**
blocks : ModularPipelineBlocks, блоки, используемые в конвейере
Базовый класс для всех модульных конвейеров.
#### from_pretrained[[diffusers.ModularPipeline.from_pretrained]]
```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None, trust_remote_code: bool | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None, workflow: str | None = None, **kwargs)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L1925)
**Параметры:**
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`, необязательно) : экземпляр ComponentsManager для управления несколькими компонентами в разных конвейерах и применения стратегий выгрузки.
collection (`str`, optional) --` Имя коллекции для организации компонентов в ComponentsManager.
workflow (`str`, optional) : Имя workflow, объявленного блоками pipeline. Если указано, блоки обрезаются до блоков выполнения этого workflow, поэтому pipeline ожидает — и `load_components()` загружает — только те компоненты, которые использует данный workflow.
Загрузите ModularPipeline из репозитория на Hugging Face Hub.
#### get_component_spec[[diffusers.ModularPipeline.get_component_spec]]
```python
get_component_spec(name: str)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L2401)
**Возвращает:**
- копию объекта ComponentSpec для указанного имени компонента
#### load_components[[diffusers.ModularPipeline.load_components]]
```python
load_components(names: list[str] | str | None = None, workflow: str | None = None, **kwargs)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L2489)
**Параметры:**
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, объявленного блоками pipeline. Если указано, загружаются только те компоненты, которые используются блоками выполнения этого workflow. Не может использоваться вместе с `names`.
- ****kwargs** : дополнительные аргументы, передаваемые в `from_pretrained()`. Могут быть: - единым значением, применяемым ко всем загружаемым компонентам, например dtype=torch.bfloat16 - словарём, например dtype={"unet": torch.bfloat16, "default": torch.float32} - если переданы другие поля загрузки в kwargs, потенциально переопределяют ComponentSpec, например `pretrained_model_name_or_path`, `variant`, `revision` и т. д. - если переданы другие поля загрузки в kwargs, потенциально переопределяют ComponentSpec, например `pretrained_model_name_or_path`, `variant`, `revision` и т. д.
Загрузите выбранные компоненты из спецификаций.
#### register_components[[diffusers.ModularPipeline.register_components]]
```python
register_components(**kwargs)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L2186)
**Параметры:**
- ****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[[diffusers.ModularPipeline.save_pretrained]]
```python
save_pretrained(save_directory: str | os.PathLike, safe_serialization: bool = True, variant: str | None = None, max_shard_size: int | str | None = None, push_to_hub: bool = False, **kwargs)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L2026)
**Параметры:**
save_directory (`str` или `os.PathLike`) : Каталог для сохранения конвейера. Будет создан, если не существует.
safe_serialization (`bool`, *необязательный*, по умолчанию `True`) : Сохранять ли модель с помощью `safetensors` или традиционным способом PyTorch с использованием `pickle`.
variant (`str`, *необязательный*) : Если указано, веса сохраняются в формате `pytorch_model.<variant>.bin`.
max_shard_size (`int` или `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`, *необязательный*): сообщение коммита для операции отправки на Hub. - `private` (`bool`, *необязательный*): следует ли сделать репозиторий приватным. - `create_pr` (`bool`, *необязательный*, по умолчанию `False`): следует ли создать pull request вместо прямой отправки. - `token` (`str`, *необязательный*): токен Hugging Face для аутентификации.
Сохраните конвейер и все его компоненты в каталог, чтобы его можно было загрузить снова с помощью метода класса [from_pretrained()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained).
#### к[[diffusers.ModularPipeline.to]]
```python
to(*args, **kwargs)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L2651)
**Параметры:**
dtype (`torch.dtype`, *необязательный*) : Возвращает конвейер с указанным [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype)
device (`torch.Device`, *необязательный*) : Возвращает конвейер с указанным [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device)
silence_dtype_warnings (`str`, *необязательный*, по умолчанию `False`) : Указывает, следует ли пропускать предупреждения, если целевой `dtype` несовместим с целевым `device`.
**Возвращает:** [DiffusionPipeline](/docs/diffusers/main/ru/api/pipelines/overview#diffusers.DiffusionPipeline)
Пайплайн преобразован в указанный `dtype` и/или `dtype`.
Выполняет преобразование dtype и/или device для Pipeline. Значения torch.dtype и torch.device выводятся из аргументов `self.to(*args, **kwargs).`
> [!TIP] > Если у конвейера уже есть правильные torch.dtype и torch.device, он возвращается без изменений.
В противном случае > возвращаемый конвейер является копией self с требуемыми torch.dtype и torch.device.
Способы вызова `to`:
- `to(dtype, silence_dtype_warnings=False) → DiffusionPipeline` для возврата пайплайна с указанным [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype)
- `to(device, silence_dtype_warnings=False) → DiffusionPipeline` для возврата пайплайна с указанным [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device)
- `to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline` возвращает пайплайн с указанными [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device) и [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype)
#### unload_components[[diffusers.ModularPipeline.unload_components]]
```python
unload_components(names: list[str] | str)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L2595)
**Параметры:**
names : имя компонента или список имён компонентов для разгрузки.
Разгрузите выбранные компоненты, освободив их память.
Атрибут component возвращается к значению `None`, а если подключён ComponentsManager, компонент удаляется из него. Спецификация компонента не изменяется, поэтому компонент можно снова загрузить позже с помощью `load_components()`.
#### update_components[[diffusers.ModularPipeline.update_components]]
```python
update_components(**kwargs)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline.py#L2408)
**Параметры:**
- ****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`
Примеры:
```python
# 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 без весов (например, планировщики, направляющие) можно передавать напрямую.

Xet Storage Details

Size:
19.2 kB
·
Xet hash:
fedc682448a55d7f47343666e1fffad4ab9f6925c3181a8a984f1584aa7c7aaa

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