Diffusers documentation

SD3 Transformer 模型

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
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