cosmos25wanvae ¶
Cosmos 2.5 / Wan2.1 VAE adapter.
Why this exists: - Cosmos2.5 uses a Wan2.1-style VAE, but the diffusion model operates in a normalized latent space: z_norm = (z - mean) / std
Meanwhile, FastVideo's AutoencoderKLWan operates in the VAE's native latent space (denormalized): z = z_norm * std + mean
This adapter provides a single, stable interface for FastVideo pipelines: - encode(x) returns an object with .mean / .sample() / .mode() - decode(z) returns a tensor in pixel space
It also exposes flags used by pipeline stages to avoid double (de)normalization: - handles_latent_norm = True -> stages should NOT normalize encoder latents - handles_latent_denorm = True -> stages should NOT denormalize before decode
Classes¶
fastvideo.models.vaes.cosmos25wanvae.Cosmos25AttentionBlock ¶
Cosmos25AttentionBlock(dim: int)
Bases: Module
Official-like causal self-attention with a single head.
Source code in fastvideo/models/vaes/cosmos25wanvae.py
fastvideo.models.vaes.cosmos25wanvae.Cosmos25CausalConv3d ¶
Bases: Conv3d
Official-like causal 3D convolution.
Matches CausalConv3d in the official tokenizer: uses explicit F.pad and supports a cache_x prefix for causal chunking.
Source code in fastvideo/models/vaes/cosmos25wanvae.py
fastvideo.models.vaes.cosmos25wanvae.Cosmos25RMSNorm ¶
Bases: Module
Official-like RMS_norm (uses learnable gamma and optional bias).
Source code in fastvideo/models/vaes/cosmos25wanvae.py
fastvideo.models.vaes.cosmos25wanvae.Cosmos25Resample ¶
Bases: Module
Official-like Resample used for both spatial and temporal up/downsampling.
Source code in fastvideo/models/vaes/cosmos25wanvae.py
fastvideo.models.vaes.cosmos25wanvae.Cosmos25Upsample ¶
Bases: Upsample
Official-like Upsample that is safe for bf16 (casts to fp32 internally).
fastvideo.models.vaes.cosmos25wanvae.Cosmos25WanVAE ¶
Cosmos25WanVAE(*, device: device | str = 'cpu', dtype: dtype = float32, temporal_window: int = 4, latents_mean: Optional[Tensor] = None, latents_std: Optional[Tensor] = None)
Bases: Module
A FastVideo-native copy of the official-like Wan2.1 VAE core.
Key properties: - Module naming matches official tokenizer (encoder, decoder, conv1, conv2) so it can consume tokenizer.pth keys directly. - encode() returns normalized latents and decode() expects normalized latents (Cosmos2.5 contract), matching Wan2pt1VAEInterface.
Source code in fastvideo/models/vaes/cosmos25wanvae.py
525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 | |
Methods:¶
fastvideo.models.vaes.cosmos25wanvae.Cosmos25WanVAE.decode ¶
Decode from normalized latents (Cosmos contract).
Source code in fastvideo/models/vaes/cosmos25wanvae.py
fastvideo.models.vaes.cosmos25wanvae.Cosmos25WanVAE.encode ¶
Encode to normalized latents (Cosmos contract).
Source code in fastvideo/models/vaes/cosmos25wanvae.py
fastvideo.models.vaes.cosmos25wanvae.Cosmos25WanVAEAdapter ¶
Cosmos25WanVAEAdapter(inner: Any, *, latents_mean: Optional[Tensor] = None, latents_std: Optional[Tensor] = None)
Bases: Module
Adapter that makes a Wan2.1-style VAE follow Cosmos2.5's latent contract: - encode() returns normalized latents - decode() expects normalized latents
Source code in fastvideo/models/vaes/cosmos25wanvae.py
Methods:¶
fastvideo.models.vaes.cosmos25wanvae.Cosmos25WanVAEAdapter.decode ¶
Expects normalized latents (Cosmos contract).
Source code in fastvideo/models/vaes/cosmos25wanvae.py
fastvideo.models.vaes.cosmos25wanvae.Cosmos25WanVAEAdapter.encode ¶
Returns normalized latents (Cosmos contract).