# AuraFlowTransformer2DModel

Um modelo Transformer para dados semelhantes a imagens do [AuraFlow](https://blog.fal.ai/auraflow/).

## AuraFlowTransformer2DModel[[diffusers.AuraFlowTransformer2DModel]]

#### diffusers.AuraFlowTransformer2DModel[[diffusers.AuraFlowTransformer2DModel]]

```python
diffusers.AuraFlowTransformer2DModel(sample_size: int = 64, patch_size: int = 2, in_channels: int = 4, num_mmdit_layers: int = 4, num_single_dit_layers: int = 32, attention_head_dim: int = 256, num_attention_heads: int = 12, joint_attention_dim: int = 2048, caption_projection_dim: int = 3072, out_channels: int = 4, pos_embed_max_size: int = 1024)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/auraflow_transformer_2d.py#L278)

**Parâmetros:**

sample_size (`int`) : A largura das imagens latentes. Isso é fixo durante o treinamento, pois é usado para aprender um número de embeddings de posição.

patch_size (`int`) : Tamanho do patch para dividir os dados de entrada em pequenos patches.

in_channels (`int`, *opcional*, padrão 4) : O número de canais na entrada.

num_mmdit_layers (`int`, *opcional*, padrão 4) : O número de blocos de Transformer MMDiT a serem usados.

num_single_dit_layers (`int`, *opcional*, padrão 32) : O número de blocos de Transformer a serem usados. Esses blocos utilizam representações concatenadas de imagem e texto.

attention_head_dim (`int`, *opcional*, padrão 256) : O número de canais em cada head.

num_attention_heads (`int`, *opcional*, padrão 12) : O número de cabeças a serem usadas para a atenção multi-cabeça.

joint_attention_dim (`int`, *opcional*) : O número de dimensões de `encoder_hidden_states` a serem usadas.

caption_projection_dim (`int`) : Número de dimensões a usar ao projetar o `encoder_hidden_states`.

out_channels (`int`, padrão 4) : Número de canais de saída.

pos_embed_max_size (`int`, padrão 1024) : Posições máximas a incorporar dos latentes da imagem.

Um modelo Transformer 2D, conforme introduzido no AuraFlow (https://blog.fal.ai/auraflow/).

#### forward[[diffusers.AuraFlowTransformer2DModel.forward]]

```python
forward(hidden_states: FloatTensor, encoder_hidden_states: FloatTensor = None, timestep: LongTensor = None, attention_kwargs: dict[str, typing.Any] | None = None, return_dict: bool = True)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/auraflow_transformer_2d.py#L400)

**Parâmetros:**

hidden_states (`torch.FloatTensor` de forma `(batch size, channel, height, width)`) : `hidden_states` de entrada.

encoder_hidden_states (`torch.FloatTensor` de forma `(batch size, sequence_len, embed_dims)`) : Embeddings condicionais (embeddings calculados a partir das condições de entrada, como prompts) a serem usados.

timestep (`torch.LongTensor`) : Usado para indicar o passo de desruidamento.

attention_kwargs (`dict`, *opcional*) : Um dicionário de kwargs que, se especificado, é passado para o `AttentionProcessor` conforme definido em `self.processor` em [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

return_dict (`bool`, *opcional*, padrão `True`) : Indica se deve retornar um `~models.transformer_2d.Transformer2DModelOutput` em vez de uma tupla simples.

**Retorna:**

Se `return_dict` for True, um `~models.transformer_2d.Transformer2DModelOutput` é retornado; caso contrário, uma `tuple` onde o primeiro elemento é o tensor da amostra.

O método forward do [AuraFlowTransformer2DModel](/docs/diffusers/v0.43.0/pt/api/models/aura_flow_transformer2d#diffusers.AuraFlowTransformer2DModel).

#### fuse_qkv_projections[[diffusers.AuraFlowTransformer2DModel.fuse_qkv_projections]]

```python
fuse_qkv_projections()
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/auraflow_transformer_2d.py#L369)

Ativa as projeções QKV fundidas. Para os módulos de autoatenção, todas as matrizes de projeção (ou seja, query, key, value) são fundidas. Para os módulos de atenção cruzada, as matrizes de projeção de key e value são fundidas.

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

#### unfuse_qkv_projections[[diffusers.AuraFlowTransformer2DModel.unfuse_qkv_projections]]

```python
unfuse_qkv_projections()
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/auraflow_transformer_2d.py#L391)

Desativa a projeção QKV fundida, se estiver habilitada.

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

