# Ideogram4Transformer2DModel

来自 [Ideogram 4](https://github.com/ideogram-oss/ideogram-4) 的用于类图像数据的 transformer。

## 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)：Transformer 块的数量。

attention_head_dim (`int`，默认为 256)：每个注意力头的维度；总隐藏大小为 `attention_head_dim * num_attention_heads`。

num_attention_heads (`int`，默认为 18)：注意力头的数量。

intermediate_size (`int`，默认为 12288)：每个块内 SwiGLU MLP 使用的前馈隐藏层大小。

adaln_dim (`int`，默认为 512)：被 AdaLN 调制所消耗的条件向量的维度。

llm_features_dim (`int`，默认值为 53248)：输入模型的每个 token 文本特征的维度（通常是文本编码器多个层隐藏状态的拼接）。

rope_theta (`int`，默认为 5_000_000)：多轴旋转位置嵌入所使用的基数。

mrope_section (`tuple[int, int, int]`，默认为 `(24, 20, 20)`)：分配给 MRoPE 的 (t, h, w) 各轴的频率数量。

norm_eps (`float`，默认值为 1e-5)：Transformer 块中 RMSNorm 模块使用的 epsilon。

Ideogram 4 流水线所使用的 flow-matching transformer 骨干网络。

Transformer 在一个包含文本条件 token（由多模态文本编码器生成）和分块图像潜变量的单一打包序列上运行。逐 token 的指示器用于区分这两种角色，而由 `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)`)：打包的、经过分块处理的含噪图像 token 序列。非图像位置会在内部被屏蔽。

timestep （形状为 `(batch_size,)` 或 `(batch_size, sequence_length)` 的 `torch.Tensor`）：`[0, 1]` 区间内的流匹配时间（0 表示纯噪声，1 表示干净数据）。

encoder_hidden_states (`torch.Tensor`，形状为 `(batch_size, sequence_length, llm_features_dim)`)：逐 token 的文本条件特征。非文本位置会在内部被屏蔽。

position_ids (`torch.Tensor`，形状为 `(batch_size, sequence_length, 3)`) : 多轴 RoPE 所消耗的 `(t, h, w)` 坐标。

segment_ids (`torch.Tensor`，形状为 `(batch_size, sequence_length)`)：打包批次中每个 token 的样本 ID。共享相同 `segment_id` 的位置会相互关注。

indicator (`torch.Tensor`，形状为 `(batch_size, sequence_length)`)：每个 token 的角色：`LLM_TOKEN_INDICATOR`（文本）或 `OUTPUT_IMAGE_INDICATOR`（图像）。

attention_kwargs (`dict`, *可选*) : 传递给注意力处理器的 kwargs 字典。`"scale"` 条目用于缩放 LoRA 权重（当 PEFT 后端处于激活状态时）。

return_dict (`bool`，*可选*，默认为 `True`)：是否返回 [Transformer2DModelOutput](/docs/diffusers/v0.43.0/zh/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) 而非普通元组。

**返回值：**

[Transformer2DModelOutput](/docs/diffusers/v0.43.0/zh/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) 或一个 `tuple`，其第一个元素是形状为 `(batch_size, sequence_length, in_channels)` 的张量，数据类型为模型的 compute dtype。只有标记为 `OUTPUT_IMAGE_INDICATOR` 的位置才包含有意义的速度预测。

预测打包序列中图像标记位置的流匹配速度。

