Diffusers 文档

SD3 Transformer 模型

Hugging Face's logo
加入 Hugging Face 社区

并访问增强文档体验

开始使用

SD3 Transformer 模型

稳定扩散 3中引入的 Transformer 模型。它的新颖之处在于 MMDiT Transformer 模块。

SD3Transformer2DModel

diffusers.SD3Transformer2DModel

< >

( sample_size: int = 128 patch_size: int = 2 in_channels: int = 16 num_layers: int = 18 attention_head_dim: int = 64 num_attention_heads: int = 18 joint_attention_dim: int = 4096 caption_projection_dim: int = 1152 pooled_projection_dim: int = 2048 out_channels: int = 16 pos_embed_max_size: int = 96 )

参数

  • sample_size (int) — 潜在图像的宽度。这是在训练期间确定的,因为它用于学习许多位置嵌入。
  • patch_size (int) — 将输入数据转换为小块的块大小。
  • num_layers (int, 可选,默认为 18) — 要使用的 Transformer 块的层数。
  • attention_head_dim (int, 可选,默认为 64) — 每个头的通道数。
  • cross_attention_dim (int, 可选) — 要使用的 encoder_hidden_states 维度数目。
  • caption_projection_dim (int) — 投影 encoder_hidden_states 时要使用的维度数目。
  • out_channels (int,默认为 16) — 输出通道数。

Stable Diffusion 3 中引入的 Transformer 模型。

参考:https://arxiv.org/abs/2403.03206

enable_forward_chunking

< >

( chunk_size: 可选值 = 无 dim: int = 0 )

参数

  • chunk_size (int, 可选) — 前馈层的块大小。如果未指定,将对维度=dim 的每个张量分别运行前馈层。
  • dim (int, 可选,默认为 0) — 应分块的前馈计算的维度。在 dim=0(批次)或 dim=1(序列长度)之间进行选择。

设置注意力处理器,以使用 前馈块

forward

< >

( hidden_states: FloatTensor encoder_hidden_states: FloatTensor = None pooled_projections: FloatTensor = None timestep: LongTensor = None block_controlnet_hidden_states: List = None joint_attention_kwargs: Optional = None return_dict: bool = True )

参数

  • hidden_states(batch_size, 通道数, 高さ, 幅) 形状の torch.FloatTensor)— 入力 hidden_states
  • encoder_hidden_states(batch_size, シーケンス長, 埋め込みの次元)torch.FloatTensor)—使用する条件付き埋め込み(プロンプトなどの入力条件から計算される埋め込み)。
  • timestep (torch.LongTensor) — 用于指示去噪步骤。block_controlnet_hidden_states — (torch.Tensor 列表):如果指定了张量列表,则将其添加到 Transformer 块的残差中。
  • joint_attention_kwargs (dict可选) — 如果指定,则将 kwargs 词典作为 AttentionProcessor 传递,如 self.processor 中定义的 diffusers.models.attention_processor 中所示。
  • return_dict (bool, optional, defaults to True) — 是否返回 ~models.transformer_2d.Transformer2DModelOutput 而不是普通元组。

SD3Transformer2DModel 前向方法。

fuse_qkv_projections

< >

( )

启用融合的 QKV 投影。对于自注意力模块,所有投影矩阵(即查询、键、值)都是融合的。对于注意力模块,键值投影矩阵是融合的。

此 API 🧪 处于实验阶段。

set_attn_processor

< >

( processor: Union )

参数

  • processor (dict 类型的 AttentionProcessor 或仅为 AttentionProcessor) — 将作为 Attention 层的 所有 处理器设置的已实例化的处理器类或处理器类的字典。

    如果 processor 为字典,则键需要定义到相应交叉注意处理器的路径。在设置可训练注意力处理器时,强烈建议这样做。

设置用于计算注意力的注意力处理器。

unfuse_qkv_projections

< >

( )

如果启用了融合的 QKV 投射,则禁用此投射。

此 API 🧪 处于实验阶段。

< > 在 GitHub 上更新