Diffusers documentation

PixArtTransformer2DModel

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

PixArtTransformer2DModel

PixArt-AlphaおよびPixArt-Sigmaの画像類似データ向けのTransformerモデル。

PixArtTransformer2DModel

class diffusers.PixArtTransformer2DModel

< >

( num_attention_heads: int = 16attention_head_dim: int = 72in_channels: int = 4out_channels: int | None = 8num_layers: int = 28dropout: float = 0.0norm_num_groups: int = 32cross_attention_dim: int | None = 1152attention_bias: bool = Truesample_size: int = 128patch_size: int = 2activation_fn: str = 'gelu-approximate'num_embeds_ada_norm: int | None = 1000upcast_attention: bool = Falsenorm_type: str = 'ada_norm_single'norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = Noneuse_additional_conditions: bool | None = Nonecaption_channels: int | None = Noneattention_type: str | None = 'default' )

パラメータ

  • num_attention_heads (int, 任意、デフォルトは 16) — マルチヘッドアテンションに使用するヘッド数。
  • attention_head_dim (int, 任意、デフォルトは 72) — 各ヘッドのチャネル数。
  • in_channels (int, デフォルトは 4) — 入力データのチャネル数。
  • out_channels (int, optional) — 出力のチャネル数。入力のチャネル数と異なる場合は、このパラメータを指定してください。
  • num_layers (int, 任意、デフォルトは 28) — 使用する Transformer ブロックの層数。
  • dropout (float, 任意、デフォルトは 0.0) — Transformer ブロック内で使用する dropout の確率。
  • norm_num_groups (int, 任意、デフォルトは 32) — Transformer ブロック内のグループ正規化におけるグループ数。
  • cross_attention_dim (int, 任意) — クロスアテンション層の次元数です。通常、エンコーダーの隠れ層の次元数と一致します。
  • attention_bias (bool, 任意、デフォルトは True) — Transformer ブロックの attention に bias パラメータを含めるかどうかを設定します。
  • sample_size (int, デフォルトは 128) — 潜在画像の幅です。このパラメータは学習中に固定されます。
  • patch_size (int, デフォルトは 2) — モデルが処理するパッチのサイズです。シーケンスでないデータを扱うアーキテクチャに関連します。
  • activation_fn (str, optional, デフォルトは “gelu-approximate”) — Transformer ブロック内のフィードフォワードネットワークで使用する活性化関数。
  • num_embeds_ada_norm (int, optional, デフォルト値は 1000) — AdaLayerNorm に使用される埋め込みの数です。学習中に固定され、推論時の最大デノイジングステップ数に影響します。
  • upcast_attention (bool, optional, デフォルトは False) — true の場合、パフォーマンスの向上を目的として、attention メカニズムの次元をアップキャストします。
  • norm_type (str, optional, defaults to “ada_norm_zero”) — 使用する正規化の種類を指定します。‘ada_norm_zero’ を指定できます。
  • norm_elementwise_affine (bool, optional, デフォルトは False) — True の場合、正規化レイヤーで要素ごとのアフィンパラメータを有効にします。
  • norm_eps (float, optional, デフォルトは 1e-6) — 正規化レイヤーの分母に追加される小さな定数で、ゼロ除算を防ぐために使用されます。
  • interpolation_scale (int, 任意) — 位置埋め込みを補間する際に使用するスケール係数。
  • use_additional_conditions (bool, 任意) — 追加の条件を入力として使用するかどうか。
  • attention_type (str, 任意, デフォルトは “default”) — 使用するアテンション機構の種類。
  • caption_channels (int, 任意、デフォルトは None) — キャプションの埋め込みを射影するために使用するチャネル数。
  • use_linear_projection (bool, 任意、デフォルトは False) — 非推奨の引数です。将来のバージョンで削除されます。
  • num_vector_embeds (bool, 任意、デフォルトは False) — 非推奨の引数です。将来のバージョンで削除されます。

PixArt モデルファミリーで導入された 2D Transformer モデル(https://huggingface.co/papers/2310.00426、https://huggingface.co/papers/2403.04692)。

forward

< >

( hidden_states: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Nonetimestep: typing.Optional[torch.LongTensor] = Noneadded_cond_kwargs: dict = Nonecross_attention_kwargs: dict = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )

パラメータ

  • hidden_states (torch.FloatTensor、形状 (batch size, channel, height, width)) — 入力となる hidden_states。
  • encoder_hidden_states (torch.FloatTensor、shape (batch size, sequence len, embed dims)、任意) — クロスアテンション層用の条件付きエンベディングです。指定されない場合、クロスアテンションはデフォルトでセルフアテンションになります。
  • timestep (torch.LongTensor, 任意) — デノイジングステップを示すために使用します。AdaLayerNorm に埋め込みとして適用される任意のタイムステップです。
  • added_cond_kwargs — (dict[str, Any]、任意): 入力として使用される追加の条件。
  • cross_attention_kwargs ( dict[str, Any]、省略可) — 指定された場合、diffusers.models.attention_processor で定義されている self.processor 配下の AttentionProcessor に渡される kwargs の辞書です。
  • attention_mask ( torch.Tensor, 任意) — encoder_hidden_states に適用される、形状が (batch, key_tokens) のアテンションマスクです。1 の場合はマスクが保持され、0 の場合は破棄されます。マスクはバイアスに変換され、「破棄」対象のトークンに対応するアテンションスコアに大きな負の値が加算されます。
  • encoder_attention_mask ( torch.Tensor, 省略可) — に適用されるクロスアテンションマスク encoder_hidden_states. サポートされる形式は2つです:
    • (batch, sequence_length) のマスク。True = 保持、False = 破棄。
    • Bias (batch, 1, sequence_length) 0 = 保持、-10000 = 破棄。

    ndim == 2の場合: マスクとして解釈され、上記の形式に一致するバイアスに変換されます。このバイアスはクロスアテンションスコアに追加されます。

  • return_dict (bool、任意、デフォルトは True) — プレーンなタプルではなく UNet2DConditionOutput を返すかどうか。

PixArtTransformer2DModelのforwardメソッドです。

fuse_qkv_projections

< >

( )

融合された QKV 投影を有効にします。自己注意モジュールでは、すべての投影行列(つまり、クエリ、キー、バリュー)が融合されます。相互注意モジュールでは、キーとバリューの投影行列が融合されます。

> このAPIは🧪実験的です。

set_default_attn_processor

< >

( )

カスタムアテンションプロセッサを無効にし、デフォルトのアテンション実装を設定します。

PixArtのデフォルトモデルには特殊なアテンションプロセッサが含まれていないため、AttnProcessor()をそのまま使用して問題ありません。

unfuse_qkv_projections

< >

( )

有効化されている場合、融合された QKV 投影を無効にします。

> このAPIは🧪実験的です。

Update on GitHub