cosmos
Cosmos model plugin package.
fastvideo.train.models.cosmos.CosmosModel
CosmosModel(*, init_from: str, training_config: TrainingConfig, trainable: bool = True, disable_custom_init_weights: bool = False, flow_shift: float = 1.0, enable_gradient_checkpointing_type: str | None = None, transformer_override_safetensor: str | None = None)
Cosmos 2.5 per-role model.
Inherits most behaviour from WanModel (noise scheduler, timestep sampling, attention metadata, backward). Overrides only the pieces that differ for Cosmos 2.5.
Cosmos 2.5 uses: - Cosmos25Transformer3DModel (velocity prediction) - EDM noise schedule: x_t = x_0 + sigma * eps - No input/output preconditioning (raw latents) - Timestep = raw sigma value - Model output = velocity ≈ noise
fastvideo.train.models.cosmos.CosmosModel.prepare_batch
prepare_batch(raw_batch: dict[str, Any], *, generator: torch.Generator, latents_source: Literal['data', 'zeros'] = 'data') -> TrainingBatch
Same flow as Wan, but uses Cosmos VAE normalisation.
fastvideo.train.models.cosmos.CosmosModel.predict_noise
predict_noise(noisy_latents: torch.Tensor, timestep: torch.Tensor, batch: TrainingBatch, *, conditional: bool, cfg_uncond: dict[str, Any] | None = None, attn_kind: Literal['dense', 'vsa'] = 'dense') -> torch.Tensor
fastvideo.train.models.cosmos.CosmosModel.ensure_negative_conditioning
ensure_negative_conditioning() -> None
Create negative (unconditional) prompt embeddings.
Cosmos 2.5 uses Reason1 (Qwen2.5-VL) which is expensive
to load. This method only supports training_cfg_rate=0
(no classifier-free guidance dropout), in which case the
negative embedding is never used and a zero placeholder
sized to match the text embedding dimension is sufficient.
training_cfg_rate>0 would require real Reason1 negative
embeddings and is rejected here to avoid silently training
with zero-vector "unconditional" inputs.