Diffusers documentation
Processador de Atenção
Processador de Atenção
Um processador de atenção é uma classe para aplicar diferentes tipos de mecanismos de atenção.
AttnProcessor
Processador padrão para realizar cálculos relacionados à atenção.
Processador para implementar atenção de produto escalar (ativado por padrão se você estiver usando PyTorch 2.0).
Processador para realizar cálculos relacionados à atenção com matrizes de chave e valor adicionais e aprendíveis para o codificador de texto.
Processador para executar atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0), com matrizes de chave e valor adicionais aprendíveis para o codificador de texto.
Processador para implementar flash attention usando torch_npu. O torch_npu suporta apenas os tipos de dados fp16 e bf16. Se fp32 for usado, F.scaled_dot_product_attention será usado para o cálculo, mas o efeito de aceleração na NPU não é significativo.
Processador para implementar atenção de produto escalar escalonado (habilitado por padrão se você estiver usando PyTorch 2.0). Ele usa camadas de projeção fundidas. Para os módulos de autoatenção, todas as matrizes de projeção (ou seja, query, key, value) são fundidas. Para os módulos de atenção cruzada, as matrizes de projeção de key e value são fundidas.
> Esta API é atualmente 🧪 experimental e pode mudar no futuro.
Allegro
Processador para implementar atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0). Isso é usado no modelo Allegro. Ele aplica uma camada de normalização e incorporação rotacional nos vetores de consulta e chave.
AuraFlow
Processador de atenção usado tipicamente no processamento do Aura Flow.
Processador de atenção usado tipicamente no processamento do Aura Flow com projeções fundidas.
CogVideoX
Processador para implementar a atenção de produto escalar (scaled dot-product attention) para o modelo CogVideoX. Ele aplica um incorporação rotacional (rotary embedding) nos vetores de consulta e chave, mas não inclui normalização espacial.
Processador para implementar a atenção de produto escalar (scaled dot-product attention) para o modelo CogVideoX. Ele aplica um incorporação rotacional (rotary embedding) nos vetores de consulta e chave, mas não inclui normalização espacial.
DreamLite
Processador para implementar atenção de produto escalar com suporte a Grouped Query Attention (GQA / MQA).
Idêntico ao AttnProcessor2_0, exceto que o ramo de reshape de chave/valor trata corretamente attn.kv_heads != attn.heads ao fazer o reshape de K/V para kv_heads e, em seguida, aplicando repeat_interleave até attn.heads. Isso é
necessário para o DreamLite UNet, que combina GQA com qk_norm — uma combinação que o AttnProcessor2_0 padrão não trata. O SDPA é delegado ao dispatch_attention_fn, permitindo o uso de qualquer um dos
backends de atenção do diffusers (SDPA nativo do PyTorch, FlashAttention, etc.).
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 )
Parâmetros
- train_kv (
bool, padrãoTrue) — Se treinar novas matrizes de chave e valor correspondentes aos recursos de texto. - train_q_out (
bool, padrãoTrue) — Se treinar novas matrizes de consulta correspondentes aos recursos latentes da imagem. - hidden_size (
int, opcional, padrãoNone) — O tamanho oculto da camada de atenção. - cross_attention_dim (
int, opcional, padrãoNone) — O número de canais emencoder_hidden_states. - out_bias (
bool, padrãoTrue) — Se deve incluir o parâmetro de viés emtrain_q_out. - dropout (
float, opcional, padrão 0.0) — A probabilidade de dropout a ser utilizada.
Processador para implementar a atenção no método 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 )
Parâmetros
- train_kv (
bool, padrãoTrue) — Se treinar novas matrizes de chave e valor correspondentes aos recursos de texto. - train_q_out (
bool, padrãoTrue) — Se treinar novas matrizes de consulta correspondentes aos recursos latentes da imagem. - hidden_size (
int, opcional, padrãoNone) — O tamanho oculto da camada de atenção. - cross_attention_dim (
int, opcional, padrãoNone) — O número de canais emencoder_hidden_states. - out_bias (
bool, padrãoTrue) — Se deve incluir o parâmetro de viés emtrain_q_out. - dropout (
float, opcional, padrão 0.0) — A probabilidade de dropout a ser utilizada.
Processor para implementar atenção para o método Custom Diffusion usando a atenção de produto escalar eficiente em memória do 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 )
Parâmetros
- train_kv (
bool, padrãoTrue) — Se treinar novas matrizes de chave e valor correspondentes aos recursos de texto. - train_q_out (
bool, padrãoTrue) — Se treinar novas matrizes de consulta correspondentes aos recursos latentes da imagem. - hidden_size (
int, opcional, padrãoNone) — O tamanho oculto da camada de atenção. - cross_attention_dim (
int, opcional, padrãoNone) — O número de canais emencoder_hidden_states. - out_bias (
bool, padrãoTrue) — Se deve incluir o parâmetro de viés emtrain_q_out. - dropout (
float, opcional, padrão 0.0) — A probabilidade de dropout a ser utilizada. - attention_op (
Callable, opcional, padrãoNone) — O operador base a ser usado como operador de atenção. Recomenda-se definir comoNonee permitir que o xFormers escolha o melhor operador.
Processador para implementar atenção eficiente em memória usando xFormers para o método Custom Diffusion.
Flux
Processador para implementar atenção de produto escalar (ativado por padrão se você estiver usando PyTorch 2.0).
Hunyuan
Processador para implementar atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0). Isso é usado no modelo HunyuanDiT. Ele aplica uma camada de normalização s e incorporação rotacional nos vetores de consulta e chave.
Processador para implementar atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0) com camadas de projeção fundidas. Isso é usado no modelo HunyuanDiT. Ele aplica uma camada de normalização s e incorporação rotacional nos vetores de consulta e chave.
Processador para implementar atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0). Isso é usado no modelo HunyuanDiT. Ele aplica uma camada de normalização e incorporação rotacional nos vetores de consulta e chave. Esta variante do processador emprega Pertubed Attention Guidance.
Processador para implementar atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0). Isso é usado no modelo HunyuanDiT. Ele aplica uma camada de normalização e incorporação rotacional nos vetores de consulta e chave. Esta variante do processador emprega Pertubed Attention Guidance.
IdentitySelfAttnProcessor2_0
Processador para implementar PAG usando atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0). Referência de PAG: https://huggingface.co/papers/2403.17377
Processador para implementar PAG usando atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0). Referência de 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 )
Parâmetros
- hidden_size (
int) — O tamanho oculto da camada de atenção. - cross_attention_dim (
int) — O número de canais emencoder_hidden_states. - num_tokens (
int,tuple[int]oulist[int], padrão(4,)) — O comprimento do contexto dos recursos da imagem. - scale (
floatou listafloat, padrão 1.0) — a escala de peso do prompt de imagem.
Processador de atenção para múltiplos IP-Adapters.
classe diffusers.models.attention_processor.IPAdapterAttnProcessor2_0
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
Parâmetros
- hidden_size (
int) — O tamanho oculto da camada de atenção. - cross_attention_dim (
int) — O número de canais emencoder_hidden_states. - num_tokens (
int,tuple[int]oulist[int], padrão(4,)) — O comprimento do contexto dos recursos da imagem. - scale (
floatoulist[float], padrão 1.0) — a escala de peso do prompt de imagem.
Processador de atenção para IP-Adapter para 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 )
Parâmetros
- hidden_size (
int) — O número de canais ocultos. - ip_hidden_states_dim (
int) — A dimensão dos recursos da imagem. - head_dim (
int) — O número de canais de cabeçalho. - timesteps_emb_dim (
int, padrão 1280) — O número de canais de entrada para a incorporação de passo de tempo. - scale (
float, padrão 0.5) — Escala do IP-Adapter.
Processador de atenção para IP-Adapter usado tipicamente no processamento das projeções de autoatenção semelhantes às do SD3, com informações adicionais baseadas em imagem e incorporações de passo de tempo.
JointAttnProcessor2_0
Processador de atenção usado tipicamente no processamento das projeções de autoatenção semelhantes às do SD3.
Processador de atenção usado tipicamente no processamento das projeções de autoatenção semelhantes às do SD3.
Processador de atenção usado tipicamente no processamento das projeções de autoatenção semelhantes às do SD3.
Processador de atenção usado tipicamente no processamento das projeções de autoatenção semelhantes às do SD3.
LoRA
Processador para implementar atenção com LoRA.
Processador para implementar atenção com LoRA (habilitado por padrão se você estiver usando PyTorch 2.0).
Processador para implementar atenção com LoRA com matrizes de chave e valor adicionais e aprendíveis para o codificador de texto.
Processador para implementar atenção com LoRA usando xFormers.
Lumina-T2X
Processador para implementar atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0). Isso é usado no modelo LuminaNextDiT. Ele aplica uma camada de normalização s e incorporação rotacional nos vetores de consulta e chave.
Mochi
Processador de atenção usado no Mochi.
Processador de atenção usado no Mochi VAE.
Sana
Processador para implementar atenção linear de produto escalar escalonado.
Processador para implementar atenção quadrática multiescala.
Processador para implementar atenção linear de produto escalar escalonado.
Processador para implementar atenção linear de produto escalar escalonado.
Stable Audio
Processador para implementar atenção de produto escalar (habilitado por padrão se você estiver usando PyTorch 2.0). Isso é usado no modelo Stable Audio. Ele aplica incorporação rotacional nos vetores de consulta e chave, e permite MHA, GQA ou MQA.
SlicedAttnProcessor
classe diffusers.models.attention_processor.SlicedAttnProcessor
< source >( slice_size: int )
Processador para implementar atenção fatiada.
classe diffusers.models.attention_processor.SlicedAttnAddedKVProcessor
< source >( slice_size )
Processador para implementar atenção fatiada com matrizes de chave e valor adicionais e aprendíveis para o codificador de texto.
XFormersAttnProcessor
classe diffusers.models.attention_processor.XFormersAttnProcessor
< source >( attention_op: Callable | None = None )
Parâmetros
- attention_op (
Callable, opcional, padrãoNone) — O operador base a ser usado como operador de atenção. Recomenda-se definir comoNonee permitir que o xFormers escolha o melhor operador.
Processador para implementar atenção eficiente em memória usando xFormers.
classe diffusers.models.attention_processor.XFormersAttnAddedKVProcessor
< source >( attention_op: Callable | None = None )
Parâmetros
- attention_op (
Callable, opcional, padrãoNone) — O operador base a ser usado como operador de atenção. Recomenda-se definir comoNonee permitir que o xFormers escolha o melhor operador.
Processador para implementar atenção eficiente em memória usando xFormers.
XLAFlashAttnProcessor2_0
classe diffusers.models.attention_processor.XLAFlashAttnProcessor2_0
< source >( partition_spec: tuple[str | None, ...] | None = None )
Processador para implementar atenção de produto escalar com o kernel pallas flash attention ao usar torch_xla.
XFormersJointAttnProcessor
classe diffusers.models.attention_processor.XFormersJointAttnProcessor
< source >( attention_op: Callable | None = None )
Parâmetros
- attention_op (
Callable, opcional, padrãoNone) — O operador base a ser usado como operador de atenção. Recomenda-se definir comoNonee permitir que o xFormers escolha o melhor operador.
Processador para implementar atenção eficiente em memória usando xFormers.
IPAdapterXFormersAttnProcessor
classe 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) — O tamanho oculto da camada de atenção. - cross_attention_dim (
int) — O número de canais emencoder_hidden_states. - num_tokens (
int,tuple[int]oulist[int], padrão(4,)) — O comprimento do contexto dos recursos da imagem. - scale (
floatoulist[float], padrão 1.0) — a escala de peso do prompt de imagem. - attention_op (
Callable, opcional, padrãoNone) — O operador base a ser usado como operador de atenção. Recomenda-se definir comoNonee permitir que o xFormers escolha o melhor operador.
Processador de atenção para IP-Adapter usando 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 )
Processador para implementar atenção de produto escalar com o kernel pallas flash attention ao usar torch_xla.