Buckets:

mishig's picture
|
download
raw
7.51 kB
# Автоматические шаблоны docstring и параметров
У каждого [ModularPipelineBlocks](/docs/diffusers/v0.43.0/ru/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks) есть свойство `doc`, которое автоматически генерируется на основе его `description`, `inputs`, `intermediate_outputs`, `expected_components` и `expected_configs`. Система автоматической генерации docstring поддерживает их синхронизацию с фактическим интерфейсом блока. Шаблоны параметров обеспечивают стандартизированные описания для параметров, которые встречаются во многих конвейерах.
## Автогенерация docstring
Блоки модульного конвейера комбинируются — их можно вложенно размещать, выстраивать в последовательности и свободно переставлять. Их строки документации следуют одному и тому же шаблону. Когда [SequentialPipelineBlocks](/docs/diffusers/v0.43.0/ru/api/modular_diffusers/pipeline_blocks#diffusers.SequentialPipelineBlocks) агрегирует входные и выходные данные своих подблоков, документация должна обновляться автоматически, без ручного переписывания.
Маркер `# auto_docstring` генерирует строки документации на основе свойств блока. Добавьте его над определением класса, чтобы пометить класс для автоматической генерации строки документации.
```py
# auto_docstring
class FluxTextEncoderStep(SequentialPipelineBlocks):
...
```
Выполните следующую команду, чтобы сгенерировать и вставить docstrings.
```bash
python utils/modular_auto_docstring.py --fix_and_overwrite
```
Утилита читает свойство `doc` блока и вставляет его в качестве строки документации класса.
```py
# auto_docstring
class FluxTextEncoderStep(SequentialPipelineBlocks):
"""
Text input processing step that standardizes text embeddings for the pipeline.
Inputs:
prompt_embeds (`torch.Tensor`) *required*:
text embeddings used to guide the image generation.
...
Outputs:
prompt_embeds (`torch.Tensor`):
text embeddings used to guide the image generation.
...
"""
```
Вы также можете выполнить проверку без перезаписи или указать конкретный файл или каталог.
```bash
# Check that all marked classes have up-to-date docstrings
python utils/modular_auto_docstring.py
# Check a specific file or directory
python utils/modular_auto_docstring.py src/diffusers/modular_pipelines/flux/
```
Если у какого-либо помеченного класса отсутствует docstring, проверка завершается ошибкой и выводит список классов, требующих обновления.
```
Found the following # auto_docstring markers that need docstrings:
- src/diffusers/modular_pipelines/flux/encoders.py: FluxTextEncoderStep at line 42
Run `python utils/modular_auto_docstring.py --fix_and_overwrite` to fix them.
```
## Шаблоны параметров
`InputParam` и `OutputParam` определяют входные и выходные параметры блока. Создавайте их напрямую или используйте `.template()` для стандартизированных определений общих параметров, таких как `prompt`, `num_inference_steps` или `latents`.
### InputParam
`InputParam` описывает один вход блока.
| Поле | Тип | Описание |
|---|---|---|
| `name` | `str` | Имя параметра |
| `type_hint` | `Any` | Аннотация типа (например, `str`, `torch.Tensor`) |
| `default` | `Any` | Значение по умолчанию (если не задано, у параметра нет значения по умолчанию) |
| `required` | `bool` | Является ли параметр обязательным |
| `description` | `str` | Описание в человекочитаемом формате |
| `kwargs_type` | `str` | Имя группы для связанных параметров (например, `"denoiser_input_fields"`) |
| `metadata` | `dict` | Произвольная дополнительная информация |
#### Создание InputParam напрямую
```py
from diffusers.modular_pipelines import InputParam
InputParam(
name="guidance_scale",
type_hint=float,
default=7.5,
description="Scale for classifier-free guidance.",
)
```
#### Использование шаблона
```py
InputParam.template("prompt")
# Equivalent to:
# InputParam(name="prompt", type_hint=str, required=True,
# description="The prompt or prompts to guide image generation.")
```
Шаблоны автоматически задают `name`, `type_hint`, `default`, `required` и `description`. Переопределите любое поле или добавьте контекст с помощью параметра `note`.
```py
# Override the default value
InputParam.template("num_inference_steps", default=28)
# Add a note to the description
InputParam.template("prompt_embeds", note="batch-expanded")
# description becomes: "text embeddings used to guide the image generation. ... (batch-expanded)"
```
### OutputParam
`OutputParam` описывает один выход из блока.
| Поле | Тип | Описание |
|---|---|---|
| `name` | `str` | Имя параметра |
| `type_hint` | `Any` | Аннотация типа |
| `description` | `str` | Описание в человекочитаемом формате |
| `kwargs_type` | `str` | Имя группы для связанных параметров |
| `metadata` | `dict` | Произвольная дополнительная информация |
#### Создание OutputParam напрямую
```py
from diffusers.modular_pipelines import OutputParam
OutputParam(name="image_latents", type_hint=torch.Tensor, description="Encoded image latents.")
```
#### Использование шаблона
```py
OutputParam.template("latents")
# Add a note to the description
OutputParam.template("prompt_embeds", note="batch-expanded")
```
## Доступные шаблоны
`INPUT_PARAM_TEMPLATES` и `OUTPUT_PARAM_TEMPLATES` определены в [modular_pipeline_utils.py](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/modular_pipeline_utils.py). Они включают общие параметры, такие как `prompt`, `image`, `num_inference_steps`, `latents`, `prompt_embeds` и другие. Полный список доступных имён шаблонов см. в исходном коде.

Xet Storage Details

Size:
7.51 kB
·
Xet hash:
e1e6aa07e9dcef90b3b043c47f3eed15380cd9c4aba64c5a3e0cfd715a790fff

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