# AnyFlowTransformer3DModel

[`AnyFlowPipeline`](../pipelines/anyflow#diffusers.AnyFlowPipeline)で使用される双方向3D Transformerです。v0.35.1のWan2.1バックボーンをベースに、1つの構造変更を加えたものです。具体的には、timestep embedderが``AnyFlowDualTimestepTextImageEmbedding``に置き換えられており、すべてのforward呼び出しにおいて、ソースのtimestep ``t``とターゲットのtimestep ``r``の両方を条件として使用します。これは、[AnyFlow](https://huggingface.co/papers/2605.13724)で導入されたフローマップ $\Phi_{r\leftarrow t}$ を学習するために必要な埋め込みです。論文、著者、および公開されたチェックポイントについては、[`AnyFlowPipeline`](../pipelines/anyflow)のページを参照してください。

チャンク単位の自己回帰（FAR causal）生成には、代わりに[`AnyFlowFARTransformer3DModel`](anyflow_far_transformer3d)を使用してください。

```python
from diffusers import AnyFlowTransformer3DModel

# Bidirectional AnyFlow checkpoint (T2V):
transformer = AnyFlowTransformer3DModel.from_pretrained(
    "nvidia/AnyFlow-Wan2.1-T2V-1.3B-Diffusers", subfolder="transformer"
)
```

## AnyFlowTransformer3DModel[[diffusers.AnyFlowTransformer3DModel]]

#### diffusers.AnyFlowTransformer3DModel[[diffusers.AnyFlowTransformer3DModel]]

```python
diffusers.AnyFlowTransformer3DModel(patch_size: typing.Tuple[int] = (1, 2, 2), num_attention_heads: int = 40, attention_head_dim: int = 128, in_channels: int = 16, out_channels: int = 16, text_dim: int = 4096, freq_dim: int = 256, ffn_dim: int = 13824, num_layers: int = 40, cross_attn_norm: bool = True, eps: float = 1e-06, image_dim: typing.Optional[int] = None, rope_max_seq_len: int = 1024, gate_value: float = 0.25, deltatime_type: str = 'r')
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_anyflow.py#L507)

**パラメータ:**

patch_size (*Tuple[int]*、デフォルトは *(1, 2, 2)*) : 動画埋め込み用の3Dパッチ次元 (t_patch, h_patch, w_patch)。

num_attention_heads (*int*、デフォルトは *40*) : アテンションヘッドの数。

attention_head_dim (*int*、デフォルトは *128*) : 各ヘッドのチャネル数。

in_channels (*int*、デフォルトは *16*) : 入力潜在変数のチャネル数。

out_channels (*int*、デフォルトは *16*) : 出力潜在変数のチャネル数。

text_dim (*int*、デフォルトは *4096*) : テキスト埋め込みの入力次元 (UMT5)。

freq_dim (*int*、デフォルトは *256*) : 正弦波時間埋め込みの次元数。

ffn_dim (*int*、デフォルトは *13824*) : フィードフォワードネットワークの中間次元。

num_layers (*int*、デフォルトは *40*) : Transformer ブロックの数。

cross_attn_norm (*bool*、デフォルトは *True*) : クロスアテンションの正規化を有効にします。

eps (*float*、デフォルトは *1e-6*) : 正規化レイヤー用のエプシロン。

image_dim (*Optional[int]*、*任意*、デフォルトは *None*) : I2V 条件付け用の画像埋め込み次元（元の Wan2.1-I2V モデルでは *1280*）。

rope_max_seq_len (*int*、デフォルトは *1024*) : 回転位置周波数を事前計算するために使用される最大シーケンス長。

gate_value (*float*、デフォルトは *0.25*) : ソースタイムステップ埋め込みとデルタタイムステップ埋め込みの間の混合ゲート（AnyFlow論文の \\(g\\) パラメータ、ステージ1蒸留では0.25に固定）。

deltatime_type (*str*、デフォルトは *'r'*) : `"r"`（delta がターゲットのタイムステップである場合）または `"t-r"`（delta が絶対区間である場合）。

AnyFlowのフローマップサンプリング用の双方向3D Transformer。

アーキテクチャは v0.35.1 の Wan2.1 3D DiT バックボーンをベースにしており、構造的な変更が 1 つあります。タイムステップエンベッダーが `AnyFlowDualTimestepTextImageEmbedding` に置き換えられ、すべての forward 呼び出しにおいてソースタイムステップ `t` とターゲットタイムステップ `r` の両方を条件として使用するようにしました。これは、[AnyFlow](https://huggingface.co/papers/2605.13724) で導入されたフローマップ \\(\Phi_&amp;lcub;r\leftarrow t}\\) を学習するために必要なエンベディングです。

チャンク単位の自己回帰（FAR causal）生成には、代わりに`AnyFlowFARTransformer3DModel`を使用してください。このバリアントは、同じバックボーンの上にFAR causalブロックマスクと圧縮フレームのパッチ埋め込みを追加します。

#### forward[[diffusers.AnyFlowTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: Tensor, r_timestep: Tensor, encoder_hidden_states: Tensor, encoder_hidden_states_image: typing.Optional[torch.Tensor] = None, attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None, return_dict: bool = True)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_anyflow.py#L626)

**パラメータ:**

hidden_states (*torch.Tensor*、形状 *(batch_size, num_frames, num_channels, height, width)*) : 入力動画の潜在変数。

timestep (*torch.Tensor*) : ソース（ノイズの多い）フローマップのタイムステップ *t*。

r_timestep (*torch.Tensor*) : ターゲット（クリーナー）フローマップのタイムステップ *r*。フローマップステップの目的地を定義します。

encoder_hidden_states (*torch.Tensor*、形状 *(batch_size, sequence_len, embed_dims)*) : テキスト条件付け埋め込み。

encoder_hidden_states_image (*torch.Tensor*, *optional*) : 画像条件付け埋め込み。指定された場合、テキストトークンに連結されます。

attention_kwargs (*dict*、*optional*) : [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) の *self.processor* で定義される *AttentionProcessor* に転送される Kwargs。

return_dict (*bool*、*optional*、デフォルトは *True*) : プレーンなタプルではなく、[*~models.transformer_2d.Transformer2DModelOutput*] を返すかどうか。

**戻り値:**

*~models.transformer_2d.Transformer2DModelOutput*（*return_dict*がTrueの場合）、または予測速度テンソルが最初の要素である*tuple*（それ以外の場合）。

双方向フローマップのフォワードパス。`hidden_states` は `(B, F, C, H, W)`（フレームごとの潜在変数）として配置されます。入力は標準的な `patch_embedding`（カーネル = ストライド = `patch_size`）でパッチ化され、得られるフラットなトークンシーケンス全体に対して、グローバルな双方向セルフアテンションによるノイズ除去が行われます。

