# CosmosTransformer3DModel

Một mô hình Diffusion Transformer cho dữ liệu dạng video 3D đã được giới thiệu trong [Cosmos World Foundation Model Platform for Physical AI](https://huggingface.co/papers/2501.03575) của NVIDIA.

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

```python
from diffusers import CosmosTransformer3DModel

transformer = CosmosTransformer3DModel.from_pretrained("nvidia/Cosmos-1.0-Diffusion-7B-Text2World", subfolder="transformer", dtype=torch.bfloat16)
```

## CosmosTransformer3DModel[[diffusers.CosmosTransformer3DModel]]

#### diffusers.CosmosTransformer3DModel[[diffusers.CosmosTransformer3DModel]]

```python
diffusers.CosmosTransformer3DModel(in_channels: int = 16, out_channels: int = 16, num_attention_heads: int = 32, attention_head_dim: int = 128, num_layers: int = 28, mlp_ratio: float = 4.0, text_embed_dim: int = 1024, adaln_lora_dim: int = 256, max_size: tuple[int, int, int] = (128, 240, 240), patch_size: tuple[int, int, int] = (1, 2, 2), rope_scale: tuple[float, float, float] = (2.0, 1.0, 1.0), concat_padding_mask: bool = True, extra_pos_embed_type: str | None = 'learnable', use_crossattn_projection: bool = False, crossattn_proj_in_channels: int = 1024, encoder_hidden_states_channels: int = 1024, controlnet_block_every_n: int | None = None, img_context_dim_in: int | None = None, img_context_num_tokens: int = 256, img_context_dim_out: int = 2048)
```

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

**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à `32`) : Số lượng đầu (heads) được sử dụng cho chú ý đa đầu (multi-head attention).

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

num_layers (`int`, mặc định là `28`) : Số lượng lớp khối transformer 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.

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.

adaln_lora_dim (`int`, mặc định là `256`) : Kích thước chiều ẩn của lớp Adaptive LayerNorm LoRA.

max_size (`tuple[int, int, int]`, mặc định là `(128, 240, 240)`) : Kích thước tối đa của các tensor latent đầu vào theo các chiều thời gian, chiều cao và chiều rộng.

patch_size (`tuple[int, int, int]`, mặc định là `(1, 2, 2)`) : Kích thước patch được sử dụng để patchify các tensor latent đầu vào theo các chiều thời gian, chiều cao và chiều rộng.

rope_scale (`tuple[float, float, float]`, mặc định là `(2.0, 1.0, 1.0)`) : Hệ số tỷ lệ để sử dụng cho RoPE trong các chiều thời gian, chiều cao và chiều rộng.

concat_padding_mask (`bool`, mặc định là `True`) : Có nối mask padding vào các tensor latent đầu vào hay không.

extra_pos_embed_type (`str`, *tùy chọn*, mặc định là `learnable`) : Loại nhúng vị trí bổ sung cần sử dụng. Có thể là `None` hoặc `learnable`.

controlnet_block_every_n (`int`, *optional*) : Khoảng cách giữa các khối transformer cần nhận control residuals (ví dụ, `7` để tiêm sau mỗi khối thứ bảy). Bắt buộc cho Cosmos Transfer2.5.

img_context_dim_in (`int`, *optional*) : Kích thước của vector đặc trưng ngữ cảnh ảnh đầu vào, tức là D trong [B, N, D].

img_context_num_tokens (`int`) : Số lượng token trong vector đặc trưng ngữ cảnh của hình ảnh, tức là N trong [B, N, D]. Nếu `img_context_dim_in` không được cung cấp, tham số này sẽ bị bỏ qua.

img_context_dim_out (`int`) : Kích thước chiều đầu ra của lớp chiếu ngữ cảnh hình ảnh. Nếu `img_context_dim_in` không được cung cấp, tham số này sẽ bị bỏ qua.

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

#### forward[[diffusers.CosmosTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: Tensor, encoder_hidden_states: Tensor, block_controlnet_hidden_states: list[torch.Tensor] | None = None, attention_mask: typing.Optional[torch.Tensor] = None, fps: int | None = None, condition_mask: typing.Optional[torch.Tensor] = None, padding_mask: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```

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

**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.

block_controlnet_hidden_states (`list` của `torch.Tensor`, *tùy chọn*) : Một danh sách các tensor mà nếu được chỉ định sẽ được cộng vào phần dư (residuals) của các khối transformer.

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

fps (`int`, *tuỳ chọn*) : Số khung hình mỗi giây của video đầu vào được sử dụng để tính các nhúng vị trí quay (rotary positional embeddings).

condition_mask (`torch.Tensor`, *tùy chọn*) : Kênh mask được nối vào `hidden_states` để chỉ định vùng điều kiện.

padding_mask (`torch.Tensor`, *tùy chọn*) : Padding mask được nối vào `hidden_states` khi `concat_padding_mask` được bật.

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 [CosmosTransformer3DModel](/docs/diffusers/v0.43.0/vi/api/models/cosmos_transformer3d#diffusers.CosmosTransformer3DModel).

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

