Diffusers documentation
アテンションプロセッサ
アテンションプロセッサ
Attention processorは、異なるタイプのattentionメカニズムを適用するためのクラスです。
AttnProcessor
注意関連の計算を実行するためのデフォルトのプロセッサ。
PyTorch 2.0 を使用している場合、デフォルトで有効になります。
テキストエンコーダー用の追加の学習可能なキー行列とバリュー行列を用いて、アテンション関連の計算を実行するプロセッサ。
PyTorch 2.0 を使用している場合、デフォルトで有効になります。テキストエンコーダー用に追加の学習可能なキー行列とバリュー行列を備えた、スケーリングドットプロダクトアテンションを実行するためのプロセッサです。
torch_npu を使用してフラッシュアテンションを実装するためのプロセッサです。Torch_npu は fp16 と bf16 のデータ型のみをサポートしています。fp32 を使用すると、計算には F.scaled_dot_product_attention が使用されますが、NPU における高速化効果は顕著ではありません。
スケーリングドットプロダクトアテンションを実装するためのプロセッサです(PyTorch 2.0 を使用している場合、デフォルトで有効になります)。フュージョンされた投影層を使用します。自己アテンションモジュールでは、すべての投影行列(つまり、クエリ、キー、バリュー)がフュージョンされます。クロスアテンションモジュールでは、キーとバリューの投影行列がフュージョンされます。
> このAPIは現在🧪実験的な性質を持っており、将来変更される可能性があります。
Allegro
PyTorch 2.0 を使用している場合、デフォルトで有効になります。これは Allegro モデルで使用されます。クエリベクトルとキーベクトルに対して、正規化レイヤーとロータリー埋め込みを適用します。
AuraFlow
Aura Flowの処理で通常使用されるAttentionプロセッサ。
Attention processorは、通常、融合投影(fused projections)を伴うAura Flowの処理で使用されます。
CogVideoX
CogVideoXモデルのスケーリングドットプロダクトアテンションを実装するためのプロセッサです。クエリベクトルとキーベクトルにロータリー埋め込みを適用しますが、空間正規化は含まれません。
CogVideoXモデルのスケーリングドットプロダクトアテンションを実装するためのプロセッサです。クエリベクトルとキーベクトルにロータリー埋め込みを適用しますが、空間正規化は含まれません。
DreamLite
Grouped Query Attention (GQA / MQA) 対応のスケーリングドットプロダクトアテンションを実装するためのプロセッサ。
AttnProcessor2_0 と同一ですが、キー/バリューのリシェイプ分岐が attn.kv_heads != attn.heads を正しく処理するように修正されています。具体的には、K/V を kv_heads にリシェイプし、その後 repeat_interleave を使用して attn.heads まで複製します。これは、GQA と qk_norm を組み合わせる DreamLite UNet によって必要とされる処理であり、デフォルトの 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 の確率です。
PyTorch 2.0のメモリ効率の高いスケーリングドットプロダクトアテンションを使用して、Custom Diffusion手法のアテンションを実装するためのプロセッサ。
クラス 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 が最適なオペレーターを選択できるようにすることを推奨します。
Custom Diffusion 手法において xFormers を使用してメモリ効率の高いアテンションを実装するためのプロセッサ。
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
PyTorch 2.0 を使用している場合、デフォルトで有効になります。スケーリングドットプロダクトアテンションを用いた PAG の実装を行うプロセッサ。 PAG の参考文献: https://huggingface.co/papers/2403.17377
PyTorch 2.0 を使用している場合、デフォルトで有効になります。スケーリングドットプロダクトアテンションを用いた PAG の実装を行うプロセッサ。 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 )
Multiple IP-Adapters用のAttentionプロセッサ。
クラス diffusers.models.attention_processor.IPAdapterAttnProcessor2_0
< source >( hidden_sizecross_attention_dim = Nonenum_tokens = (4,)scale = 1.0 )
PyTorch 2.0 用の IP-Adapter 向けの Attention プロセッサ。
クラス diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0
< source >( hidden_size: intip_hidden_states_dim: inthead_dim: inttimesteps_emb_dim: int = 1280scale: float = 0.5 )
IP-Adapterで使用されるアテンションプロセッサ。通常、SD3系の自己アテンションの射影処理に使用され、追加の画像ベースの情報とタイムステップ埋め込みを伴います。
JointAttnProcessor2_0
SD3系の自己注意投影の処理に通常使用されるAttentionプロセッサ。
SD3系の自己注意投影の処理に通常使用されるAttentionプロセッサ。
SD3系の自己注意投影の処理に通常使用されるAttentionプロセッサ。
SD3系の自己注意投影の処理に通常使用されるAttentionプロセッサ。
LoRA
LoRAによるアテンションを実装するためのプロセッサ。
LoRAによるアテンションを実装するためのプロセッサ(PyTorch 2.0を使用している場合、デフォルトで有効になります)。
テキストエンコーダー用の、追加の学習可能なキー行列とバリュー行列を備えたLoRAによるアテンションを実装するためのプロセッサ。
xFormers を使用して LoRA によるアテンションを実装するためのプロセッサ。
Lumina-T2X
PyTorch 2.0 を使用している場合、デフォルトで有効になります。これは LuminaNextDiT モデルで使用されます。クエリベクトルとキーベクトルに s 正規化レイヤーとロータリー埋め込みを適用します。
Mochi
Mochiで使用されるAttentionプロセッサ。
Mochi VAEで使用されるAttentionプロセッサ。
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 )
torch_xlaを使用する場合、pallas flash attentionカーネルを用いたスケーリングドットプロダクトアテンションを実装するためのプロセッサ。
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]またはlist[int]、デフォルトは(4,)) — 画像特徴のコンテキスト長です。 - scale (
floatまたはlist[float]、デフォルトは 1.0) — 画像プロンプトの重みスケール。 - attention_op (
Callable、省略可能、デフォルトはNone) — アテンション演算子として使用するベースの オペレーターです。Noneに設定し、xFormers が最適なオペレーターを選択できるようにすることを推奨します。
xFormers を使用した IP-Adapter 用のアテンションプロセッサ。
FluxIPAdapterJointAttnProcessor2_0
クラス diffusers.models.attention_processor.FluxIPAdapterJointAttnProcessor2_0
< source >( *args**kwargs )
XLAFluxFlashAttnProcessor2_0
torch_xlaを使用する場合、pallas flash attentionカーネルを用いたスケーリングドットプロダクトアテンションを実装するためのプロセッサ。