# HunyuanDiT2DModel

Un modelo Diffusion Transformer para datos 2D de [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)
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L201)

**Parámetros:**

num_attention_heads (`int`, *opcional*, valor predeterminado 16) : El número de cabezas a utilizar para la atención multi-cabeza.

attention_head_dim (`int`, *opcional*, valor predeterminado 88) : El número de canales en cada cabeza.

in_channels (`int`, *opcional*) : El número de canales en la entrada y la salida (especifícalo si la entrada es **continua**).

patch_size (`int`, *opcional*) : El tamaño del parche a utilizar para la entrada.

activation_fn (`str`, *opcional*, por defecto `"geglu"`) : Función de activación a utilizar en el feed-forward.

sample_size (`int`, *opcional*) : El ancho de las imágenes latentes. Esto se fija durante el entrenamiento, ya que se utiliza para aprender un número de embeddings de posición.

dropout (`float`, *opcional*, valor predeterminado 0.0) : La probabilidad de dropout a utilizar.

cross_attention_dim (`int`, *opcional*) : El número de dimensiones en el embedding de texto del clip.

hidden_size (`int`, *opcional*) : El tamaño de la capa oculta en las capas de incrustación de condicionamiento.

num_layers (`int`, *opcional*, valor predeterminado 1) : El número de capas de bloques Transformer a utilizar.

mlp_ratio (`float`, *opcional*, valor predeterminado 4.0) : La proporción entre el tamaño de la capa oculta y el tamaño de la entrada.

learn_sigma (`bool`, *opcional*, por defecto `True`) : Si se debe predecir la varianza.

cross_attention_dim_t5 (`int`, *opcional*) : El número de dimensiones en la representación de texto de t5.

pooled_projection_dim (`int`, *opcional*) : El tamaño de la proyección agrupada.

text_len (`int`, *opcional*) : La longitud del embedding de texto del clip.

text_len_t5 (`int`, *opcional*) : La longitud de la incrustación de texto de T5.

use_style_cond_and_image_meta_size (`bool`,  *opcional*) : Si se usa o no la condición de estilo y el tamaño meta de la imagen. True para la versión <=1.1, False para la versión >= 1.2

HunYuanDiT: modelo de difusión con un esqueleto Transformer.

Hereda de ModelMixin y ConfigMixin para ser compatible con el sampler StableDiffusionPipeline de diffusers.

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

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

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L476)

**Parámetros:**

chunk_size (`int`, *opcional*) : El tamaño de bloque de las capas feed-forward. Si no se especifica, se ejecutará la capa feed-forward de forma individual sobre cada tensor con dim=`dim`.

dim (`int`, *opcional*, valor predeterminado `0`) : La dimensión sobre la cual se debe dividir en bloques el cálculo de la red feed-forward. Elija entre dim=0 (lote) o dim=1 (longitud de la secuencia).

Establece el procesador de atención para usar [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)
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L357)

**Parámetros:**

hidden_states (`torch.Tensor` de forma `(batch size, dim, height, width)`) : El tensor de entrada.

timestep ( `torch.LongTensor`, *opcional*) : Se utiliza para indicar el paso de desruido.

encoder_hidden_states ( `torch.Tensor` de forma `(batch size, sequence len, embed dims)`, *opcional*) : Incrustaciones condicionales para la capa de atención cruzada. Esta es la salida de `BertModel`.

text_embedding_mask : torch.Tensor Una máscara de atención de forma `(batch, key_tokens)` se aplica a `encoder_hidden_states`. Esta es la salida de `BertModel`.

encoder_hidden_states_t5 ( `torch.Tensor` de forma `(batch size, sequence len, embed dims)`, *opcional*) : Incrustaciones condicionales para la capa de atención cruzada. Esta es la salida del codificador de texto T5.

text_embedding_mask_t5 : torch.Tensor Una máscara de atención de forma `(batch, key_tokens)` se aplica a `encoder_hidden_states`. Esta es la salida del codificador de texto de T5.

image_meta_size (torch.Tensor) : incrustación condicional que indica los tamaños de imagen

style : torch.Tensor: Embedding condicional que indica el estilo

image_rotary_emb (`torch.Tensor`) : Las incrustaciones rotacionales de imagen que se aplican a los tensores de consulta y clave durante el cálculo de la atención.

controlnet_block_samples (`list` de `torch.Tensor`, *opcional*) : Una lista de tensores que, si se especifica, se añaden a los residuos de los bloques de transformador.

return_dict : bool Si se debe devolver un diccionario.

**Devuelve:**

Si `return_dict` es True, se devuelve un `~models.transformer_2d.Transformer2DModelOutput`, en caso contrario, una `tuple` donde el primer elemento es el tensor de la muestra.

El método forward de [HunyuanDiT2DModel](/docs/diffusers/main/es/api/models/hunyuan_transformer2d#diffusers.HunyuanDiT2DModel).

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

```python
fuse_qkv_projections()
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L320)

Habilita las proyecciones QKV fusionadas. Para los módulos de autoatención, todas las matrices de proyección (es decir, consulta, clave y valor) se fusionan. Para los módulos de atención cruzada, las matrices de proyección de clave y valor se fusionan.

> [!WARNING] > Esta API es 🧪 experimental.

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

```python
set_default_attn_processor()
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L351)

Desactiva los procesadores de atención personalizados y establece la implementación de atención predeterminada.

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

```python
unfuse_qkv_projections()
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L342)

Desactiva la proyección QKV fusionada si está habilitada.

> [!WARNING] > Esta API es 🧪 experimental.

