Diffusers documentation
Processeur d'attention
Processeur d'attention
Un processeur d'attention est une classe destinée à appliquer différents types de mécanismes d'attention.
AttnProcessor
Processeur par défaut pour effectuer les calculs liés à l'attention.
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0).
Processeur pour effectuer des calculs liés à l'attention avec des matrices de clé et de valeur supplémentaires et apprenables pour l'encodeur de texte.
Processeur pour effectuer une attention par produit scalaire mis à l'échelle (activée par défaut si vous utilisez PyTorch 2.0), avec des matrices de clé et de valeur supplémentaires apprenables pour l'encodeur de texte.
Processeur pour implémenter l'attention flash à l'aide de torch_npu. Torch_npu ne prend en charge que les types de données fp16 et bf16. Si fp32 est utilisé, F.scaled_dot_product_attention sera utilisé pour le calcul, mais l'effet d'accélération sur NPU n'est pas significatif.
Processeur pour implémenter l'attention à point produit mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0). Il utilise des couches de projection fusionnées. Pour les modules d'auto-attention, toutes les matrices de projection (c'est-à-dire requête, clé, valeur) sont fusionnées. Pour les modules d'attention croisée, les matrices de projection des clés et des valeurs sont fusionnées.
> Cette API est actuellement 🧪 expérimentale et peut évoluer à l'avenir.
Allegro
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0). Il est utilisé dans le modèle Allegro. Il applique une couche de normalisation et un encodage rotatif sur les vecteurs de requête et de clé.
AuraFlow
Processeur d'attention utilisé typiquement dans le traitement d'Aura Flow.
Processeur d'attention utilisé généralement dans le traitement d'Aura Flow avec des projections fusionnées.
CogVideoX
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle pour le modèle CogVideoX. Il applique un encodage rotatif sur les vecteurs de requête et de clé, mais n'inclut pas de normalisation spatiale.
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle pour le modèle CogVideoX. Il applique un encodage rotatif sur les vecteurs de requête et de clé, mais n'inclut pas de normalisation spatiale.
DreamLite
Processeur pour implémenter l'attention à point produit mis à l'échelle avec prise en charge de l'attention à requêtes groupées (GQA / MQA).
Identique à AttnProcessor2_0 sauf que la branche de redimensionnement des clés/valeurs gère correctement attn.kv_heads != attn.heads en redimensionnant K/V vers kv_heads puis en les répétant via repeat_interleave jusqu'à attn.heads. C'est
nécessaire pour le UNet DreamLite, qui combine GQA avec qk_norm — une combinaison que le AttnProcessor2_0 par défaut ne gère pas. Le SDPA est délégué à dispatch_attention_fn afin que n'importe quel backend d'attention diffusers (SDPA natif PyTorch, FlashAttention, etc.) puisse être utilisé.
Custom Diffusion
classe 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 )
Paramètres
- train_kv (
bool, par défautTrue) — Indique s'il faut entraîner de nouvelles matrices de clés et de valeurs correspondant aux caractéristiques du texte. - train_q_out (
bool, par défautTrue) — Indique s'il faut entraîner de nouvelles matrices de requête correspondant aux caractéristiques latentes de l'image. - hidden_size (
int, facultatif, par défautNone) — La taille cachée de la couche d'attention. - cross_attention_dim (
int, facultatif, par défautNone) — Le nombre de canaux dansencoder_hidden_states. - out_bias (
bool, par défautTrue) — Indique s'il faut inclure le paramètre de biais danstrain_q_out. - dropout (
float, facultatif, valeur par défaut 0.0) — La probabilité de dropout à utiliser.
Processeur pour implémenter l'attention pour la méthode Custom Diffusion.
classe 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 )
Paramètres
- train_kv (
bool, par défautTrue) — Indique s'il faut entraîner de nouvelles matrices de clés et de valeurs correspondant aux caractéristiques du texte. - train_q_out (
bool, par défautTrue) — Indique s'il faut entraîner de nouvelles matrices de requête correspondant aux caractéristiques latentes de l'image. - hidden_size (
int, facultatif, par défautNone) — La taille cachée de la couche d'attention. - cross_attention_dim (
int, facultatif, par défautNone) — Le nombre de canaux dansencoder_hidden_states. - out_bias (
bool, par défautTrue) — Indique s'il faut inclure le paramètre de biais danstrain_q_out. - dropout (
float, facultatif, valeur par défaut 0.0) — La probabilité de dropout à utiliser.
Processeur pour implémenter l'attention de la méthode Custom Diffusion en utilisant l'attention à produit scalaire mis à l'échelle et économe en mémoire de PyTorch 2.0.
classe 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 )
Paramètres
- train_kv (
bool, par défautTrue) — Indique s'il faut entraîner de nouvelles matrices de clés et de valeurs correspondant aux caractéristiques du texte. - train_q_out (
bool, par défautTrue) — Indique s'il faut entraîner de nouvelles matrices de requête correspondant aux caractéristiques latentes de l'image. - hidden_size (
int, facultatif, par défautNone) — La taille cachée de la couche d'attention. - cross_attention_dim (
int, facultatif, par défautNone) — Le nombre de canaux dansencoder_hidden_states. - out_bias (
bool, par défautTrue) — Indique s'il faut inclure le paramètre de biais danstrain_q_out. - dropout (
float, facultatif, valeur par défaut 0.0) — La probabilité de dropout à utiliser. - attention_op (
Callable, facultatif, par défautNone) — L'opérateur de base à utiliser en tant qu'opérateur d'attention. Il est recommandé de le définir surNoneet de laisser xFormers choisir le meilleur opérateur.
Processeur pour implémenter une attention efficace en mémoire à l'aide de xFormers pour la méthode Custom Diffusion.
Flux
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0).
Hunyuan
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0). Il est utilisé dans le modèle HunyuanDiT. Il applique une couche de normalisation s et un encodage rotatif sur les vecteurs de requête et de clé.
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activée par défaut si vous utilisez PyTorch 2.0) avec des couches de projection fusionnées. Elle est utilisée dans le modèle HunyuanDiT. Elle applique une couche de normalisation s et un encodage rotatif sur les vecteurs de requête et de clé.
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0). Il est utilisé dans le modèle HunyuanDiT. Il applique une couche de normalisation et un encodage rotatif sur les vecteurs de requête et de clé. Cette variante du processeur emploie Pertubed Attention Guidance.
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0). Il est utilisé dans le modèle HunyuanDiT. Il applique une couche de normalisation et un encodage rotatif sur les vecteurs de requête et de clé. Cette variante du processeur emploie Pertubed Attention Guidance.
IdentitySelfAttnProcessor2_0
Processeur pour implémenter PAG en utilisant l'attention à produit scalaire pondéré (activé par défaut si vous utilisez PyTorch 2.0). Référence PAG : https://huggingface.co/papers/2403.17377
Processeur pour implémenter PAG en utilisant l'attention à produit scalaire pondéré (activé par défaut si vous utilisez PyTorch 2.0). Référence PAG : https://huggingface.co/papers/2403.17377
IP-Adapter
classe diffusers.models.attention_processor.IPAdapterAttnProcessor
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
Paramètres
- hidden_size (
int) — Taille cachée de la couche d'attention. - cross_attention_dim (
int) — Le nombre de canaux dansencoder_hidden_states. - num_tokens (
int,tuple[int]oulist[int], par défaut(4,)) — La longueur de contexte des fonctionnalités d'image. - scale (
floatou listefloat, par défaut 1.0) — l'échelle de poids du prompt d'image.
Processeur d'attention pour plusieurs IP-Adapters.
classe diffusers.models.attention_processor.IPAdapterAttnProcessor2_0
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
Paramètres
- hidden_size (
int) — Taille cachée de la couche d'attention. - cross_attention_dim (
int) — Le nombre de canaux dansencoder_hidden_states. - num_tokens (
int,tuple[int]oulist[int], par défaut(4,)) — La longueur de contexte des fonctionnalités d'image. - scale (
floatoulist[float], par défaut 1.0) — l'échelle de pondération du prompt d'image.
Processeur d'attention pour IP-Adapter pour PyTorch 2.0.
classe diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0
< source >( hidden_size: intip_hidden_states_dim: inthead_dim: inttimesteps_emb_dim: int = 1280scale: float = 0.5 )
Paramètres
- hidden_size (
int) — Le nombre de canaux cachés. - ip_hidden_states_dim (
int) — La dimension des caractéristiques de l'image. - head_dim (
int) — Le nombre de canaux de tête. - timesteps_emb_dim (
int, par défaut 1280) — Le nombre de canaux d'entrée pour l'encodage des pas de temps. - scale (
float, par défaut 0.5) — Échelle de l'IP-Adapter.
Processeur d'attention pour IP-Adapter, utilisé généralement pour traiter les projections d'auto-attention de type SD3, avec des informations supplémentaires basées sur l'image et des embeddings de pas de temps.
JointAttnProcessor2_0
Processeur d'attention utilisé typiquement dans le traitement des projections d'auto-attention de type SD3.
Processeur d'attention utilisé typiquement dans le traitement des projections d'auto-attention de type SD3.
Processeur d'attention utilisé typiquement dans le traitement des projections d'auto-attention de type SD3.
Processeur d'attention utilisé typiquement dans le traitement des projections d'auto-attention de type SD3.
LoRA
Processeur pour implémenter l'attention avec LoRA.
Processeur pour implémenter l'attention avec LoRA (activé par défaut si vous utilisez PyTorch 2.0).
Processeur pour implémenter l'attention avec LoRA, avec des matrices de clés et de valeurs supplémentaires apprenables pour l'encodeur de texte.
Processeur pour implémenter l'attention avec LoRA en utilisant xFormers.
Lumina-T2X
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0). Il est utilisé dans le modèle LuminaNextDiT. Il applique une couche de normalisation s et un encodage rotatif sur les vecteurs de requête et de clé.
Mochi
Processeur d'attention utilisé dans Mochi.
Processeur d'attention utilisé dans le VAE de Mochi.
Sana
Processeur pour implémenter une attention linéaire à point produit mis à l'échelle.
Processeur pour implémenter l'attention quadratique multi-échelle.
Processeur pour implémenter une attention linéaire à point produit mis à l'échelle.
Processeur pour implémenter une attention linéaire à point produit mis à l'échelle.
Stable Audio
Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0). Il est utilisé dans le modèle Stable Audio. Il applique l'incorporation rotative sur les vecteurs de requête et de clé, et permet MHA, GQA ou MQA.
SlicedAttnProcessor
classe diffusers.models.attention_processor.SlicedAttnProcessor
< source >( slice_size: int )
Processeur pour implémenter l'attention par tranches.
classe diffusers.models.attention_processor.SlicedAttnAddedKVProcessor
< source >( slice_size )
Processeur pour implémenter l'attention segmentée avec des matrices de clés et de valeurs supplémentaires apprenables pour l'encodeur de texte.
XFormersAttnProcessor
classe diffusers.models.attention_processor.XFormersAttnProcessor
< source >( attention_op: Callable | None = None )
Paramètres
- attention_op (
Callable, facultatif, par défautNone) — L'opérateur de base à utiliser comme opérateur d'attention. Il est recommandé de le définir surNoneet de laisser xFormers choisir le meilleur opérateur.
Processeur pour implémenter une attention efficace en mémoire à l'aide de xFormers.
classe diffusers.models.attention_processor.XFormersAttnAddedKVProcessor
< source >( attention_op: Callable | None = None )
Paramètres
- attention_op (
Callable, facultatif, par défautNone) — L'opérateur de base à utiliser comme opérateur d'attention. Il est recommandé de le définir surNoneet de laisser xFormers choisir le meilleur opérateur.
Processeur pour implémenter une attention efficace en mémoire à l'aide de xFormers.
XLAFlashAttnProcessor2_0
classe diffusers.models.attention_processor.XLAFlashAttnProcessor2_0
< source >( partition_spec: tuple[str | None, ...] | None = None )
Processeur pour implémenter l'attention à point produit mis à l'échelle avec le noyau pallas flash attention si torch_xla est utilisé.
XFormersJointAttnProcessor
classe diffusers.models.attention_processor.XFormersJointAttnProcessor
< source >( attention_op: Callable | None = None )
Paramètres
- attention_op (
Callable, facultatif, par défautNone) — L'opérateur de base à utiliser comme opérateur d'attention. Il est recommandé de le définir surNoneet de laisser xFormers choisir le meilleur opérateur.
Processeur pour implémenter une attention efficace en mémoire à l'aide de xFormers.
IPAdapterXFormersAttnProcessor
classe diffusers.models.attention_processor.IPAdapterXFormersAttnProcessor
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0attention_op: Callable | None = None )
Paramètres
- hidden_size (
int) — Taille cachée de la couche d'attention. - cross_attention_dim (
int) — Le nombre de canaux dansencoder_hidden_states. - num_tokens (
int,tuple[int]oulist[int], par défaut(4,)) — La longueur de contexte des fonctionnalités d'image. - scale (
floatoulist[float], par défaut 1.0) — l'échelle de pondération du prompt d'image. - attention_op (
Callable, facultatif, par défautNone) — L'opérateur de base à utiliser comme opérateur d'attention. Il est recommandé de le définir surNoneet de laisser xFormers choisir le meilleur opérateur.
Processeur d'attention pour IP-Adapter utilisant xFormers.
FluxIPAdapterJointAttnProcessor2_0
classe diffusers.models.attention_processor.FluxIPAdapterJointAttnProcessor2_0
< source >( *args**kwargs )
XLAFluxFlashAttnProcessor2_0
classe diffusers.models.attention_processor.XLAFluxFlashAttnProcessor2_0
< source >( *args**kwargs )
Processeur pour implémenter l'attention à point produit mis à l'échelle avec le noyau pallas flash attention si torch_xla est utilisé.