# Cosmos3OmniTransformer

Un transformer vision-langage conjoint de type Mixture-of-Transformer (MoT), introduit dans le cadre de la famille de modèles de fondation du monde Cosmos3 de NVIDIA. Le modèle exécute deux chemins de calcul parallèles sur une séquence conjointe compactée :

- un **chemin de « compréhension » causal** qui s'auto-attende sur les jetons de texte avec un masquage causal, et
- un **chemin de « génération » bidirectionnel** qui effectue une attention croisée depuis les jetons de génération (latents visuels + latents sonores optionnels) sur l’ensemble complet des clés/valeurs de compréhension et de génération.

Les deux chemins partagent la même taille de représentation cachée et le même nombre de couches, mais conservent des **projections Q/K/V/O, des MLP et des paramètres RMSNorm distincts**, ce qui fait de l'architecture un Mixture-of-Transformer plutôt qu'un Mixture-of-Experts standard. Les informations de position sont fournies par un RoPE multimodal 3D (mRoPE) qui entrelace les fréquences temporelles / hauteur / largeur pour les latents vidéo et réutilise l'axe temporel pour le texte et l'audio.

Le modèle peut être chargé comme suit.

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

[Source](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[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)
```

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

**Paramètres :**

input_ids : Identifiants de jetons de texte placés à `text_indexes` dans la séquence conjointe.

text_indexes : Indices des jetons de texte dans la séquence conjointe.

position_ids : `[3, sequence_length]` identifiants de position mRoPE pour la séquence jointe complète.

und_len : Longueur du préfixe de texte causal (compréhension) ; les jetons de génération suivent.

sequence_length : Longueur totale de la séquence jointe emballée.

vision_tokens : Tenseurs latents visuels par élément avant l'application de patchify.

vision_token_shapes : Formes des grilles de patches `(T, H, W)` par élément visuel.

vision_sequence_indexes : Indices des jetons visuels dans la séquence conjointe.

vision_mse_loss_indexes : Indices utilisés pour lire les prédictions visuelles après le backbone.

vision_timesteps : Étapes de diffusion par patch pour les jetons visuels.

vision_noisy_frame_indexes : Indices de trames bruitées par élément visuel.

sound_tokens : Tenseurs latents sonores optionnels avant l'empaquetage.

sound_token_shapes : Formes de grille de patch facultatives pour les éléments sonores.

sound_sequence_indexes : Indices facultatifs des jetons sonores dans la séquence conjointe.

sound_mse_loss_indexes : Indices facultatifs utilisés pour lire les prédictions sonores.

sound_timesteps : Étapes de diffusion par jeton facultatives pour le son.

sound_noisy_frame_indexes : Indices de trames bruitées facultatifs par élément sonore.

action_tokens : Tenseurs latents d'action optionnels avant l'empaquetage.

action_token_shapes : Formes de grille de patch optionnelles `(T, H, W)` par élément d'action.

action_sequence_indexes : Indices facultatifs des jetons d'action dans la séquence conjointe.

action_mse_loss_indexes : Indices facultatifs utilisés pour lire les prédictions d’actions après le backbone.

action_timesteps : Étapes de diffusion par jeton facultatives pour les jetons d'action.

action_noisy_frame_indexes : Indices de trames bruitées facultatifs par élément d'action.

action_domain_ids : Identifiants de domaine par élément, facultatifs, permettant de sélectionner les poids de la tête d'action.

return_dict : Indique s'il faut retourner un *Cosmos3OmniTransformerOutput* plutôt qu'un tuple.

**Retourne :**

Un objet de type *Cosmos3OmniTransformerOutput* ou un tuple de listes de prédictions par modalité. Les modalités facultatives renvoient `None` lorsque leurs entrées sont omises.

Exécuter un passage avant complet d'une étape de débruitage.

