Diffusers documentation
Процессор внимания
Процессор внимания
Процессор внимания — это класс для применения различных типов механизмов внимания.
AttnProcessor
Процессор по умолчанию для выполнения вычислений, связанных с механизмом внимания.
Процессор для реализации масштабированного внимания на основе скалярного произведения (включен по умолчанию, если вы используете PyTorch 2.0).
Процессор для выполнения вычислений, связанных с механизмом внимания, с дополнительными обучаемыми матрицами ключей и значений для текстового энкодера.
Процессор для выполнения масштабированного внимания на основе скалярного произведения (включен по умолчанию при использовании PyTorch 2.0), с дополнительными обучаемыми матрицами ключей и значений для текстового энкодера.
Процессор для реализации flash attention с использованием torch_npu. 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.
Процессор внимания, обычно используемый при обработке Aura Flow со слиянием проекций.
CogVideoX
Процессор для реализации масштабированного внимания на основе скалярного произведения для модели CogVideoX. Он применяет вращательное встраивание к векторам запроса и ключа, но не включает пространственную нормализацию.
Процессор для реализации масштабированного внимания на основе скалярного произведения для модели CogVideoX. Он применяет вращательное встраивание к векторам запроса и ключа, но не включает пространственную нормализацию.
DreamLite
Процессор для реализации масштабированного внимания на основе скалярного произведения с поддержкой Grouped Query Attention (GQA / MQA).
Идентичен AttnProcessor2_0, за исключением того, что ветка reshape для ключей/значений корректно обрабатывает случай attn.kv_heads != attn.heads, изменяя размерность K/V до kv_heads, а затем применяя repeat_interleave до 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) — Следует ли обучать новые матрицы ключей и значений, соответствующие текстовым признакам. - 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) — Следует ли обучать новые матрицы ключей и значений, соответствующие текстовым признакам. - 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 с использованием эффективного по памяти масштабированного внимания на основе скалярного произведения в PyTorch 2.0.
класс 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) — Следует ли обучать новые матрицы ключей и значений, соответствующие текстовым признакам. - 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) — Базовый оператор, используемый в качестве оператора внимания. Рекомендуется установить значениеNone, чтобы xFormers самостоятельно выбрал оптимальный оператор.
Процессор для реализации эффективного по памяти внимания с использованием xFormers для метода Custom Diffusion.
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 )
Параметры
- hidden_size (
int) — Размер скрытого слоя механизма внимания. - cross_attention_dim (
int) — Количество каналов вencoder_hidden_states. - num_tokens (
int,tuple[int]orlist[int], по умолчанию(4,)) — Длина контекста для признаков изображения. - scale (
floator listfloat, по умолчанию 1.0) — коэффициент масштабирования веса изображения-промпта.
Процессор внимания для нескольких IP-адаптеров.
класс diffusers.models.attention_processor.IPAdapterAttnProcessor2_0
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
Параметры
- hidden_size (
int) — Размер скрытого слоя механизма внимания. - cross_attention_dim (
int) — Количество каналов вencoder_hidden_states. - num_tokens (
int,tuple[int]orlist[int], по умолчанию(4,)) — Длина контекста для признаков изображения. - scale (
floatилиlist[float], по умолчанию 1.0) — весовое значение масштаба для изображения-промпта.
Процессор внимания для IP-Adapter для PyTorch 2.0.
класс diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0
< source >( hidden_size: intip_hidden_states_dim: inthead_dim: inttimesteps_emb_dim: int = 1280scale: float = 0.5 )
Параметры
- hidden_size (
int) — Количество скрытых каналов. - ip_hidden_states_dim (
int) — Размерность признаков изображения. - head_dim (
int) — Количество каналов в каждой голове. - timesteps_emb_dim (
int, по умолчанию 1280) — Количество входных каналов для эмбеддинга временных шагов. - scale (
float, по умолчанию 0.5) — Масштаб IP-Adapter.
Процессор внимания для IP-Adapter, обычно используемый при обработке проекций само-внимания в моделях типа SD3, с дополнительной информацией на основе изображений и эмбеддингами временных шагов.
JointAttnProcessor2_0
Процессор внимания, обычно используемый при обработке проекций само-внимания в моделях типа SD3.
Процессор внимания, обычно используемый при обработке проекций само-внимания в моделях типа SD3.
Процессор внимания, обычно используемый при обработке проекций само-внимания в моделях типа SD3.
Процессор внимания, обычно используемый при обработке проекций само-внимания в моделях типа SD3.
LoRA
Процессор для реализации внимания с LoRA.
Процессор для реализации внимания с LoRA (включен по умолчанию, если вы используете PyTorch 2.0).
Процессор для реализации внимания с LoRA с дополнительными обучаемыми матрицами ключей и значений для текстового энкодера.
Процессор для реализации внимания с использованием LoRA и xFormers.
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) — Базовый оператор, используемый в качестве оператора внимания. Рекомендуется установить значениеNone, чтобы xFormers самостоятельно выбрал оптимальный оператор.
Процессор для реализации экономного по памяти внимания с использованием xFormers.
класс diffusers.models.attention_processor.XFormersAttnAddedKVProcessor
< source >( attention_op: Callable | None = None )
Параметры
- attention_op (
Callable, необязательный, по умолчаниюNone) — Базовый оператор, используемый в качестве оператора внимания. Рекомендуется установить значениеNone, чтобы xFormers самостоятельно выбрал оптимальный оператор.
Процессор для реализации экономного по памяти внимания с использованием xFormers.
XLAFlashAttnProcessor2_0
класс diffusers.models.attention_processor.XLAFlashAttnProcessor2_0
< source >( partition_spec: tuple[str | None, ...] | None = None )
Процессор для реализации масштабированного внимания на основе скалярного произведения с ядром pallas flash attention при использовании torch_xla.
XFormersJointAttnProcessor
класс diffusers.models.attention_processor.XFormersJointAttnProcessor
< source >( attention_op: Callable | None = None )
Параметры
- attention_op (
Callable, необязательный, по умолчаниюNone) — Базовый оператор, используемый в качестве оператора внимания. Рекомендуется установить значение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]orlist[int], по умолчанию(4,)) — Длина контекста для признаков изображения. - scale (
floatилиlist[float], по умолчанию 1.0) — весовое значение масштаба для изображения-промпта. - attention_op (
Callable, необязательный, по умолчаниюNone) — Базовый оператор, используемый в качестве оператора внимания. Рекомендуется установить значениеNone, чтобы xFormers самостоятельно выбрал оптимальный оператор.
Процессор внимания для IP-Adapter с использованием xFormers.
FluxIPAdapterJointAttnProcessor2_0
класс diffusers.models.attention_processor.FluxIPAdapterJointAttnProcessor2_0
< source >( *args**kwargs )
XLAFluxFlashAttnProcessor2_0
класс diffusers.models.attention_processor.XLAFluxFlashAttnProcessor2_0
< source >( *args**kwargs )
Процессор для реализации масштабированного внимания на основе скалярного произведения с ядром pallas flash attention при использовании torch_xla.