Diffusers documentation

SD3 Transformer 模型

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SD3 Transformer 模型

在 Stable Diffusion 3 中引入的 Transformer 模型。其创新之处在于 MMDiT transformer 块。

SD3Transformer2DModel

类 diffusers.SD3Transformer2DModel

< >

( sample_size: int = 128patch_size: int = 2in_channels: int = 16num_layers: int = 18attention_head_dim: int = 64num_attention_heads: int = 18joint_attention_dim: int = 4096caption_projection_dim: int = 1152pooled_projection_dim: int = 2048out_channels: int = 16pos_embed_max_size: int = 96dual_attention_layers: tuple[int, ...] = ()qk_norm: str | None = None )

参数

  • sample_size (int,默认为 128) — 潜在表示的宽度/高度。由于用于学习一定数量的位置嵌入,该值在训练期间是固定的。
  • patch_size (int,默认为 2) — 用于将输入数据划分为小块的块大小。
  • in_channels (int,默认为 16) — 输入中的潜在通道数。
  • num_layers (int,默认为 18) — 要使用的 transformer 块层数。
  • 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) — 位置嵌入的最大潜在高度/宽度。
  • dual_attention_layers (tuple[int, ...],默认为 ()) — 要使用的双流 Transformer 块的数量。
  • qk_norm (str,可选,默认为 None) — 注意力层中用于 query 和 key 的归一化方式。如果为 None,则不使用归一化。

在 Stable Diffusion 3 中引入的 Transformer 模型。

enable_forward_chunking

< >

( chunk_size: int | None = Nonedim: int = 0 )

参数

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

将注意力处理器设置为使用 前馈分块。

forward

< >

( hidden_states: Tensorencoder_hidden_states: Tensor = Nonepooled_projections: Tensor = Nonetimestep: LongTensor = Noneblock_controlnet_hidden_states: list = Nonejoint_attention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = Trueskip_layers: list[int] | None = None )

参数

  • hidden_states(形状为 (batch size, channel, height, width) 的 torch.Tensor)— 输入的 hidden_states。
  • encoder_hidden_states(形状为 (batch size, sequence_len, embed_dims) 的 torch.Tensor)— 要使用的条件嵌入(例如从提示词等输入条件计算得出的嵌入)。
  • pooled_projections(形状为 (batch_size, projection_dim) 的 torch.Tensor)— 由输入条件的嵌入投影得到的嵌入。
  • timestep (torch.LongTensor) — 用于指示去噪步骤。
  • block_controlnet_hidden_states (list of torch.Tensor) — 一个张量列表,如果指定,将被添加到 Transformer 块的残差中。
  • joint_attention_kwargs (dict, 可选) — 一个 kwargs 字典,如果指定,将作为参数传递给 diffusers.models.attention_processor 中 self.processor 下定义的 AttentionProcessor。
  • return_dict (bool,可选,默认为 True) — 是否返回 ~models.transformer_2d.Transformer2DModelOutput 而不是普通的元组。
  • skip_layers (list of int, 可选) — 在前向传播过程中需要跳过的层索引列表。

SD3Transformer2DModel 的前向方法。

fuse_qkv_projections

< >

( )

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

> 此 API 处于 🧪 实验阶段。

unfuse_qkv_projections

< >

( )

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

> 此 API 处于 🧪 实验阶段。

Update on GitHub