# Ideogram4Transformer2DModel

Трансформер для изображений от [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)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_ideogram4.py#L278)

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

in_channels (`int`, по умолчанию 128) : Количество латентных каналов после патчификации (`ae_channels * patch_size ** 2`).

num_layers (`int`, по умолчанию 34) : Количество блоков трансформера.

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

num_attention_heads (`int`, по умолчанию 18) : Количество головок внимания.

intermediate_size (`int`, по умолчанию 12288) : Размер скрытого слоя feed-forward, используемый SwiGLU MLP внутри каждого блока.

adaln_dim (`int`, по умолчанию 512) : Размерность вектора условий, используемого модуляциями AdaLN.

llm_features_dim (`int`, по умолчанию 53248) : Размерность текстовых признаков на токен, подаваемых в модель (обычно это конкатенация скрытых состояний из нескольких слоёв текстового энкодера).

rope_theta (`int`, по умолчанию 5_000_000) : База, используемая многоосным вращательным позиционным эмбеддингом.

mrope_section (`tuple[int, int, int]`, по умолчанию `(24, 20, 20)`) : Количество частот, выделенных для каждой из осей (t, h, w) MRoPE.

norm_eps (`float`, по умолчанию 1e-5) : Эпсилон, используемый модулями RMSNorm внутри блоков трансформера.

Базовая трансформерная архитектура flow-matching, используемая в пайплайне Ideogram 4.

Трансформер работает с единой упакованной последовательностью, содержащей как токены текстового контекста (сгенерированные мультимодальным текстовым энкодером), так и латенты изображений, разбитые на патчи. Индикаторы для каждого токена различают эти две роли, а блочно-диагональная маска внимания, полученная из `segment_ids`, ограничивает внимание каждого образца только самим собой внутри упакованной батча.

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

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_ideogram4.py#L373)

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

hidden_states (`torch.Tensor` формы `(batch_size, sequence_length, in_channels)`) : Упакованная последовательность токенов зашумленного изображения, разбитого на патчи. Позиции, не относящиеся к изображению, маскируются внутри.

timestep (`torch.Tensor` формы `(batch_size,)` или `(batch_size, sequence_length)`) : Время flow-matching в диапазоне `[0, 1]` (0 — чистый шум, 1 — чистые данные).

encoder_hidden_states (`torch.Tensor` формы `(batch_size, sequence_length, llm_features_dim)`) : Текстовые признаки для условного формирования на уровне токенов. Позиции, не содержащие текста, маскируются внутри.

position_ids (`torch.Tensor` формы `(batch_size, sequence_length, 3)`) : координаты `(t, h, w)`, используемые многоосевым RoPE.

segment_ids (`torch.Tensor` формы `(batch_size, sequence_length)`) : Идентификатор образца для каждого токена в упакованной пачке. Позиции с одинаковым `segment_id` обращаются друг к другу.

indicator (`torch.Tensor` формы `(batch_size, sequence_length)`) : Роль для каждого токена: `LLM_TOKEN_INDICATOR` (текст) или `OUTPUT_IMAGE_INDICATOR` (изображение).

attention_kwargs (`dict`, *необязательный*) : Словарь kwargs, передаваемый в процессор внимания. Запись `"scale"` масштабирует веса LoRA (когда активен бэкенд PEFT).

return_dict (`bool`, *необязательный*, по умолчанию `True`) : следует ли возвращать [Transformer2DModelOutput](/docs/diffusers/v0.43.0/ru/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) вместо обычного кортежа.

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

[Transformer2DModelOutput](/docs/diffusers/v0.43.0/ru/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) или `tuple`, первым элементом которого является тензор формы `(batch_size, sequence_length, in_channels)` в вычислительном типе данных модели. Осмысленные предсказания скорости содержатся только в позициях, отмеченных `OUTPUT_IMAGE_INDICATOR`.

Предскажите скорость flow-matching для позиций токенов изображения в упакованной последовательности.

