# HunyuanVideoTransformer3DModel

Một mô hình Diffusion Transformer cho dữ liệu dạng video 3D đã được giới thiệu trong [HunyuanVideo: A Systematic Framework For Large Video Generative Models](https://huggingface.co/papers/2412.03603) của Tencent.

Mô hình có thể được tải bằng đoạn mã sau.

```python
from diffusers import HunyuanVideoTransformer3DModel

transformer = HunyuanVideoTransformer3DModel.from_pretrained("hunyuanvideo-community/HunyuanVideo", subfolder="transformer", dtype=torch.bfloat16)
```

## HunyuanVideoTransformer3DModel[[diffusers.HunyuanVideoTransformer3DModel]]

#### diffusers.HunyuanVideoTransformer3DModel[[diffusers.HunyuanVideoTransformer3DModel]]

```python
diffusers.HunyuanVideoTransformer3DModel(in_channels: int = 16, out_channels: int = 16, num_attention_heads: int = 24, attention_head_dim: int = 128, num_layers: int = 20, num_single_layers: int = 40, num_refiner_layers: int = 2, mlp_ratio: float = 4.0, patch_size: int = 2, patch_size_t: int = 1, qk_norm: str = 'rms_norm', guidance_embeds: bool = True, text_embed_dim: int = 4096, pooled_projection_dim: int = 768, rope_theta: float = 256.0, rope_axes_dim: tuple[int, ...] = (16, 56, 56), image_condition_type: str | None = None)
```

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

**Tham số:**

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

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

num_attention_heads (`int`, mặc định là `24`) : Số lượng đầu (heads) được sử dụng cho cơ chế chú ý đa đầu (multi-head attention).

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

num_layers (`int`, mặc định là `20`) : Số lượng lớp của các khối dual-stream cần sử dụng.

num_single_layers (`int`, mặc định là `40`) : Số lượng lớp của các khối single-stream cần sử dụng.

num_refiner_layers (`int`, mặc định là `2`) : Số lượng lớp của các khối refiner cần sử dụng.

mlp_ratio (`float`, mặc định là `4.0`) : Tỷ lệ giữa kích thước lớp ẩn và kích thước đầu vào trong mạng feedforward.

patch_size (`int`, mặc định là `2`) : Kích thước của các patch không gian được sử dụng trong lớp nhúng patch.

patch_size_t (`int`, mặc định là `1`) : Kích thước của các patch thời gian (temporal patches) được sử dụng trong lớp nhúng patch (patch embedding layer).

qk_norm (`str`, mặc định là `rms_norm`) : Phương pháp chuẩn hóa được sử dụng cho các phép chiếu query và key trong các lớp attention.

guidance_embeds (`bool`, mặc định là `True`) : Có sử dụng guidance embeddings trong mô hình hay không.

text_embed_dim (`int`, mặc định là `4096`) : Kích thước chiều đầu vào của các vector nhúng văn bản từ bộ mã hóa văn bản.

pooled_projection_dim (`int`, mặc định là `768`) : Kích thước của phép chiếu đã gộp (pooled projection) của các nhúng văn bản (text embeddings).

rope_theta (`float`, mặc định là `256.0`) : Giá trị của theta được sử dụng trong lớp RoPE.

rope_axes_dim (`tuple[int]`, mặc định là `(16, 56, 56)`) : Kích thước của các trục được sử dụng trong lớp RoPE.

image_condition_type (`str`, *tùy chọn*, mặc định là `None`) : Loại điều kiện hình ảnh cần sử dụng. Nếu là `None`, sẽ không sử dụng điều kiện hình ảnh. Nếu là `latent_concat`, hình ảnh sẽ được nối vào luồng latent. Nếu là `token_replace`, hình ảnh sẽ được dùng để thay thế các token của khung hình đầu tiên trong luồng latent và áp dụng điều kiện.

Một mô hình Transformer cho dữ liệu dạng video được sử dụng trong [HunyuanVideo](https://huggingface.co/tencent/HunyuanVideo).

#### forward[[diffusers.HunyuanVideoTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: LongTensor, encoder_hidden_states: Tensor, encoder_attention_mask: Tensor, pooled_projections: Tensor, guidance: Tensor = None, attention_kwargs: dict[str, typing.Any] | None = None, return_dict: bool = True)
```

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

**Tham số:**

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

timestep (`torch.LongTensor`) : Dùng để chỉ bước khử nhiễu.

encoder_hidden_states (`torch.Tensor` có shape `(batch_size, sequence_len, embed_dims)`) : Các embeddings điều kiện (embeddings được tính từ các điều kiện đầu vào như prompts) cần sử dụng.

encoder_attention_mask (`torch.Tensor`) : Mặt nạ được áp dụng cho `encoder_hidden_states` trong quá trình chú ý.

pooled_projections (`torch.Tensor` có hình dạng `(batch_size, projection_dim)`) : Các embedding được chiếu từ các embedding của các điều kiện đầu vào.

guidance (`torch.Tensor`, *tùy chọn*) : Nhúng thang độ dẫn hướng được sử dụng cho các biến thể đã chưng cất dẫn hướng của mô hình.

attention_kwargs (`dict`, *tùy chọn*) : Một từ điển kwargs mà nếu được chỉ định sẽ được truyền đế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`, *tùy chọn*, 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ề:**

Nếu `return_dict` là True, một `~models.transformer_2d.Transformer2DModelOutput` sẽ được trả về, ngược lại một `tuple` trong đó phần tử đầu tiên là tensor mẫu.

Phương thức forward của [HunyuanVideoTransformer3DModel](/docs/diffusers/v0.43.0/vi/api/models/hunyuan_video_transformer_3d#diffusers.HunyuanVideoTransformer3DModel).

## Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

#### diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

```python
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
```

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

**Tham số:**

sample (`torch.Tensor` có shape `(batch_size, num_channels, height, width)` hoặc `(batch size, num_vector_embeds - 1, num_latent_pixels)` nếu [Transformer2DModel](/docs/diffusers/v0.43.0/vi/api/models/transformer2d#diffusers.Transformer2DModel) là discrete) : Đầu ra của hidden states được điều kiện bởi đầu vào `encoder_hidden_states`. Nếu là discrete, trả về các phân phối xác suất cho các latent pixels chưa bị nhiễu.

Đầu ra của [Transformer2DModel](/docs/diffusers/v0.43.0/vi/api/models/transformer2d#diffusers.Transformer2DModel).

