Diffusers documentation

Processeur d'attention

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Processeur d'attention

Un processeur d'attention est une classe destinée à appliquer différents types de mécanismes d'attention.

AttnProcessor

classe diffusers.models.attention_processor.AttnProcessor

< >

( )

Processeur par défaut pour effectuer les calculs liés à l'attention.

classe diffusers.models.attention_processor.AttnProcessor2_0

< >

( )

Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0).

classe diffusers.models.attention_processor.AttnAddedKVProcessor

< >

( )

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.

classe diffusers.models.attention_processor.AttnAddedKVProcessor2_0

< >

( )

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.

classe diffusers.models.attention_processor.AttnProcessorNPU

< >

( )

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.

classe diffusers.models.attention_processor.FusedAttnProcessor2_0

< >

( )

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

classe diffusers.models.attention_processor.AllegroAttnProcessor2_0

< >

( )

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

classe diffusers.models.attention_processor.AuraFlowAttnProcessor2_0

< >

( )

Processeur d'attention utilisé typiquement dans le traitement d'Aura Flow.

classe diffusers.models.attention_processor.FusedAuraFlowAttnProcessor2_0

< >

( )

Processeur d'attention utilisé généralement dans le traitement d'Aura Flow avec des projections fusionnées.

CogVideoX

classe diffusers.models.attention_processor.CogVideoXAttnProcessor2_0

< >

( )

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.

classe diffusers.models.attention_processor.FusedCogVideoXAttnProcessor2_0

< >

( )

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

classe diffusers.models.unets.unet_dreamlite.DreamLiteAttnProcessor2_0

< >

( )

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

< >

( 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éfaut True) — 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éfaut True) — 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éfaut None) — La taille cachée de la couche d'attention.
  • cross_attention_dim (int, facultatif, par défaut None) — Le nombre de canaux dans encoder_hidden_states.
  • out_bias (bool, par défaut True) — Indique s'il faut inclure le paramètre de biais dans train_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

< >

( 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éfaut True) — 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éfaut True) — 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éfaut None) — La taille cachée de la couche d'attention.
  • cross_attention_dim (int, facultatif, par défaut None) — Le nombre de canaux dans encoder_hidden_states.
  • out_bias (bool, par défaut True) — Indique s'il faut inclure le paramètre de biais dans train_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

< >

( 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éfaut True) — 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éfaut True) — 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éfaut None) — La taille cachée de la couche d'attention.
  • cross_attention_dim (int, facultatif, par défaut None) — Le nombre de canaux dans encoder_hidden_states.
  • out_bias (bool, par défaut True) — Indique s'il faut inclure le paramètre de biais dans train_q_out.
  • dropout (float, facultatif, valeur par défaut 0.0) — La probabilité de dropout à utiliser.
  • attention_op (Callable, facultatif, par défaut None) — L'opérateur de base à utiliser en tant qu'opérateur d'attention. Il est recommandé de le définir sur None et 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

classe diffusers.models.attention_processor.FluxAttnProcessor2_0

< >

( *args**kwargs )

classe diffusers.models.attention_processor.FusedFluxAttnProcessor2_0

< >

( *args**kwargs )

classe diffusers.models.attention_processor.FluxSingleAttnProcessor2_0

< >

( *args**kwargs )

Processeur pour implémenter l'attention à produit scalaire mis à l'échelle (activé par défaut si vous utilisez PyTorch 2.0).

Hunyuan

classe diffusers.models.attention_processor.HunyuanAttnProcessor2_0

< >

( )

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é.

classe diffusers.models.attention_processor.FusedHunyuanAttnProcessor2_0

< >

( )

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é.

classe diffusers.models.attention_processor.PAGHunyuanAttnProcessor2_0

< >

( )

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.

classe diffusers.models.attention_processor.PAGCFGHunyuanAttnProcessor2_0

< >

( )

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

classe diffusers.models.attention_processor.PAGIdentitySelfAttnProcessor2_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

classe diffusers.models.attention_processor.PAGCFGIdentitySelfAttnProcessor2_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

IP-Adapter

classe diffusers.models.attention_processor.IPAdapterAttnProcessor

< >

( 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 dans encoder_hidden_states.
  • num_tokens (int, tuple[int] ou list[int], par défaut (4,)) — La longueur de contexte des fonctionnalités d'image.
  • scale (float ou 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

< >

( 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 dans encoder_hidden_states.
  • num_tokens (int, tuple[int] ou list[int], par défaut (4,)) — La longueur de contexte des fonctionnalités d'image.
  • scale (float ou list[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

< >

( 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

classe diffusers.models.attention_processor.JointAttnProcessor2_0

< >

( )

Processeur d'attention utilisé typiquement dans le traitement des projections d'auto-attention de type SD3.

classe diffusers.models.attention_processor.PAGJointAttnProcessor2_0

< >

( )

Processeur d'attention utilisé typiquement dans le traitement des projections d'auto-attention de type SD3.

classe diffusers.models.attention_processor.PAGCFGJointAttnProcessor2_0

< >

( )

Processeur d'attention utilisé typiquement dans le traitement des projections d'auto-attention de type SD3.

classe diffusers.models.attention_processor.FusedJointAttnProcessor2_0

< >

( )

Processeur d'attention utilisé typiquement dans le traitement des projections d'auto-attention de type SD3.

LoRA

classe diffusers.models.attention_processor.LoRAAttnProcessor

< >

( )

Processeur pour implémenter l'attention avec LoRA.

classe diffusers.models.attention_processor.LoRAAttnProcessor2_0

< >

( )

Processeur pour implémenter l'attention avec LoRA (activé par défaut si vous utilisez PyTorch 2.0).

classe diffusers.models.attention_processor.LoRAAttnAddedKVProcessor

< >

( )

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.

classe diffusers.models.attention_processor.LoRAXFormersAttnProcessor

< >

( )

Processeur pour implémenter l'attention avec LoRA en utilisant xFormers.

Lumina-T2X

classe diffusers.models.attention_processor.LuminaAttnProcessor2_0

< >

( )

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

classe diffusers.models.attention_processor.MochiAttnProcessor2_0

< >

( )

Processeur d'attention utilisé dans Mochi.

classe diffusers.models.attention_processor.MochiVaeAttnProcessor2_0

< >

( )

Processeur d'attention utilisé dans le VAE de Mochi.

Sana

classe diffusers.models.attention_processor.SanaLinearAttnProcessor2_0

< >

( )

Processeur pour implémenter une attention linéaire à point produit mis à l'échelle.

classe diffusers.models.attention_processor.SanaMultiscaleAttnProcessor2_0

< >

( )

Processeur pour implémenter l'attention quadratique multi-échelle.

classe diffusers.models.attention_processor.PAGCFGSanaLinearAttnProcessor2_0

< >

( )

Processeur pour implémenter une attention linéaire à point produit mis à l'échelle.

classe diffusers.models.attention_processor.PAGIdentitySanaLinearAttnProcessor2_0

< >

( )

Processeur pour implémenter une attention linéaire à point produit mis à l'échelle.

Stable Audio

classe diffusers.models.attention_processor.StableAudioAttnProcessor2_0

< >

( )

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

< >

( slice_size: int )

Paramètres

  • slice_size (int, facultatif) — Le nombre d'étapes pour calculer l'attention. Utilise autant de tranches que attention_head_dim // slice_size, et attention_head_dim doit être un multiple de slice_size.

Processeur pour implémenter l'attention par tranches.

classe diffusers.models.attention_processor.SlicedAttnAddedKVProcessor

< >

( slice_size )

Paramètres

  • slice_size (int, facultatif) — Le nombre d'étapes pour calculer l'attention. Utilise autant de tranches que attention_head_dim // slice_size, et attention_head_dim doit être un multiple de 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

< >

( attention_op: Callable | None = None )

Paramètres

  • attention_op (Callable, facultatif, par défaut None) — L'opérateur de base à utiliser comme opérateur d'attention. Il est recommandé de le définir sur None et 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

< >

( attention_op: Callable | None = None )

Paramètres

  • attention_op (Callable, facultatif, par défaut None) — L'opérateur de base à utiliser comme opérateur d'attention. Il est recommandé de le définir sur None et 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

< >

( 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

< >

( attention_op: Callable | None = None )

Paramètres

  • attention_op (Callable, facultatif, par défaut None) — L'opérateur de base à utiliser comme opérateur d'attention. Il est recommandé de le définir sur None et 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

< >

( 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 dans encoder_hidden_states.
  • num_tokens (int, tuple[int] ou list[int], par défaut (4,)) — La longueur de contexte des fonctionnalités d'image.
  • scale (float ou list[float], par défaut 1.0) — l'échelle de pondération du prompt d'image.
  • attention_op (Callable, facultatif, par défaut None) — L'opérateur de base à utiliser comme opérateur d'attention. Il est recommandé de le définir sur None et 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

< >

( *args**kwargs )

XLAFluxFlashAttnProcessor2_0

classe diffusers.models.attention_processor.XLAFluxFlashAttnProcessor2_0

< >

( *args**kwargs )

Processeur pour implémenter l'attention à point produit mis à l'échelle avec le noyau pallas flash attention si torch_xla est utilisé.

Update on GitHub