# HunyuanDiT2DModel

Модель Diffusion Transformer для 2D-данных из [Hunyuan-DiT](https://github.com/Tencent/HunyuanDiT).

## HunyuanDiT2DModel[[diffusers.HunyuanDiT2DModel]]

#### diffusers.HunyuanDiT2DModel[[diffusers.HunyuanDiT2DModel]]

```python
diffusers.HunyuanDiT2DModel(num_attention_heads: int = 16, attention_head_dim: int = 88, in_channels: int | None = None, patch_size: int | None = None, activation_fn: str = 'gelu-approximate', sample_size = 32, hidden_size = 1152, num_layers: int = 28, mlp_ratio: float = 4.0, learn_sigma: bool = True, cross_attention_dim: int = 1024, norm_type: str = 'layer_norm', cross_attention_dim_t5: int = 2048, pooled_projection_dim: int = 1024, text_len: int = 77, text_len_t5: int = 256, use_style_cond_and_image_meta_size: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L201)

**Параметры:**

num_attention_heads (`int`, *optional*, по умолчанию 16) : Количество головок для использования в механизме внимания с несколькими головками.

attention_head_dim (`int`, *необязательный*, по умолчанию 88) : Количество каналов в каждой голове.

in_channels (`int`, *необязательный*) : Количество каналов на входе и выходе (указывается, если вход является **непрерывным**).

patch_size (`int`, *optional*) : Размер патча, используемого для входных данных.

activation_fn (`str`, *необязательный*, по умолчанию `"geglu"`) : Функция активации, используемая в полносвязном слое.

sample_size (`int`, *optional*) : Ширина латентных изображений. Это значение фиксировано во время обучения, поскольку используется для обучения набора позиционных эмбеддингов.

dropout (`float`, *необязательный*, по умолчанию 0.0) : Вероятность dropout, которую следует использовать.

cross_attention_dim (`int`, *optional*) : Количество измерений в текстовом эмбеддинге клипа.

hidden_size (`int`, *optional*) : Размер скрытого слоя в слоях условного эмбеддинга.

num_layers (`int`, *необязательный*, по умолчанию 1) : Количество блоков Transformer, используемых в модели.

mlp_ratio (`float`, *необязательный*, по умолчанию 4.0) : Соотношение размера скрытого слоя к размеру входа.

learn_sigma (`bool`, *необязательный*, по умолчанию `True`) : Предсказывать ли дисперсию.

cross_attention_dim_t5 (`int`, *необязательный*) : Количество измерений в текстовом эмбеддинге t5.

pooled_projection_dim (`int`, *необязательный*) : Размер пул-проекции.

text_len (`int`, *необязательный*) : Длина эмбеддинга текста клипа.

text_len_t5 (`int`, *optional*) : Длина текстового эмбеддинга T5.

use_style_cond_and_image_meta_size (`bool`,  *необязательный*) : Использовать ли условие стиля и мета-размер изображения. True для версии <=1.1, False для версии >= 1.2

HunYuanDiT: диффузионная модель с трансформерным каркасом.

Наследуйте ModelMixin и ConfigMixin, чтобы обеспечить совместимость с сэмплером StableDiffusionPipeline из diffusers.

#### enable_forward_chunking[[diffusers.HunyuanDiT2DModel.enable_forward_chunking]]

```python
enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L476)

**Параметры:**

chunk_size (`int`, *optional*) : Размер блока для полносвязных слоёв. Если не указан, полносвязный слой будет выполняться отдельно для каждого тензора с dim=`dim`.

dim (`int`, *optional*, по умолчанию `0`) : Размерность, по которой вычисления в feed-forward слое должны быть разбиты на блоки. Выберите dim=0 (batch) или dim=1 (длина последовательности).

Устанавливает процессор внимания для использования [feed forward chunking](https://huggingface.co/blog/reformer#2-chunked-feed-forward-layers).

#### forward[[diffusers.HunyuanDiT2DModel.forward]]

```python
forward(hidden_states, timestep, encoder_hidden_states = None, text_embedding_mask = None, encoder_hidden_states_t5 = None, text_embedding_mask_t5 = None, image_meta_size = None, style = None, image_rotary_emb = None, controlnet_block_samples = None, return_dict = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L357)

**Параметры:**

hidden_states (`torch.Tensor` формы `(batch size, dim, height, width)`) : Входной тензор.

timestep ( `torch.LongTensor`, *необязательный*) : Используется для указания шага денойзинга.

encoder_hidden_states ( `torch.Tensor` формы `(batch size, sequence len, embed dims)`, *необязательно*) : Условные эмбеддинги для слоя кросс-внимания. Это выход `BertModel`.

text_embedding_mask : torch.Tensor Маска внимания формы `(batch, key_tokens)` применяется к `encoder_hidden_states`. Это выход `BertModel`.

encoder_hidden_states_t5 ( `torch.Tensor` формы `(batch size, sequence len, embed dims)`, *optional*) : Условные эмбеддинги для слоя cross attention. Это выход T5 Text Encoder.

text_embedding_mask_t5 : torch.Tensor Маска внимания формы `(batch, key_tokens)` применяется к `encoder_hidden_states`. Это выход текстового энкодера T5.

image_meta_size (torch.Tensor) : Условное вложение, указывающее размеры изображений

style : torch.Tensor: Условное вложение, указывающее стиль

image_rotary_emb (`torch.Tensor`) : Вращательные эмбеддинги изображений, применяемые к тензорам запросов и ключей при вычислении внимания.

controlnet_block_samples (`list` из `torch.Tensor`, *необязательный*) : Список тензоров, которые при указании добавляются к остаточным связям блоков трансформера.

return_dict : bool Флаг, указывающий, следует ли возвращать словарь.

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

Если `return_dict` равно True, возвращается `~models.transformer_2d.Transformer2DModelOutput`, иначе — `tuple`, первым элементом которого является тензор выборки.

Метод forward модели [HunyuanDiT2DModel](/docs/diffusers/main/ru/api/models/hunyuan_transformer2d#diffusers.HunyuanDiT2DModel).

#### fuse_qkv_projections[[diffusers.HunyuanDiT2DModel.fuse_qkv_projections]]

```python
fuse_qkv_projections()
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L320)

Включает объединённые проекции QKV. Для модулей само-внимания все матрицы проекций (т. е. запрос, ключ, значение) объединяются. Для модулей кросс-внимания объединяются матрицы проекций ключа и значения.

> [!WARNING] > Этот API 🧪 экспериментальный.

#### set_default_attn_processor[[diffusers.HunyuanDiT2DModel.set_default_attn_processor]]

```python
set_default_attn_processor()
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L351)

Отключает пользовательские обработчики внимания и устанавливает реализацию внимания по умолчанию.

#### unfuse_qkv_projections[[diffusers.HunyuanDiT2DModel.unfuse_qkv_projections]]

```python
unfuse_qkv_projections()
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L342)

Отключает объединенную проекцию QKV, если она включена.

> [!WARNING] > Этот API 🧪 экспериментальный.

