# Ideogram4Transformer2DModel

Um transformer para dados semelhantes a imagens do [Ideogram 4](https://github.com/ideogram-oss/ideogram-4).

## Ideogram4Transformer2DModel[[diffusers.Ideogram4Transformer2DModel]]

#### diffusers.Ideogram4Transformer2DModel[[diffusers.Ideogram4Transformer2DModel]]

```python
diffusers.Ideogram4Transformer2DModel(in_channels: int = 128, num_layers: int = 34, attention_head_dim: int = 256, num_attention_heads: int = 18, intermediate_size: int = 12288, adaln_dim: int = 512, llm_features_dim: int = 53248, rope_theta: int = 5000000, mrope_section: tuple[int, int, int] = (24, 20, 20), norm_eps: float = 1e-05)
```

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

**Parâmetros:**

in_channels (`int`, padrão 128) : Número de canais latentes após a patchification (`ae_channels * patch_size ** 2`).

num_layers (`int`, padrão 34) : Número de blocos de transformer.

attention_head_dim (`int`, padrão 256) : Dimensão de cada cabeça de atenção; o tamanho oculto total é `attention_head_dim * num_attention_heads`.

num_attention_heads (`int`, padrão 18) : Número de cabeças de atenção.

intermediate_size (`int`, padrão 12288) : Tamanho oculto do feed-forward usado pelo MLP SwiGLU dentro de cada bloco.

adaln_dim (`int`, padrão 512) : Dimensionalidade do vetor de condicionamento consumido pelas modulações AdaLN.

llm_features_dim (`int`, padrão 53248) : Dimensionalidade dos recursos de texto por token fornecidos ao modelo (tipicamente uma concatenação de estados ocultos de várias camadas do codificador de texto).

rope_theta (`int`, padrão 5_000_000) : Base utilizada pelo incorporamento de posição rotacional multi-eixo.

mrope_section (`tuple[int, int, int]`, padrão `(24, 20, 20)`) : Número de frequências alocadas a cada um dos eixos (t, h, w) do MRoPE.

norm_eps (`float`, padrão 1e-5) : Epsilon usado pelos módulos RMSNorm dentro dos blocos do transformer.

O backbone de transformer de flow-matching usado pelo pipeline Ideogram 4.

O transformer opera em uma única sequência empacotada contendo tanto tokens de condicionamento de texto (produzidos por um codificador de texto multimodal) quanto latentes de imagem em patches. Indicadores por token distinguem os dois papéis, e uma máscara de atenção bloco-diagonal derivada de `segment_ids` restringe cada amostra a prestar atenção apenas a si mesma dentro de um lote empacotado.

#### forward[[diffusers.Ideogram4Transformer2DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: Tensor, encoder_hidden_states: Tensor, position_ids: Tensor, segment_ids: Tensor, indicator: Tensor, attention_kwargs: dict | None = None, return_dict: bool = True)
```

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

**Parâmetros:**

hidden_states (`torch.Tensor` de forma `(batch_size, sequence_length, in_channels)`) : Sequência empacotada de tokens de imagem barulhenta em patches. As posições não de imagem são mascaradas internamente.

timestep (`torch.Tensor` de forma `(batch_size,)` ou `(batch_size, sequence_length)`) : Tempo de flow-matching em `[0, 1]` (0 é ruído puro, 1 é dados limpos).

encoder_hidden_states (`torch.Tensor` de forma `(batch_size, sequence_length, llm_features_dim)`) : Recursos de condicionamento de texto por token. As posições não textuais são mascaradas internamente.

position_ids (`torch.Tensor` de forma `(batch_size, sequence_length, 3)`) : coordenadas `(t, h, w)` consumidas pelo RoPE multi-eixo.

segment_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`) : id da amostra por token dentro de um lote empacotado. Posições que compartilham um `segment_id` prestam atenção umas às outras.

indicator (`torch.Tensor` de forma `(batch_size, sequence_length)`) : Papel por token: `LLM_TOKEN_INDICATOR` (texto) ou `OUTPUT_IMAGE_INDICATOR` (imagem).

attention_kwargs (`dict`, *opcional*) : Um dicionário de kwargs passado ao processador de atenção. Uma entrada `"scale"` escala os pesos do LoRA (quando o backend PEFT está ativo).

return_dict (`bool`, *opcional*, padrão `True`) : Se deve retornar um [Transformer2DModelOutput](/docs/diffusers/v0.43.0/pt/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) em vez de uma tupla simples.

**Retorna:**

[Transformer2DModelOutput](/docs/diffusers/v0.43.0/pt/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) ou uma `tuple` cujo primeiro elemento é um tensor de forma `(batch_size, sequence_length, in_channels)` no dtype de cálculo do modelo. Apenas as posições marcadas com `OUTPUT_IMAGE_INDICATOR` contêm previsões de velocidade significativas.

Preveja a velocidade de flow-matching para as posições de tokens de imagem da sequência empacotada.

