# AnyFlowTransformer3DModel

Transformer 3D hai chiều được sử dụng bởi [`AnyFlowPipeline`](../pipelines/anyflow#diffusers.AnyFlowPipeline). Đây là backbone Wan2.1 phiên bản v0.35.1 với một thay đổi cấu trúc: bộ nhúng bước thời gian được thay thế bằng ``AnyFlowDualTimestepTextImageEmbedding``, do đó mỗi lần gọi forward đều điều kiện hóa trên cả bước thời gian nguồn ``t`` và bước thời gian đích ``r``. Đây là phép nhúng cần thiết để học bản đồ dòng chảy $\Phi_{r\leftarrow t}$ được giới thiệu trong [AnyFlow](https://huggingface.co/papers/2605.13724). Xem trang [`AnyFlowPipeline`](../pipelines/anyflow) để biết thêm về bài báo, tác giả và các checkpoint đã phát hành.

Để tạo nội dung tự hồi quy theo từng khối (FAR causal), hãy sử dụng [`AnyFlowFARTransformer3DModel`](anyflow_far_transformer3d) thay thế.

```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')
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_anyflow.py#L507)

**Tham số:**

patch_size (*Tuple[int]*, mặc định là *(1, 2, 2)*) : Kích thước patch 3D cho nhúng video (t_patch, h_patch, w_patch).

num_attention_heads (*int*, mặc định là *40*) : Số lượng đầu chú ý.

attention_head_dim (*int*, mặc định là *128*) : Số lượng kênh trong mỗi head.

in_channels (*int*, mặc định là *16*) : Số kênh trong latent đầu vào.

out_channels (*int*, mặc định là *16*) : Số lượng kênh trong latent đầu ra.

text_dim (*int*, mặc định là *4096*) : Kích thước chiều đầu vào cho nhúng văn bản (UMT5).

freq_dim (*int*, mặc định là *256*) : Kích thước cho các nhúng thời gian hình sin.

ffn_dim (*int*, mặc định là *13824*) : Kích thước chiều trung gian trong mạng feed-forward.

num_layers (*int*, mặc định là *40*) : Số lượng khối transformer.

cross_attn_norm (*bool*, mặc định là *True*) : Bật chuẩn hóa cross-attention.

eps (*float*, mặc định là *1e-6*) : Epsilon cho các lớp chuẩn hóa.

image_dim (*Optional[int]*, *optional*, mặc định là *None*) : Kích thước embedding ảnh cho điều kiện I2V (*1280* cho mô hình Wan2.1-I2V gốc).

rope_max_seq_len (*int*, mặc định là *1024*) : Độ dài chuỗi tối đa được sử dụng để tiền xử lý tần số vị trí quay (rotary position frequencies).

gate_value (*float*, mặc định là *0.25*) : Cổng trộn giữa các embedding của bước nguồn và bước delta (tham số \\(g\\) trong bài báo AnyFlow, được cố định ở 0.25 trong giai đoạn 1 của quá trình chưng cất).

deltatime_type (*str*, mặc định là *'r'*) : Hoặc là `"r"` (delta là bước thời gian đích) hoặc `"t-r"` (delta là khoảng tuyệt đối).

Transformer 3D hai chiều cho lấy mẫu flow-map của AnyFlow.

Kiến trúc là khung xương v0.35.1 Wan2.1 3D DiT với một thay đổi cấu trúc: bộ nhúng bước thời gian được thay thế bằng `AnyFlowDualTimestepTextImageEmbedding` để mỗi lần gọi forward đều điều kiện hóa trên cả bước thời gian nguồn `t` và bước thời gian đích `r`. Đây là phép nhúng cần thiết để học bản đồ dòng \\(\Phi_&amp;lcub;r\leftarrow t}\\) được giới thiệu trong [AnyFlow](https://huggingface.co/papers/2605.13724).

Để tạo nội dung theo kiểu tự hồi quy từng khối (FAR causal), hãy dùng `AnyFlowFARTransformer3DModel` thay thế; biến thể này bổ sung khối mask nhân quả FAR và nhúng patch khung nén trên cùng một backbone.

#### 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)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_anyflow.py#L626)

**Tham số:**

hidden_states (*torch.Tensor* có hình dạng *(batch_size, num_frames, num_channels, height, width)*) : Latent của video đầu vào.

timestep (*torch.Tensor*) : Bước thời gian *t* của bản đồ luồng nguồn (nhiễu hơn).

r_timestep (*torch.Tensor*) : Bước thời gian (timestep) *r* của flow-map đích (cleaner); xác định điểm đến của bước flow-map.

encoder_hidden_states (*torch.Tensor* có hình dạng *(batch_size, sequence_len, embed_dims)*) : Các embedding điều kiện văn bản.

encoder_hidden_states_image (*torch.Tensor*, *optional*) : Các embedding điều kiện theo ảnh; được nối trước các token văn bản khi được cung cấp.

attention_kwargs (*dict*, *optional*) : Các tham số kwargs được chuyển tiếp đến *AttentionProcessor* như đã định nghĩa dưới *self.processor* trong [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

return_dict (*bool*, *optional*, mặc định là *True*) : Có nên trả về một [*~models.transformer_2d.Transformer2DModelOutput*] thay vì một tuple thông thường hay không.

**Trả về:**

[*~models.transformer_2d.Transformer2DModelOutput*] nếu *return_dict* là True, ngược lại là một *tuple* mà phần tử đầu tiên là tensor vận tốc dự đoán.

Lượt truyền tiến của flow-map hai chiều. `hidden_states` được bố trí theo `(B, F, C, H, W)` (latent theo từng khung hình). Đầu vào được chia thành các patch bằng `patch_embedding` chuẩn (kernel = stride = `patch_size`) và được khử nhiễu bằng self-attention toàn cục hai chiều trên chuỗi token phẳng thu được.

