Diffusers documentation

PixArtTransformer2DModel

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

PixArtTransformer2DModel

用于类图像数据的 Transformer 模型,源自 PixArt-Alpha 和 PixArt-Sigma。

PixArtTransformer2DModel

class diffusers.PixArtTransformer2DModel

< >

( num_attention_heads: int = 16attention_head_dim: int = 72in_channels: int = 4out_channels: int | None = 8num_layers: int = 28dropout: float = 0.0norm_num_groups: int = 32cross_attention_dim: int | None = 1152attention_bias: bool = Truesample_size: int = 128patch_size: int = 2activation_fn: str = 'gelu-approximate'num_embeds_ada_norm: int | None = 1000upcast_attention: bool = Falsenorm_type: str = 'ada_norm_single'norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = Noneuse_additional_conditions: bool | None = Nonecaption_channels: int | None = Noneattention_type: str | None = 'default' )

参数

  • num_attention_heads(int,可选,默认为 16)— 多头注意力机制中使用的注意力头数量。
  • attention_head_dim(int,可选,默认值为 72)— 每个注意力头中的通道数。
  • in_channels (int,默认为 4) — 输入数据的通道数。
  • out_channels (int, optional) — 输出中的通道数。如果输出通道数与输入不同,请指定此参数。
  • num_layers(int,可选,默认为 28)— 要使用的 Transformer 块层数。
  • dropout(float,可选,默认为 0.0)— 在 Transformer 块中使用的 dropout 概率。
  • norm_num_groups (int, 可选,默认为 32) — Transformer 块内组归一化的组数。
  • cross_attention_dim(int,可选)— 交叉注意力层的维度,通常与编码器的隐藏维度相匹配。
  • attention_bias(bool,可选,默认为 True)— 配置 Transformer 块中的注意力机制是否包含偏置参数。
  • sample_size (int, 默认为 128) — 潜在图像的宽度。此参数在训练期间固定不变。
  • patch_size (int, 默认为 2) — 模型处理的块大小,适用于处理非顺序数据的架构。
  • activation_fn (str, optional, defaults to “gelu-approximate”) — Transformer 块中前馈网络所使用的激活函数。
  • num_embeds_ada_norm (int, 可选, 默认为 1000) — AdaLayerNorm 的嵌入数量,在训练期间固定,并影响推理时的最大去噪步数。
  • upcast_attention(bool,可选,默认为 False)— 如果为 true,则提升注意力机制的维度,以可能获得更好的性能。
  • norm_type (str, optional, defaults to “ada_norm_zero”) — 指定所使用的归一化类型,可以是 ‘ada_norm_zero’。
  • norm_elementwise_affine(bool,可选,默认为 False) — 如果为 true,则在归一化层中启用逐元素仿射参数。
  • norm_eps(float,可选,默认为 1e-6)—— 在归一化层中添加到分母的一个小常数,用于防止除以零。
  • interpolation_scale(int,可选)— 在插值位置嵌入时使用的缩放因子。
  • use_additional_conditions(bool,可选)— 是否将额外条件作为输入使用。
  • attention_type(str,可选,默认为 “default”)— 要使用的注意力机制类型。
  • caption_channels(int,可选,默认为 None)— 用于投影 caption 嵌入的通道数。
  • use_linear_projection(bool,可选,默认为 False) — 已弃用的参数。将在未来版本中移除。
  • num_vector_embeds(bool,可选,默认为 False) — 已弃用的参数。将在未来版本中移除。

PixArt 系列模型(https://huggingface.co/papers/2310.00426、https://huggingface.co/papers/2403.04692)中介绍的 2D Transformer 模型。

forward

< >

( hidden_states: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Nonetimestep: typing.Optional[torch.LongTensor] = Noneadded_cond_kwargs: dict[str, torch.Tensor] = Nonecross_attention_kwargs: dict[str, typing.Any] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )

参数

  • hidden_states(形状为 (batch size, channel, height, width) 的 torch.FloatTensor)— 输入的 hidden_states。
  • encoder_hidden_states (torch.FloatTensor,形状为 (batch size, sequence len, embed dims),可选) — 用于交叉注意力层的条件嵌入。如果未提供,交叉注意力将默认为自注意力。
  • timestep (torch.LongTensor, 可选) — 用于指示去噪步骤。作为嵌入应用于 AdaLayerNorm 的可选时间步。
  • added_cond_kwargs — (dict[str, Any],可选):用作输入的附加条件。
  • cross_attention_kwargs ( dict[str, Any], 可选) — 一个 kwargs 字典,如果指定,将传递给 diffusers.models.attention_processor 中 self.processor 下定义的 AttentionProcessor。
  • attention_mask ( torch.Tensor, 可选) — 形状为 (batch, key_tokens) 的注意力掩码,应用于 encoder_hidden_states。如果值为 1,则保留该掩码;如果值为 0,则丢弃。掩码将被转换为偏置,向对应于“丢弃”标记的注意力分数添加较大的负值。
  • encoder_attention_mask ( torch.Tensor, 可选) — 应用于 encoder_hidden_states. 支持两种格式:
    • Mask (batch, sequence_length) True = 保留,False = 丢弃。
    • Bias (batch, 1, sequence_length) 0 = 保留,-10000 = 丢弃。

    如果 ndim == 2:将被解释为掩码,然后转换为与上述格式一致的偏置。该偏置将加到交叉注意力分数上。

  • return_dict (bool,可选,默认为 True) — 是否返回 UNet2DConditionOutput 而不是普通元组。

PixArtTransformer2DModel 的前向方法。

fuse_qkv_projections

< >

( )

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

> 此 API 处于 🧪 实验阶段。

set_default_attn_processor

< >

( )

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

由于 PixArt 的默认模型没有使用任何特殊的注意力处理器,因此可以直接使用 AttnProcessor()。

unfuse_qkv_projections

< >

( )

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

> 此 API 处于 🧪 实验阶段。

Update on GitHub