# HunyuanDiT2DModel

来自 [Hunyuan-DiT](https://github.com/Tencent/HunyuanDiT) 的用于 2D 数据的 Diffusion Transformer 模型。

## HunyuanDiT2DModel[[diffusers.HunyuanDiT2DModel]]

#### diffusers.HunyuanDiT2DModel[[diffusers.HunyuanDiT2DModel]]

```python
diffusers.HunyuanDiT2DModel(num_attention_heads: int = 16, attention_head_dim: int = 88, in_channels: int | None = None, patch_size: int | None = None, activation_fn: str = 'gelu-approximate', sample_size = 32, hidden_size = 1152, num_layers: int = 28, mlp_ratio: float = 4.0, learn_sigma: bool = True, cross_attention_dim: int = 1024, norm_type: str = 'layer_norm', cross_attention_dim_t5: int = 2048, pooled_projection_dim: int = 1024, text_len: int = 77, text_len_t5: int = 256, use_style_cond_and_image_meta_size: bool = True)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L201)

**参数：**

num_attention_heads (`int`，*可选*，默认为 16)：用于多头注意力的头数。

attention_head_dim (`int`，*可选*，默认值为 88)：每个头中的通道数。

in_channels (`int`，*可选*)：输入和输出的通道数（如果输入是**连续**的，请指定）。

patch_size (`int`, *可选*) : 用于输入的 patch 大小。

activation_fn (`str`，*可选*，默认为 `"geglu"`)：前馈层中使用的激活函数。

sample_size (`int`, *可选*)：潜在图像的宽度。由于该值用于确定位置嵌入的数量，因此在训练过程中是固定的。

dropout (`float`，*可选*，默认值为 0.0)：要使用的 dropout 概率。

cross_attention_dim (`int`, *可选*) : 剪辑文本嵌入的维度数。

hidden_size (`int`, *可选*) : 条件嵌入层中隐藏层的大小。

num_layers (`int`，*可选*，默认为 1)：要使用的 Transformer 块层数。

mlp_ratio (`float`, *可选*，默认为 4.0)：隐藏层大小与输入大小的比率。

learn_sigma (`bool`，*可选*，默认为 `True`)：是否预测方差。

cross_attention_dim_t5 (`int`, *可选*) : t5 文本嵌入的维度数量。

pooled_projection_dim (`int`，*可选*)：池化投影的大小。

text_len (`int`, *可选*)：剪辑文本嵌入的长度。

text_len_t5 (`int`, *可选*) : T5 文本嵌入的长度。

use_style_cond_and_image_meta_size (`bool`,  *可选*) : 是否使用风格条件和图像元大小。版本 <=1.1 时为 True，版本 >= 1.2 时为 False

HunYuanDiT：采用 Transformer 骨干的扩散模型。

继承 ModelMixin 和 ConfigMixin，以兼容 diffusers 中的采样器 StableDiffusionPipeline。

#### enable_forward_chunking[[diffusers.HunyuanDiT2DModel.enable_forward_chunking]]

```python
enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L476)

**参数：**

chunk_size (`int`, *可选*) : 前馈层的块大小。如果未指定，则对每个 dim=`dim` 的张量单独运行前馈层。

dim (`int`，*可选*，默认为 `0`)：前馈计算应进行分块的维度。在 dim=0（批次）或 dim=1（序列长度）之间选择。

将注意力处理器设置为使用 [前馈分块](https://huggingface.co/blog/reformer#2-chunked-feed-forward-layers)。

#### forward[[diffusers.HunyuanDiT2DModel.forward]]

```python
forward(hidden_states, timestep, encoder_hidden_states = None, text_embedding_mask = None, encoder_hidden_states_t5 = None, text_embedding_mask_t5 = None, image_meta_size = None, style = None, image_rotary_emb = None, controlnet_block_samples = None, return_dict = True)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L357)

**参数：**

hidden_states (`torch.Tensor`，形状为 `(batch size, dim, height, width)`)：输入张量。

timestep ( `torch.LongTensor`, *可选*) : 用于指示去噪步骤。

encoder_hidden_states ( `torch.Tensor`，形状为 `(batch size, sequence len, embed dims)`，*可选*) : 用于交叉注意力层的条件嵌入。这是 `BertModel` 的输出。

text_embedding_mask : torch.Tensor 形状为 `(batch, key_tokens)` 的注意力掩码会应用于 `encoder_hidden_states`。这是 `BertModel` 的输出。

encoder_hidden_states_t5 ( `torch.Tensor`，形状为 `(batch size, sequence len, embed dims)`，*可选*)：用于交叉注意力层的条件嵌入。这是 T5 文本编码器的输出。

text_embedding_mask_t5 : torch.Tensor 形状为 `(batch, key_tokens)` 的注意力掩码会应用于 `encoder_hidden_states`。这是 T5 文本编码器的输出。

image_meta_size (torch.Tensor) ：条件嵌入，指示图像尺寸

style : torch.Tensor: 指示样式的条件嵌入

image_rotary_emb (`torch.Tensor`) : 在注意力计算过程中应用于查询和键张量的图像旋转嵌入。

controlnet_block_samples (`list` of `torch.Tensor`, *可选*) : 一个张量列表，如果指定，将被添加到 Transformer 块的残差中。

return_dict : bool 是否返回字典。

**返回值：**

如果 `return_dict` 为 True，则返回 `~models.transformer_2d.Transformer2DModelOutput`，否则返回一个 `tuple`，其中第一个元素是样本张量。

[HunyuanDiT2DModel](/docs/diffusers/v0.43.0/zh/api/models/hunyuan_transformer2d#diffusers.HunyuanDiT2DModel) 的前向方法。

#### fuse_qkv_projections[[diffusers.HunyuanDiT2DModel.fuse_qkv_projections]]

```python
fuse_qkv_projections()
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L320)

启用融合的 QKV 投影。对于自注意力模块，所有投影矩阵（即 query、key、value）均会被融合。对于交叉注意力模块，key 和 value 投影矩阵会被融合。

> [!WARNING] > 此 API 处于 🧪 实验阶段。

#### set_default_attn_processor[[diffusers.HunyuanDiT2DModel.set_default_attn_processor]]

```python
set_default_attn_processor()
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L351)

禁用自定义注意力处理器并设置默认的注意力实现。

#### unfuse_qkv_projections[[diffusers.HunyuanDiT2DModel.unfuse_qkv_projections]]

```python
unfuse_qkv_projections()
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/hunyuan_transformer_2d.py#L342)

如果已启用，则禁用融合的 QKV 投影。

> [!WARNING] > 此 API 处于 🧪 实验阶段。

