# Cosmos3OmniTransformer

Một transformer thị giác-ngôn ngữ kết hợp dạng Mixture-of-Transformer (MoT), được giới thiệu như một phần của dòng mô hình nền tảng thế giới Cosmos3 của NVIDIA. Mô hình chạy hai đường dẫn tính toán song song trên một chuỗi kết hợp đã đóng gói:

- một **đường dẫn "hiểu" nhân quả** tự chú ý trên các token văn bản với mặt nạ nhân quả, và
- một **lộ trình "sinh" hai chiều** thực hiện cross-attention từ các token sinh (latent thị giác + latent âm thanh tùy chọn) trên toàn bộ tập key/value của phần hiểu và sinh.

Hai nhánh này chia sẻ cùng kích thước ẩn và số lớp nhưng duy trì **các phép chiếu Q/K/V/O, MLP và tham số RMSNorm riêng biệt**, đây chính là điều khiến kiến trúc trở thành Mixture-of-Transformer thay vì Mixture-of-Experts thông thường. Thông tin vị trí được cung cấp thông qua RoPE đa phương thức 3D (mRoPE), xen kẽ các tần số thời gian / chiều cao / chiều rộng cho các latent video và tái sử dụng trục thời gian cho văn bản và âm thanh.

Mô hình có thể được nạp theo cách sau.

```python
import torch
from diffusers import Cosmos3OmniTransformer

transformer = Cosmos3OmniTransformer.from_pretrained(
    "nvidia/Cosmos3-Nano", subfolder="transformer", dtype=torch.bfloat16
)
```

## Cosmos3OmniTransformer[[diffusers.Cosmos3OmniTransformer]]

#### diffusers.Cosmos3OmniTransformer[[diffusers.Cosmos3OmniTransformer]]

```python
diffusers.Cosmos3OmniTransformer(attention_bias: bool = False, attention_dropout: float = 0.0, dtype: str = 'bfloat16', head_dim: int = 128, hidden_size: int = 4096, intermediate_size: int = 12288, base_fps: int = 24, enable_fps_modulation: bool = True, latent_channel: int = 48, unified_3d_mrope_reset_spatial_ids: bool = True, unified_3d_mrope_temporal_modality_margin: int = 15000, latent_patch_size: int = 2, num_attention_heads: int = 32, num_hidden_layers: int = 36, num_key_value_heads: int = 8, patch_latent_dim: int = 192, rms_norm_eps: float = 1e-06, rope_scaling: dict | None = None, rope_theta: float = 5000000.0, action_dim: int | None = None, action_gen: bool = False, num_embodiment_domains: int = 32, sound_dim: int | None = None, sound_gen: bool = False, sound_latent_fps: float = 25.0, timestep_scale: float = 0.001, vocab_size: int = 151936, hidden_act: str = 'silu', qk_norm_for_text: bool = True, use_und_k_norm_for_gen: bool = False, rope_axes_dim: tuple[int, int, int] | list[int] | None = None)
```

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

#### forward[[diffusers.Cosmos3OmniTransformer.forward]]

```python
forward(input_ids: Tensor, text_indexes: Tensor, position_ids: Tensor, und_len: int, sequence_length: int, vision_tokens: list[torch.Tensor], vision_token_shapes: list[tuple[int, int, int]], vision_sequence_indexes: Tensor, vision_mse_loss_indexes: Tensor, vision_timesteps: Tensor, vision_noisy_frame_indexes: list[torch.Tensor], sound_tokens: list[torch.Tensor] | None = None, sound_token_shapes: list[tuple[int, int, int]] | None = None, sound_sequence_indexes: typing.Optional[torch.Tensor] = None, sound_mse_loss_indexes: typing.Optional[torch.Tensor] = None, sound_timesteps: typing.Optional[torch.Tensor] = None, sound_noisy_frame_indexes: list[torch.Tensor] | None = None, action_tokens: list[torch.Tensor] | None = None, action_token_shapes: list[tuple[int, int, int]] | None = None, action_sequence_indexes: typing.Optional[torch.Tensor] = None, action_mse_loss_indexes: typing.Optional[torch.Tensor] = None, action_timesteps: typing.Optional[torch.Tensor] = None, action_noisy_frame_indexes: list[torch.Tensor] | None = None, action_domain_ids: list[torch.Tensor] | None = None, return_dict: bool = True)
```

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

**Tham số:**

input_ids : Các ID token văn bản được đặt tại `text_indexes` trong chuỗi kết hợp.

text_indexes : Chỉ số của các token văn bản trong chuỗi kết hợp.

position_ids : `[3, sequence_length]` các ID vị trí mRoPE cho toàn bộ chuỗi kết hợp.

und_len : Độ dài của phần tiền tố văn bản nhân quả (hiểu); các token sinh sẽ đi theo sau.

sequence_length : Tổng độ dài của chuỗi đóng gói kết hợp.

vision_tokens : Các tensor tiềm ẩn thị giác theo từng mục trước khi patchify.

vision_token_shapes : Hình dạng lưới patch `(T, H, W)` cho từng mục thị giác.

vision_sequence_indexes : Chỉ số của các token thị giác trong chuỗi kết hợp.

vision_mse_loss_indexes : Các chỉ số được sử dụng để đọc các dự đoán thị giác sau phần backbone.

vision_timesteps : Các bước khuếch tán (diffusion timesteps) cho từng khối (patch) của các token thị giác.

vision_noisy_frame_indexes : Các chỉ số khung nhiễu cho mỗi mục thị giác.

sound_tokens : Tensor âm thanh tiềm ẩn tùy chọn trước khi đóng gói.

sound_token_shapes : Hình dạng lưới vá tùy chọn cho các mục âm thanh.

sound_sequence_indexes : Chỉ số tùy chọn của các token âm thanh trong chuỗi kết hợp.

sound_mse_loss_indexes : Các chỉ số tùy chọn được sử dụng để đọc các dự đoán âm thanh.

sound_timesteps : Các bước khuếch tán tùy chọn cho từng token của âm thanh.

sound_noisy_frame_indexes : Chỉ số khung hình nhiễu tùy chọn cho từng mục âm thanh.

action_tokens : Tensor tiềm ẩn hành động tùy chọn trước khi đóng gói.

action_token_shapes : Hình dạng lưới vá tùy chọn `(T, H, W)` cho từng mục hành động.

action_sequence_indexes : Chỉ số tùy chọn của các token hành động trong chuỗi kết hợp.

action_mse_loss_indexes : Các chỉ số tùy chọn được sử dụng để đọc các dự đoán hành động sau phần backbone.

action_timesteps : Các bước khuếch tán (diffusion timesteps) tùy chọn cho từng token của các token hành động.

action_noisy_frame_indexes : Chỉ số khung nhiễu tùy chọn cho từng mục hành động.

action_domain_ids : ID miền cho từng mục, tùy chọn, dùng để chọn trọng số của đầu hành động.

return_dict : Có nên trả về một [*Cosmos3OmniTransformerOutput*] thay vì một tuple hay không.

**Trả về:**

Một [*Cosmos3OmniTransformerOutput*] hoặc một tuple chứa các danh sách dự đoán theo từng phương thức. Các phương thức tùy chọn sẽ trả về `None` khi đầu vào của chúng bị bỏ qua.

Chạy một bước truyền thẳng đầy đủ cho quá trình khử nhiễu.

