# Cosmos3OmniTransformer

NVIDIA의 Cosmos3 월드 파운데이션 모델 계열의 일부로 소개된 Mixture-of-Transformer (MoT) 기반의 결합형 비전-언어 transformer입니다. 이 모델은 패킹된 결합 시퀀스 위에서 두 개의 병렬 계산 경로를 실행합니다:

- causal masking을 적용하여 텍스트 토큰에 대해 self-attention을 수행하는 **causal "understanding" pathway**
- 생성 토큰(비전 + 선택적 사운드 잠재 변수)에서 이해 및 생성 전체 키/값 집합에 대해 교차 주의를 수행하는 **양방향 "생성" 경로**

두 경로는 동일한 hidden size와 레이어 수를 공유하지만 **별도의 Q/K/V/O 투영, MLP, RMSNorm 파라미터**를 유지하며, 이것이 아키텍처를 표준 Mixture-of-Experts가 아닌 Mixture-of-Transformer로 만드는 이유입니다. 위치 정보는 3D 멀티모달 RoPE(mRoPE)를 통해 제공되며, 이는 비디오 latent에 대해 시간/높이/너비 주파수를 교차 배치하고 텍스트 및 오디오에는 시간 축을 재사용합니다.

모델은 다음과 같이 로드할 수 있습니다.

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

[소스](https://github.com/huggingface/diffusers/blob/main/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, vision_token_shapes: list, vision_sequence_indexes: Tensor, vision_mse_loss_indexes: Tensor, vision_timesteps: Tensor, vision_noisy_frame_indexes: list, 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)
```

[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_cosmos3.py#L671)

**매개변수:**

input_ids : 결합된 시퀀스에서 `text_indexes`에 배치된 텍스트 토큰 ID.

text_indexes : 결합된 시퀀스에서 텍스트 토큰의 인덱스.

position_ids : `[3, sequence_length]` 전체 결합 시퀀스에 대한 mRoPE 위치 ID.

und_len : 인과적 텍스트(이해) 접두사의 길이; 생성 토큰이 뒤따릅니다.

sequence_length : 결합된 패킷 시퀀스의 총 길이.

vision_tokens : patchify 이전의 항목별 비전 잠재 텐서.

vision_token_shapes : 각 비전 항목별 패치 그리드 모양 `(T, H, W)`.

vision_sequence_indexes : 결합된 시퀀스에서 비전 토큰의 인덱스.

vision_mse_loss_indexes : 백본 이후 비전 예측을 읽는 데 사용되는 인덱스.

vision_timesteps : 비전 토큰을 위한 패치별 diffusion timesteps.

vision_noisy_frame_indexes : 각 비전 항목별 노이즈 프레임 인덱스.

sound_tokens : 패킹 전 선택적 사운드 잠재 텐서.

sound_token_shapes : 사운드 항목에 대한 선택적 패치 그리드 모양.

sound_sequence_indexes : 결합된 시퀀스에서 사운드 토큰의 선택적 인덱스.

sound_mse_loss_indexes : 소리 예측을 읽는 데 사용되는 선택적 인덱스.

sound_timesteps : 사운드에 대한 선택적 토큰별 diffusion timesteps입니다.

sound_noisy_frame_indexes : 사운드 항목별 선택적 노이즈 프레임 인덱스.

action_tokens : 패킹 전 선택적 액션 잠재 텐서.

action_token_shapes : 각 액션 항목별 선택적 패치 그리드 모양 `(T, H, W)`.

action_sequence_indexes : 결합된 시퀀스에서 액션 토큰의 선택적 인덱스.

action_mse_loss_indexes : 백본 이후에 액션 예측을 읽는 데 사용되는 선택적 인덱스.

action_timesteps : 액션 토큰에 대한 선택적 토큰별 diffusion timesteps입니다.

action_noisy_frame_indexes : 각 액션 항목별 선택적 노이즈 프레임 인덱스.

action_domain_ids : 선택 사항. 각 항목에 대한 도메인 ID로, 액션 헤드 가중치를 선택합니다.

return_dict : 튜플 대신 [*Cosmos3OmniTransformerOutput*]를 반환할지 여부.

**반환값:**

[*Cosmos3OmniTransformerOutput*] 또는 모달리티별 예측 목록의 튜플입니다. 선택적 모달리티의 입력이 생략된 경우 `None`을 반환합니다.

전체 노이즈 제거 단계의 순전파를 실행합니다.

