注意力处理器
注意力处理器是一个用于应用不同类型注意力机制的类。
AttnProcessor
用于执行注意力相关计算的默认处理器。
用于实现缩放点积注意力的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。
用于执行注意力相关计算的处理器,针对文本编码器额外引入了可学习的键和值矩阵。
用于执行缩放点积注意力(如果您使用的是 PyTorch 2.0,则默认启用)的处理器,并为文本编码器提供了额外的可学习键和值矩阵。
用于在 torch_npu 上实现 flash attention 的处理器。Torch_npu 仅支持 fp16 和 bf16 数据类型。如果使用 fp32,将使用 F.scaled_dot_product_attention 进行计算,但在 NPU 上的加速效果并不显著。
用于实现缩放点积注意力机制的处理器(如果使用 PyTorch 2.0,则默认启用)。它使用融合投影层。对于自注意力模块,所有投影矩阵(即 query、key、value)均被融合。对于交叉注意力模块,key 和 value 投影矩阵被融合。
> 此 API 目前 🧪 仍处于实验阶段,未来可能会发生变化。
Allegro
用于实现缩放点积注意力机制的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。这在 Allegro 模型中使用。它对查询和键向量应用归一化层和旋转嵌入。
AuraFlow
通常用于处理 Aura Flow 的注意力处理器。
Attention processor 通常用于处理 Aura Flow,并采用融合投影。
CogVideoX
用于在 CogVideoX 模型中实现缩放点积注意力的处理器。它对查询向量和键向量应用旋转嵌入,但不包含空间归一化。
用于在 CogVideoX 模型中实现缩放点积注意力的处理器。它对查询向量和键向量应用旋转嵌入,但不包含空间归一化。
DreamLite
用于实现支持分组查询注意力(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
< source >( 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
< source >( 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
< source >( 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
用于实现缩放点积注意力的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。
Hunyuan
用于实现缩放点积注意力机制的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。这在 HunyuanDiT 模型中使用。它对查询和键向量应用了 s 归一化层和旋转嵌入。
用于实现缩放点积注意力(如果使用 PyTorch 2.0,则默认启用)的处理器,并带有融合的投影层。这用于 HunyuanDiT 模型。它对查询和键向量应用 s 归一化层和旋转嵌入。
用于实现缩放点积注意力机制的处理器(如果使用 PyTorch 2.0,则默认启用)。该处理器用于 HunyuanDiT 模型。它对查询向量和键向量应用归一化层和旋转嵌入。此处理器变体采用了 Pertubed Attention Guidance。
用于实现缩放点积注意力机制的处理器(如果使用 PyTorch 2.0,则默认启用)。该处理器用于 HunyuanDiT 模型。它对查询向量和键向量应用归一化层和旋转嵌入。此处理器变体采用了 Pertubed Attention Guidance。
IdentitySelfAttnProcessor2_0
用于实现 PAG 的处理器,采用缩放点积注意力(如果您使用的是 PyTorch 2.0,则默认启用)。 PAG 参考文献:https://huggingface.co/papers/2403.17377
用于实现 PAG 的处理器,采用缩放点积注意力(如果您使用的是 PyTorch 2.0,则默认启用)。 PAG 参考文献:https://huggingface.co/papers/2403.17377
IP-Adapter
类 diffusers.models.attention_processor.IPAdapterAttnProcessor
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
用于多个 IP-Adapter 的注意力处理器。
类 diffusers.models.attention_processor.IPAdapterAttnProcessor2_0
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
用于 PyTorch 2.0 的 IP-Adapter 注意力处理器。
类 diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0
< source >( hidden_size: intip_hidden_states_dim: inthead_dim: inttimesteps_emb_dim: int = 1280scale: float = 0.5 )
用于 IP-Adapter 的注意力处理器,通常用于处理类似 SD3 的自注意力投影,并包含额外的基于图像的信息和时间步嵌入。
JointAttnProcessor2_0
通常用于处理 SD3 类自注意力投影的注意力处理器。
通常用于处理 SD3 类自注意力投影的注意力处理器。
通常用于处理 SD3 类自注意力投影的注意力处理器。
通常用于处理 SD3 类自注意力投影的注意力处理器。
LoRA
用于实现带有 LoRA 的注意力的处理器。
用于实现 LoRA 注意力的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。
用于实现带有 LoRA 的注意力机制的处理器,为文本编码器额外引入了可学习的键矩阵和值矩阵。
用于使用 xFormers 实现带 LoRA 的注意力的处理器。
Lumina-T2X
用于实现缩放点积注意力机制的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。该处理器在 LuminaNextDiT 模型中使用。它对查询和键向量应用了 s 归一化层和旋转嵌入。
Mochi
在 Mochi 中使用的注意力处理器。
在 Mochi VAE 中使用的注意力处理器。
Sana
用于实现缩放点积线性注意力的处理器。
用于实现多尺度二次注意力的处理器。
用于实现缩放点积线性注意力的处理器。
用于实现缩放点积线性注意力的处理器。
Stable Audio
用于实现缩放点积注意力机制的处理器(如果您使用的是 PyTorch 2.0,则默认启用)。这在 Stable Audio 模型中使用。它对查询和键向量应用旋转嵌入,并支持 MHA、GQA 或 MQA。
SlicedAttnProcessor
类 diffusers.models.attention_processor.SlicedAttnProcessor
< source >( slice_size: int )
用于实现切片注意力的处理器。
类 diffusers.models.attention_processor.SlicedAttnAddedKVProcessor
< source >( slice_size )
用于实现切片注意力机制的处理器,为文本编码器额外引入了可学习的键矩阵和值矩阵。
XFormersAttnProcessor
类 diffusers.models.attention_processor.XFormersAttnProcessor
< source >( attention_op: Callable | None = None )
参数
- attention_op (
Callable,可选,默认为None) — 用作注意力算子的基础 operator。建议将其设置为None,让 xFormers 自动选择最佳算子。
用于使用 xFormers 实现内存高效注意力的处理器。
类 diffusers.models.attention_processor.XFormersAttnAddedKVProcessor
< source >( attention_op: Callable | None = None )
参数
- attention_op (
Callable,可选,默认为None) — 用作注意力算子的基础 operator。建议将其设置为None,让 xFormers 自动选择最佳算子。
用于使用 xFormers 实现内存高效注意力的处理器。
XLAFlashAttnProcessor2_0
类 diffusers.models.attention_processor.XLAFlashAttnProcessor2_0
< source >( partition_spec: tuple[str | None, ...] | None = None )
如果使用 torch_xla,则用于实现基于 pallas flash attention 内核的缩放点积注意力的处理器。
XFormersJointAttnProcessor
类 diffusers.models.attention_processor.XFormersJointAttnProcessor
< source >( attention_op: Callable | None = None )
参数
- attention_op (
Callable,可选,默认为None) — 用作注意力算子的基础 operator。建议将其设置为None,让 xFormers 自动选择最佳算子。
用于使用 xFormers 实现内存高效注意力的处理器。
IPAdapterXFormersAttnProcessor
类 diffusers.models.attention_processor.IPAdapterXFormersAttnProcessor
< source >( 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
< source >( *args**kwargs )
XLAFluxFlashAttnProcessor2_0
如果使用 torch_xla,则用于实现基于 pallas flash attention 内核的缩放点积注意力的处理器。