# Ideogram4Transformer2DModel

Un transformer pour des données de type image provenant de [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)
```

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

**Paramètres :**

in_channels (`int`, par défaut 128) : Nombre de canaux latents après patchification (`ae_channels * patch_size ** 2`).

num_layers (`int`, par défaut 34) : Nombre de blocs transformer.

attention_head_dim (`int`, par défaut 256) : Dimension de chaque tête d'attention ; la taille cachée totale est `attention_head_dim * num_attention_heads`.

num_attention_heads (`int`, par défaut 18) : Nombre de têtes d'attention.

intermediate_size (`int`, par défaut 12288) : Taille cachée du réseau de propagation avant utilisée par le MLP SwiGLU à l'intérieur de chaque bloc.

adaln_dim (`int`, par défaut 512) : Dimension du vecteur de conditionnement consommé par les modulations AdaLN.

llm_features_dim (`int`, par défaut 53248) : Dimensionnalité des fonctionnalités textuelles par jeton fournies au modèle (généralement une concaténation des états cachés de plusieurs couches de l'encodeur de texte).

rope_theta (`int`, par défaut 5_000_000) : Base utilisée par l'incorporation de position rotative multi-axes.

mrope_section (`tuple[int, int, int]`, par défaut `(24, 20, 20)`) : Nombre de fréquences allouées à chacun des axes (t, h, w) de MRoPE.

norm_eps (`float`, par défaut 1e-5) : Epsilon utilisé par les modules RMSNorm à l'intérieur des blocs transformer.

Le backbone transformer de flow-matching utilisé par le pipeline Ideogram 4.

Le transformateur opère sur une séquence unique empaquetée contenant à la fois des jetons de conditionnement textuel (produits par un encodeur textuel multimodal) et les latents d’image patchifiés. Des indicateurs par jeton distinguent les deux rôles, et un masque d’attention en blocs diagonaux dérivé de `segment_ids` restreint chaque échantillon à n’attendre que lui-même au sein d’un lot empaqueté.

#### 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)
```

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

**Paramètres :**

hidden_states (`torch.Tensor` de forme `(batch_size, sequence_length, in_channels)`) : Séquence compacte de jetons d'images bruitées patchifiées. Les positions non-image sont masquées en interne.

timestep (`torch.Tensor` de forme `(batch_size,)` ou `(batch_size, sequence_length)`) : Temps de flow-matching dans `[0, 1]` (0 est du bruit pur, 1 est des données propres).

encoder_hidden_states (`torch.Tensor` de forme `(batch_size, sequence_length, llm_features_dim)`) : Caractéristiques de conditionnement textuel par jeton. Les positions non textuelles sont masquées en interne.

position_ids (`torch.Tensor` de forme `(batch_size, sequence_length, 3)`) : coordonnées `(t, h, w)` consommées par le RoPE multi-axes.

segment_ids (`torch.Tensor` de forme `(batch_size, sequence_length)`) : identifiant d'échantillon par jeton au sein d'un lot compacté. Les positions partageant un même `segment_id` se font mutuellement attention.

indicator (`torch.Tensor` de forme `(batch_size, sequence_length)`) : Rôle par jeton : `LLM_TOKEN_INDICATOR` (texte) ou `OUTPUT_IMAGE_INDICATOR` (image).

attention_kwargs (`dict`, *facultatif*) : Un dictionnaire de kwargs transmis au processeur d'attention. Une entrée `"scale"` met à l'échelle les poids LoRA (lorsque le backend PEFT est actif).

return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un [Transformer2DModelOutput](/docs/diffusers/v0.43.0/fr/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) plutôt qu'un simple tuple.

**Retourne :**

[Transformer2DModelOutput](/docs/diffusers/v0.43.0/fr/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) ou un `tuple` dont le premier élément est un tenseur de forme `(batch_size, sequence_length, in_channels)` dans le type de calcul du modèle. Seules les positions marquées par `OUTPUT_IMAGE_INDICATOR` portent des prédictions de vitesse significatives.

Prédire la vitesse de flow-matching pour les positions des jetons d’image de la séquence compactée.

