Diffusers documentation
SD3 Transformer 模型
SD3 Transformer 模型
在 Stable Diffusion 3 中引入的 Transformer 模型。其创新之处在于 MMDiT transformer 块。
SD3Transformer2DModel
类 diffusers.SD3Transformer2DModel
< source >( 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
< source >( chunk_size: int | None = Nonedim: int = 0 )
将注意力处理器设置为使用 前馈分块。
forward
< source >( 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 (
listoftorch.Tensor) — 一个张量列表,如果指定,将被添加到 Transformer 块的残差中。 - joint_attention_kwargs (
dict, 可选) — 一个 kwargs 字典,如果指定,将作为参数传递给 diffusers.models.attention_processor 中self.processor下定义的AttentionProcessor。 - return_dict (
bool,可选,默认为True) — 是否返回~models.transformer_2d.Transformer2DModelOutput而不是普通的元组。 - skip_layers (
listofint, 可选) — 在前向传播过程中需要跳过的层索引列表。
SD3Transformer2DModel 的前向方法。
启用融合的 QKV 投影。对于自注意力模块,所有投影矩阵(即 query、key、value)均会被融合。对于交叉注意力模块,key 和 value 投影矩阵会被融合。
> 此 API 处于 🧪 实验阶段。