Diffusers documentation
Procesador de atención
Procesador de atención
Un procesador de atención es una clase para aplicar diferentes tipos de mecanismos de atención.
AttnProcessor
Procesador predeterminado para realizar cálculos relacionados con la atención.
Procesador para implementar la atención de producto escalar (habilitado de forma predeterminada si está utilizando PyTorch 2.0).
Procesador para realizar cálculos relacionados con la atención con matrices de clave y valor adicionales y aprendibles para el codificador de texto.
Procesador para realizar atención de producto escalar (habilitado de forma predeterminada si está usando PyTorch 2.0), con matrices adicionales de clave y valor aprendibles para el codificador de texto.
Procesador para implementar flash attention usando torch_npu. Torch_npu solo admite los tipos de datos fp16 y bf16. Si se utiliza fp32, se empleará F.scaled_dot_product_attention para el cálculo, pero el efecto de aceleración en la NPU no es significativo.
Procesador para implementar la atención de producto escalar (activado de forma predeterminada si está usando PyTorch 2.0). Utiliza capas de proyección fusionadas. Para los módulos de autoatención, todas las matrices de proyección (es decir, query, key, value) se fusionan. Para los módulos de atención cruzada, las matrices de proyección de key y value se fusionan.
> Esta API es actualmente 🧪 experimental y puede cambiar en el futuro.
Allegro
Procesador para implementar la atención de producto escalar (habilitado de forma predeterminada si está utilizando PyTorch 2.0). Se utiliza en el modelo Allegro. Aplica una capa de normalización y un embebido rotatorio en los vectores de consulta y clave.
AuraFlow
Procesador de atención utilizado típicamente en el procesamiento de Aura Flow.
Procesador de atención utilizado típicamente en el procesamiento de Aura Flow con proyecciones fusionadas.
CogVideoX
Procesador para implementar la atención de producto escalar para el modelo CogVideoX. Aplica un embebido rotacional a los vectores de consulta y clave, pero no incluye normalización espacial.
Procesador para implementar la atención de producto escalar para el modelo CogVideoX. Aplica un embebido rotacional a los vectores de consulta y clave, pero no incluye normalización espacial.
DreamLite
Procesador para implementar la atención de producto escalar con soporte para Grouped Query Attention (GQA / MQA).
Idéntico a AttnProcessor2_0 excepto que la rama de reshape de key/value maneja correctamente attn.kv_heads != attn.heads al hacer reshape de K/V a kv_heads y luego aplicar repeat_interleave hasta attn.heads. Esto es
requerido por el UNet de DreamLite, que combina GQA con qk_norm — una combinación que el AttnProcessor2_0 predeterminado no maneja. SDPA se delega a dispatch_attention_fn para que se pueda usar cualquiera de los
backends de atención de diffusers (SDPA nativo de PyTorch, FlashAttention, etc.).
Custom Diffusion
clase 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 )
Parámetros
- train_kv (
bool, por defectoTrue) — Si se deben entrenar de nuevo las matrices de clave y valor correspondientes a las características del texto. - train_q_out (
bool, por defectoTrue) — Si se deben entrenar nuevas matrices de consulta correspondientes a las características latentes de la imagen. - hidden_size (
int, opcional, valor predeterminadoNone) — El tamaño oculto de la capa de atención. - cross_attention_dim (
int, opcional, valor predeterminadoNone) — El número de canales enencoder_hidden_states. - out_bias (
bool, por defectoTrue) — Si se incluye el parámetro de sesgo entrain_q_out. - dropout (
float, opcional, valor predeterminado 0.0) — La probabilidad de dropout a utilizar.
Procesador para implementar la atención en el método Custom Diffusion.
clase 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 )
Parámetros
- train_kv (
bool, por defectoTrue) — Si se deben entrenar de nuevo las matrices de clave y valor correspondientes a las características del texto. - train_q_out (
bool, por defectoTrue) — Si se deben entrenar nuevas matrices de consulta correspondientes a las características latentes de la imagen. - hidden_size (
int, opcional, valor predeterminadoNone) — El tamaño oculto de la capa de atención. - cross_attention_dim (
int, opcional, valor predeterminadoNone) — El número de canales enencoder_hidden_states. - out_bias (
bool, por defectoTrue) — Si se incluye el parámetro de sesgo entrain_q_out. - dropout (
float, opcional, valor predeterminado 0.0) — La probabilidad de dropout a utilizar.
Procesador para implementar la atención en el método Custom Diffusion utilizando la atención de producto escalar eficiente en memoria de PyTorch 2.0.
clase 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 )
Parámetros
- train_kv (
bool, por defectoTrue) — Si se deben entrenar de nuevo las matrices de clave y valor correspondientes a las características del texto. - train_q_out (
bool, por defectoTrue) — Si se deben entrenar nuevas matrices de consulta correspondientes a las características latentes de la imagen. - hidden_size (
int, opcional, valor predeterminadoNone) — El tamaño oculto de la capa de atención. - cross_attention_dim (
int, opcional, valor predeterminadoNone) — El número de canales enencoder_hidden_states. - out_bias (
bool, por defectoTrue) — Si se incluye el parámetro de sesgo entrain_q_out. - dropout (
float, opcional, valor predeterminado 0.0) — La probabilidad de dropout a utilizar. - attention_op (
Callable, opcional, valor predeterminadoNone) — El operador base que se utilizará como operador de atención. Se recomienda establecerlo enNoney permitir que xFormers elija el mejor operador.
Procesador para implementar atención eficiente en memoria usando xFormers para el método Custom Diffusion.
Flux
Procesador para implementar la atención de producto escalar (habilitado de forma predeterminada si está utilizando PyTorch 2.0).
Hunyuan
Procesador para implementar la atención de producto escalar (habilitado de forma predeterminada si está utilizando PyTorch 2.0). Se utiliza en el modelo HunyuanDiT. Aplica una capa de normalización s y un embebido rotatorio en los vectores de consulta y clave.
Procesador para implementar la atención de producto punto escalado (habilitado de forma predeterminada si está usando PyTorch 2.0) con capas de proyección fusionadas. Esto se utiliza en el modelo HunyuanDiT. Aplica una capa de normalización s y un embebido rotatorio en los vectores de consulta y clave.
Procesador para implementar la atención de producto escalar (habilitado de forma predeterminada si está usando PyTorch 2.0). Se utiliza en el modelo HunyuanDiT. Aplica una capa de normalización y un embebido rotatorio en los vectores de consulta y clave. Esta variante del procesador emplea Pertubed Attention Guidance.
Procesador para implementar la atención de producto escalar (habilitado de forma predeterminada si está usando PyTorch 2.0). Se utiliza en el modelo HunyuanDiT. Aplica una capa de normalización y un embebido rotatorio en los vectores de consulta y clave. Esta variante del procesador emplea Pertubed Attention Guidance.
IdentitySelfAttnProcessor2_0
Procesador para implementar PAG mediante atención de producto escalar (habilitado de forma predeterminada si está utilizando PyTorch 2.0). Referencia de PAG: https://huggingface.co/papers/2403.17377
Procesador para implementar PAG mediante atención de producto escalar (habilitado de forma predeterminada si está utilizando PyTorch 2.0). Referencia de PAG: https://huggingface.co/papers/2403.17377
IP-Adapter
clase diffusers.models.attention_processor.IPAdapterAttnProcessor
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
Parámetros
- hidden_size (
int) — El tamaño oculto de la capa de atención. - cross_attention_dim (
int) — El número de canales enencoder_hidden_states. - num_tokens (
int,tuple[int]olist[int], por defecto(4,)) — La longitud de contexto de las características de la imagen. - scale (
floato listafloat, valor predeterminado 1.0) — la escala de peso del prompt de imagen.
Procesador de atención para múltiples IP-Adapters.
clase diffusers.models.attention_processor.IPAdapterAttnProcessor2_0
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
Parámetros
- hidden_size (
int) — El tamaño oculto de la capa de atención. - cross_attention_dim (
int) — El número de canales enencoder_hidden_states. - num_tokens (
int,tuple[int]olist[int], por defecto(4,)) — La longitud de contexto de las características de la imagen. - scale (
floatolist[float], por defecto 1.0) — la escala de peso del prompt de imagen.
Procesador de atención para IP-Adapter para PyTorch 2.0.
clase diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0
< source >( hidden_size: intip_hidden_states_dim: inthead_dim: inttimesteps_emb_dim: int = 1280scale: float = 0.5 )
Parámetros
- hidden_size (
int) — El número de canales ocultos. - ip_hidden_states_dim (
int) — La dimensión de las características de la imagen. - head_dim (
int) — El número de canales por cabeza. - timesteps_emb_dim (
int, por defecto 1280) — El número de canales de entrada para la incrustación de paso de tiempo. - scale (
float, por defecto 0.5) — Escala de IP-Adapter.
Procesador de atención para IP-Adapter, utilizado típicamente en el procesamiento de las proyecciones de autoatención similares a SD3, con información adicional basada en imágenes y embeddings de timestep.
JointAttnProcessor2_0
Procesador de atención utilizado típicamente en el procesamiento de las proyecciones de autoatención similares a SD3.
Procesador de atención utilizado típicamente en el procesamiento de las proyecciones de autoatención similares a SD3.
Procesador de atención utilizado típicamente en el procesamiento de las proyecciones de autoatención similares a SD3.
Procesador de atención utilizado típicamente en el procesamiento de las proyecciones de autoatención similares a SD3.
LoRA
Procesador para implementar atención con LoRA.
Procesador para implementar la atención con LoRA (habilitado de forma predeterminada si estás usando PyTorch 2.0).
Procesador para implementar atención con LoRA con matrices adicionales de clave y valor aprendibles para el codificador de texto.
Procesador para implementar atención con LoRA usando xFormers.
Lumina-T2X
Procesador para implementar la atención de producto escalar (habilitado de forma predeterminada si está utilizando PyTorch 2.0). Se utiliza en el modelo LuminaNextDiT. Aplica una capa de normalización s y un embebido rotatorio en los vectores de consulta y clave.
Mochi
Procesador de atención utilizado en Mochi.
Procesador de atención utilizado en Mochi VAE.
Sana
Procesador para implementar atención lineal de producto escalar.
Procesador para implementar atención cuadrática multiescala.
Procesador para implementar atención lineal de producto escalar.
Procesador para implementar atención lineal de producto escalar.
Stable Audio
Procesador para implementar la atención de producto escalar (habilitado de forma predeterminada si está utilizando PyTorch 2.0). Se utiliza en el modelo Stable Audio. Aplica la incrustación rotacional en los vectores de consulta y clave, y permite MHA, GQA o MQA.
SlicedAttnProcessor
clase diffusers.models.attention_processor.SlicedAttnProcessor
< source >( slice_size: int )
Procesador para implementar atención segmentada.
clase diffusers.models.attention_processor.SlicedAttnAddedKVProcessor
< source >( slice_size )
Procesador para implementar atención segmentada con matrices de clave y valor adicionales y aprendibles para el codificador de texto.
XFormersAttnProcessor
clase diffusers.models.attention_processor.XFormersAttnProcessor
< source >( attention_op: Callable | None = None )
Parámetros
- attention_op (
Callable, opcional, valor predeterminadoNone) — El operador base que se utilizará como operador de atención. Se recomienda establecerlo enNoney permitir que xFormers elija el mejor operador.
Procesador para implementar atención eficiente en memoria usando xFormers.
clase diffusers.models.attention_processor.XFormersAttnAddedKVProcessor
< source >( attention_op: Callable | None = None )
Parámetros
- attention_op (
Callable, opcional, valor predeterminadoNone) — El operador base que se utilizará como operador de atención. Se recomienda establecerlo enNoney permitir que xFormers elija el mejor operador.
Procesador para implementar atención eficiente en memoria usando xFormers.
XLAFlashAttnProcessor2_0
clase diffusers.models.attention_processor.XLAFlashAttnProcessor2_0
< source >( partition_spec: tuple[str | None, ...] | None = None )
Procesador para implementar la atención de producto escalar con el kernel de pallas flash attention si se usa torch_xla.
XFormersJointAttnProcessor
clase diffusers.models.attention_processor.XFormersJointAttnProcessor
< source >( attention_op: Callable | None = None )
Parámetros
- attention_op (
Callable, opcional, valor predeterminadoNone) — El operador base que se utilizará como operador de atención. Se recomienda establecerlo enNoney permitir que xFormers elija el mejor operador.
Procesador para implementar atención eficiente en memoria usando xFormers.
IPAdapterXFormersAttnProcessor
clase diffusers.models.attention_processor.IPAdapterXFormersAttnProcessor
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0attention_op: Callable | None = None )
Parámetros
- hidden_size (
int) — El tamaño oculto de la capa de atención. - cross_attention_dim (
int) — El número de canales enencoder_hidden_states. - num_tokens (
int,tuple[int]olist[int], por defecto(4,)) — La longitud de contexto de las características de la imagen. - scale (
floatolist[float], por defecto 1.0) — la escala de peso del prompt de imagen. - attention_op (
Callable, opcional, valor predeterminadoNone) — El operador base que se utilizará como operador de atención. Se recomienda establecerlo enNoney permitir que xFormers elija el mejor operador.
Procesador de atención para IP-Adapter que utiliza xFormers.
FluxIPAdapterJointAttnProcessor2_0
clase diffusers.models.attention_processor.FluxIPAdapterJointAttnProcessor2_0
< source >( *args**kwargs )
XLAFluxFlashAttnProcessor2_0
clase diffusers.models.attention_processor.XLAFluxFlashAttnProcessor2_0
< source >( *args**kwargs )
Procesador para implementar la atención de producto escalar con el kernel de pallas flash attention si se usa torch_xla.