Diffusers documentation

注意力处理器

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

注意力处理器

注意力处理器是一个用于应用不同类型注意力机制的类。

AttnProcessor

类 diffusers.models.attention_processor.AttnProcessor

< >

( )

用于执行注意力相关计算的默认处理器。

类 diffusers.models.attention_processor.AttnProcessor2_0

< >

( )

用于实现缩放点积注意力的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。

类 diffusers.models.attention_processor.AttnAddedKVProcessor

< >

( )

用于执行注意力相关计算的处理器,针对文本编码器额外引入了可学习的键和值矩阵。

类 diffusers.models.attention_processor.AttnAddedKVProcessor2_0

< >

( )

用于执行缩放点积注意力(如果您使用的是 PyTorch 2.0,则默认启用)的处理器,并为文本编码器提供了额外的可学习键和值矩阵。

类 diffusers.models.attention_processor.AttnProcessorNPU

< >

( )

用于在 torch_npu 上实现 flash attention 的处理器。Torch_npu 仅支持 fp16 和 bf16 数据类型。如果使用 fp32,将使用 F.scaled_dot_product_attention 进行计算,但在 NPU 上的加速效果并不显著。

类 diffusers.models.attention_processor.FusedAttnProcessor2_0

< >

( )

用于实现缩放点积注意力机制的处理器(如果使用 PyTorch 2.0,则默认启用)。它使用融合投影层。对于自注意力模块,所有投影矩阵(即 query、key、value)均被融合。对于交叉注意力模块,key 和 value 投影矩阵被融合。

> 此 API 目前 🧪 仍处于实验阶段,未来可能会发生变化。

Allegro

类 diffusers.models.attention_processor.AllegroAttnProcessor2_0

< >

( )

用于实现缩放点积注意力机制的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。这在 Allegro 模型中使用。它对查询和键向量应用归一化层和旋转嵌入。

AuraFlow

类 diffusers.models.attention_processor.AuraFlowAttnProcessor2_0

< >

( )

通常用于处理 Aura Flow 的注意力处理器。

类 diffusers.models.attention_processor.FusedAuraFlowAttnProcessor2_0

< >

( )

Attention processor 通常用于处理 Aura Flow,并采用融合投影。

CogVideoX

类 diffusers.models.attention_processor.CogVideoXAttnProcessor2_0

< >

( )

用于在 CogVideoX 模型中实现缩放点积注意力的处理器。它对查询向量和键向量应用旋转嵌入,但不包含空间归一化。

类 diffusers.models.attention_processor.FusedCogVideoXAttnProcessor2_0

< >

( )

用于在 CogVideoX 模型中实现缩放点积注意力的处理器。它对查询向量和键向量应用旋转嵌入,但不包含空间归一化。

DreamLite

类 diffusers.models.unets.unet_dreamlite.DreamLiteAttnProcessor2_0

< >

( )

用于实现支持分组查询注意力(GQA / MQA)的缩放点积注意力的处理器。

与 AttnProcessor2_0 相同,但键/值重塑分支通过先将 K/V 重塑为 kv_heads,然后使用 repeat_interleave 将其扩展至 attn.heads,从而正确处理 attn.kv_heads != attn.heads 的情况。这是 DreamLite UNet 所必需的,因为它将 GQA 与 qk_norm 结合使用——而默认的 AttnProcessor2_0 无法处理这种组合。SDPA 委托给 dispatch_attention_fn,因此可以使用任何 diffusers 注意力后端(原生 PyTorch SDPA、FlashAttention 等)。

Custom Diffusion

类 diffusers.models.attention_processor.CustomDiffusionAttnProcessor

< >

( train_kv: bool = Truetrain_q_out: bool = Truehidden_size: int | None = Nonecross_attention_dim: int | None = Noneout_bias: bool = Truedropout: float = 0.0 )

参数

  • train_kv (bool,默认为 True) — 是否重新训练与文本特征对应的键(key)和值(value)矩阵。
  • train_q_out (bool,默认为 True) — 是否针对潜在图像特征新训练对应的查询矩阵。
  • hidden_size (int,可选,默认为 None) — 注意力层的隐藏层大小。
  • cross_attention_dim (int,可选,默认为 None) — encoder_hidden_states 中的通道数。
  • out_bias (bool,默认为 True) — 是否在 train_q_out 中包含偏置参数。
  • dropout (float, 可选,默认为 0.0) — 要使用的 dropout 概率。

用于实现 Custom Diffusion 方法中注意力机制的处理器。

类 diffusers.models.attention_processor.CustomDiffusionAttnProcessor2_0

< >

( train_kv: bool = Truetrain_q_out: bool = Truehidden_size: int | None = Nonecross_attention_dim: int | None = Noneout_bias: bool = Truedropout: float = 0.0 )

参数

  • train_kv (bool,默认为 True) — 是否重新训练与文本特征对应的键(key)和值(value)矩阵。
  • train_q_out (bool,默认为 True) — 是否针对潜在图像特征新训练对应的查询矩阵。
  • hidden_size (int,可选,默认为 None) — 注意力层的隐藏层大小。
  • cross_attention_dim (int,可选,默认为 None) — encoder_hidden_states 中的通道数。
  • out_bias (bool,默认为 True) — 是否在 train_q_out 中包含偏置参数。
  • dropout (float, 可选,默认为 0.0) — 要使用的 dropout 概率。

用于使用 PyTorch 2.0 的内存高效缩放点积注意力来实现 Custom Diffusion 方法中注意力的处理器。

类 diffusers.models.attention_processor.CustomDiffusionXFormersAttnProcessor

< >

( train_kv: bool = Truetrain_q_out: bool = Falsehidden_size: int | None = Nonecross_attention_dim: int | None = Noneout_bias: bool = Truedropout: float = 0.0attention_op: Callable | None = None )

参数

  • train_kv (bool,默认为 True) — 是否重新训练与文本特征对应的键(key)和值(value)矩阵。
  • train_q_out (bool,默认为 True) — 是否针对潜在图像特征新训练对应的查询矩阵。
  • hidden_size (int,可选,默认为 None) — 注意力层的隐藏层大小。
  • cross_attention_dim (int,可选,默认为 None) — encoder_hidden_states 中的通道数。
  • out_bias (bool,默认为 True) — 是否在 train_q_out 中包含偏置参数。
  • dropout (float, 可选,默认为 0.0) — 要使用的 dropout 概率。
  • attention_op (Callable,可选,默认为 None) — 用作注意力算子的基础 operator。建议将其设置为 None,让 xFormers 自动选择最佳算子。

用于在 Custom Diffusion 方法中通过 xFormers 实现内存高效注意力的处理器。

Flux

类 diffusers.models.attention_processor.FluxAttnProcessor2_0

< >

( *args**kwargs )

类 diffusers.models.attention_processor.FusedFluxAttnProcessor2_0

< >

( *args**kwargs )

类 diffusers.models.attention_processor.FluxSingleAttnProcessor2_0

< >

( *args**kwargs )

用于实现缩放点积注意力的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。

Hunyuan

类 diffusers.models.attention_processor.HunyuanAttnProcessor2_0

< >

( )

用于实现缩放点积注意力机制的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。这在 HunyuanDiT 模型中使用。它对查询和键向量应用了 s 归一化层和旋转嵌入。

类 diffusers.models.attention_processor.FusedHunyuanAttnProcessor2_0

< >

( )

用于实现缩放点积注意力(如果使用 PyTorch 2.0,则默认启用)的处理器,并带有融合的投影层。这用于 HunyuanDiT 模型。它对查询和键向量应用 s 归一化层和旋转嵌入。

类 diffusers.models.attention_processor.PAGHunyuanAttnProcessor2_0

< >

( )

用于实现缩放点积注意力机制的处理器(如果使用 PyTorch 2.0,则默认启用)。该处理器用于 HunyuanDiT 模型。它对查询向量和键向量应用归一化层和旋转嵌入。此处理器变体采用了 Pertubed Attention Guidance。

类 diffusers.models.attention_processor.PAGCFGHunyuanAttnProcessor2_0

< >

( )

用于实现缩放点积注意力机制的处理器(如果使用 PyTorch 2.0,则默认启用)。该处理器用于 HunyuanDiT 模型。它对查询向量和键向量应用归一化层和旋转嵌入。此处理器变体采用了 Pertubed Attention Guidance。

IdentitySelfAttnProcessor2_0

类 diffusers.models.attention_processor.PAGIdentitySelfAttnProcessor2_0

< >

( )

用于实现 PAG 的处理器,采用缩放点积注意力(如果您使用的是 PyTorch 2.0,则默认启用)。 PAG 参考文献:https://huggingface.co/papers/2403.17377

类 diffusers.models.attention_processor.PAGCFGIdentitySelfAttnProcessor2_0

< >

( )

用于实现 PAG 的处理器,采用缩放点积注意力(如果您使用的是 PyTorch 2.0,则默认启用)。 PAG 参考文献:https://huggingface.co/papers/2403.17377

IP-Adapter

类 diffusers.models.attention_processor.IPAdapterAttnProcessor

< >

( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )

参数

  • hidden_size (int) — 注意力层的隐藏层大小。
  • cross_attention_dim (int) — encoder_hidden_states 中的通道数。
  • num_tokens (int、tuple[int] 或 list[int],默认为 (4,)) — 图像特征的上下文长度。
  • scale (float 或 listfloat,默认为 1.0) — 图像提示的权重缩放。

用于多个 IP-Adapter 的注意力处理器。

类 diffusers.models.attention_processor.IPAdapterAttnProcessor2_0

< >

( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )

参数

  • hidden_size (int) — 注意力层的隐藏层大小。
  • cross_attention_dim (int) — encoder_hidden_states 中的通道数。
  • num_tokens (int、tuple[int] 或 list[int],默认为 (4,)) — 图像特征的上下文长度。
  • scale (float 或 list[float],默认为 1.0) — 图像提示的权重缩放。

用于 PyTorch 2.0 的 IP-Adapter 注意力处理器。

类 diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0

< >

( hidden_size: intip_hidden_states_dim: inthead_dim: inttimesteps_emb_dim: int = 1280scale: float = 0.5 )

参数

  • hidden_size (int) — 隐藏通道的数量。
  • ip_hidden_states_dim (int) — 图像特征维度。
  • head_dim (int) — 头通道的数量。
  • timesteps_emb_dim (int, 默认为 1280) — 时间步嵌入的输入通道数。
  • scale (float,默认为 0.5) — IP-Adapter 缩放比例。

用于 IP-Adapter 的注意力处理器,通常用于处理类似 SD3 的自注意力投影,并包含额外的基于图像的信息和时间步嵌入。

JointAttnProcessor2_0

类 diffusers.models.attention_processor.JointAttnProcessor2_0

< >

( )

通常用于处理 SD3 类自注意力投影的注意力处理器。

类 diffusers.models.attention_processor.PAGJointAttnProcessor2_0

< >

( )

通常用于处理 SD3 类自注意力投影的注意力处理器。

类 diffusers.models.attention_processor.PAGCFGJointAttnProcessor2_0

< >

( )

通常用于处理 SD3 类自注意力投影的注意力处理器。

类 diffusers.models.attention_processor.FusedJointAttnProcessor2_0

< >

( )

通常用于处理 SD3 类自注意力投影的注意力处理器。

LoRA

类 diffusers.models.attention_processor.LoRAAttnProcessor

< >

( )

用于实现带有 LoRA 的注意力的处理器。

类 diffusers.models.attention_processor.LoRAAttnProcessor2_0

< >

( )

用于实现 LoRA 注意力的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。

类 diffusers.models.attention_processor.LoRAAttnAddedKVProcessor

< >

( )

用于实现带有 LoRA 的注意力机制的处理器,为文本编码器额外引入了可学习的键矩阵和值矩阵。

类 diffusers.models.attention_processor.LoRAXFormersAttnProcessor

< >

( )

用于使用 xFormers 实现带 LoRA 的注意力的处理器。

Lumina-T2X

类 diffusers.models.attention_processor.LuminaAttnProcessor2_0

< >

( )

用于实现缩放点积注意力机制的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。该处理器在 LuminaNextDiT 模型中使用。它对查询和键向量应用了 s 归一化层和旋转嵌入。

Mochi

类 diffusers.models.attention_processor.MochiAttnProcessor2_0

< >

( )

在 Mochi 中使用的注意力处理器。

类 diffusers.models.attention_processor.MochiVaeAttnProcessor2_0

< >

( )

在 Mochi VAE 中使用的注意力处理器。

Sana

类 diffusers.models.attention_processor.SanaLinearAttnProcessor2_0

< >

( )

用于实现缩放点积线性注意力的处理器。

类 diffusers.models.attention_processor.SanaMultiscaleAttnProcessor2_0

< >

( )

用于实现多尺度二次注意力的处理器。

类 diffusers.models.attention_processor.PAGCFGSanaLinearAttnProcessor2_0

< >

( )

用于实现缩放点积线性注意力的处理器。

类 diffusers.models.attention_processor.PAGIdentitySanaLinearAttnProcessor2_0

< >

( )

用于实现缩放点积线性注意力的处理器。

Stable Audio

类 diffusers.models.attention_processor.StableAudioAttnProcessor2_0

< >

( )

用于实现缩放点积注意力机制的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。这在 Stable Audio 模型中使用。它对查询和键向量应用旋转嵌入,并支持 MHA、GQA 或 MQA。

SlicedAttnProcessor

类 diffusers.models.attention_processor.SlicedAttnProcessor

< >

( slice_size: int )

参数

  • slice_size (int, 可选) — 用于计算注意力的步数。使用 attention_head_dim // slice_size 个切片,且 attention_head_dim 必须是 slice_size 的倍数。

用于实现切片注意力的处理器。

类 diffusers.models.attention_processor.SlicedAttnAddedKVProcessor

< >

( slice_size )

参数

  • slice_size (int, 可选) — 用于计算注意力的步数。使用 attention_head_dim // slice_size 个切片,且 attention_head_dim 必须是 slice_size 的倍数。

用于实现切片注意力机制的处理器,为文本编码器额外引入了可学习的键矩阵和值矩阵。

XFormersAttnProcessor

类 diffusers.models.attention_processor.XFormersAttnProcessor

< >

( attention_op: Callable | None = None )

参数

  • attention_op (Callable,可选,默认为 None) — 用作注意力算子的基础 operator。建议将其设置为 None,让 xFormers 自动选择最佳算子。

用于使用 xFormers 实现内存高效注意力的处理器。

类 diffusers.models.attention_processor.XFormersAttnAddedKVProcessor

< >

( attention_op: Callable | None = None )

参数

  • attention_op (Callable,可选,默认为 None) — 用作注意力算子的基础 operator。建议将其设置为 None,让 xFormers 自动选择最佳算子。

用于使用 xFormers 实现内存高效注意力的处理器。

XLAFlashAttnProcessor2_0

类 diffusers.models.attention_processor.XLAFlashAttnProcessor2_0

< >

( partition_spec: tuple[str | None, ...] | None = None )

如果使用 torch_xla,则用于实现基于 pallas flash attention 内核的缩放点积注意力的处理器。

XFormersJointAttnProcessor

类 diffusers.models.attention_processor.XFormersJointAttnProcessor

< >

( attention_op: Callable | None = None )

参数

  • attention_op (Callable,可选,默认为 None) — 用作注意力算子的基础 operator。建议将其设置为 None,让 xFormers 自动选择最佳算子。

用于使用 xFormers 实现内存高效注意力的处理器。

IPAdapterXFormersAttnProcessor

类 diffusers.models.attention_processor.IPAdapterXFormersAttnProcessor

< >

( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0attention_op: Callable | None = None )

参数

  • hidden_size (int) — 注意力层的隐藏层大小。
  • cross_attention_dim (int) — encoder_hidden_states 中的通道数。
  • num_tokens (int、tuple[int] 或 list[int],默认为 (4,)) — 图像特征的上下文长度。
  • scale (float 或 list[float],默认为 1.0) — 图像提示的权重缩放。
  • attention_op (Callable,可选,默认为 None) — 用作注意力算子的基础 operator。建议将其设置为 None,让 xFormers 自动选择最佳算子。

使用 xFormers 的 IP-Adapter 注意力处理器。

FluxIPAdapterJointAttnProcessor2_0

类 diffusers.models.attention_processor.FluxIPAdapterJointAttnProcessor2_0

< >

( *args**kwargs )

XLAFluxFlashAttnProcessor2_0

类 diffusers.models.attention_processor.XLAFluxFlashAttnProcessor2_0

< >

( *args**kwargs )

如果使用 torch_xla,则用于实现基于 pallas flash attention 内核的缩放点积注意力的处理器。

Update on GitHub