Skip to content
FastVideo
Esc
↑↓navigate↵open⌘Jpreview
On this page

wanvideo

Compatibility imports for the canonical :mod:fastvideo.models.wan.transformer.

fastvideo.models.dits.wanvideo.LayerNormScaleShift

LayerNormScaleShift(hidden_size: int, norm_type: str = 'rms', eps: float = 1e-06, elementwise_affine: bool = False, dtype: torch.dtype = torch.float32, compute_dtype: torch.dtype | None = None, prefix: str = '')

Fused operation that combines LayerNorm with scale and shift operations. This reduces memory bandwidth by combining memory-bound operations.

fastvideo.models.dits.wanvideo.LayerNormScaleShift.forward

forward(x: torch.Tensor, shift: torch.Tensor, scale: torch.Tensor, convert_modulation_dtype: bool = False) -> torch.Tensor

Apply ln followed by scale and shift in a single fused operation.

fastvideo.models.dits.wanvideo.PatchEmbed

PatchEmbed(patch_size = 16, in_chans = 3, embed_dim = 768, norm_layer = None, flatten = True, bias = True, dtype = None, prefix: str = '')

2D Image to Patch Embedding

Image to Patch Embedding using Conv2d

A convolution based approach to patchifying a 2D image w/ embedding projection.

Based on the impl in https://github.com/google-research/vision_transformer

Hacked together by / Copyright 2020 Ross Wightman

Remove the _assert function in forward function to be compatible with multi-resolution images.

fastvideo.models.dits.wanvideo.PatchEmbed.forward

forward(x)

fastvideo.models.dits.wanvideo.WanI2VCrossAttention

WanI2VCrossAttention(dim: int, num_heads: int, window_size = (-1, -1), qk_norm = True, eps = 1e-06, supported_attention_backends: tuple[AttentionBackendEnum, ...] | None = None, quant_config: QuantizationConfig | None = None, prefix: str = '')

fastvideo.models.dits.wanvideo.WanI2VCrossAttention.forward

forward(x, context, context_lens)

Parameters

x: Tensor

Shape [B, L1, C]

context: Tensor

Shape [B, L2, C]

context_lens: Tensor

Shape [B]

fastvideo.models.dits.wanvideo.WanImageEmbedding

WanImageEmbedding(in_features: int, out_features: int)

fastvideo.models.dits.wanvideo.WanImageEmbedding.forward

forward(encoder_hidden_states_image: torch.Tensor) -> torch.Tensor

fastvideo.models.dits.wanvideo.WanSelfAttention

WanSelfAttention(dim: int, num_heads: int, window_size = (-1, -1), qk_norm = True, eps = 1e-06, parallel_attention = False, quant_config: QuantizationConfig | None = None, prefix: str = '')

fastvideo.models.dits.wanvideo.WanSelfAttention.forward

forward(x: torch.Tensor, context: torch.Tensor, context_lens: int)

Parameters

x: Tensor

Shape [B, L, num_heads, C / num_heads]

seq_lens: Tensor

Shape [B]

grid_sizes: Tensor

Shape [B, 3], the second dimension contains (F, H, W)

freqs: Tensor

Rope freqs, shape [1024, C / num_heads / 2]

fastvideo.models.dits.wanvideo.WanT2VCrossAttention

WanT2VCrossAttention(dim: int, num_heads: int, window_size = (-1, -1), qk_norm = True, eps = 1e-06, parallel_attention = False, quant_config: QuantizationConfig | None = None, prefix: str = '')

fastvideo.models.dits.wanvideo.WanT2VCrossAttention.forward

forward(x, context, context_lens, crossattn_cache = None)

Parameters

x: Tensor

Shape [B, L1, C]

context: Tensor

Shape [B, L2, C]

context_lens: Tensor

Shape [B]

fastvideo.models.dits.wanvideo.WanTimeTextImageEmbedding

WanTimeTextImageEmbedding(dim: int, time_freq_dim: int, text_embed_dim: int, image_embed_dim: int | None = None, *, r_embedder: bool = False, r_embedder_fusion: str = 'additive', r_embedder_gate_value: float = 0.25, r_embedder_deltatime_type: str = 'r')

fastvideo.models.dits.wanvideo.WanTimeTextImageEmbedding.forward

forward(timestep: torch.Tensor, encoder_hidden_states: torch.Tensor, encoder_hidden_states_image: torch.Tensor | None = None, timestep_seq_len: int | None = None, r_timestep: torch.Tensor | None = None)

fastvideo.models.dits.wanvideo.WanTransformer3DModel

WanTransformer3DModel(config: WanVideoConfig, hf_config: dict[str, Any])

fastvideo.models.dits.wanvideo.WanTransformer3DModel.forward

forward(hidden_states: torch.Tensor, encoder_hidden_states: torch.Tensor | list[torch.Tensor], timestep: torch.LongTensor, encoder_hidden_states_image: torch.Tensor | list[torch.Tensor] | None = None, guidance = None, r_timestep: torch.Tensor | None = None, **kwargs) -> torch.Tensor

fastvideo.models.dits.wanvideo.WanTransformerBlock

WanTransformerBlock(dim: int, ffn_dim: int, num_heads: int, qk_norm: str = 'rms_norm_across_heads', cross_attn_norm: bool = False, eps: float = 1e-06, added_kv_proj_dim: int | None = None, supported_attention_backends: tuple[AttentionBackendEnum, ...] | None = None, quant_config: QuantizationConfig | None = None, prefix: str = '')

fastvideo.models.dits.wanvideo.WanTransformerBlock.forward

forward(hidden_states: torch.Tensor, encoder_hidden_states: torch.Tensor, temb: torch.Tensor, freqs_cis: tuple[torch.Tensor, torch.Tensor], original_seq_len: int) -> torch.Tensor

fastvideo.models.dits.wanvideo.WanTransformerBlock_VSA

WanTransformerBlock_VSA(dim: int, ffn_dim: int, num_heads: int, qk_norm: str = 'rms_norm_across_heads', cross_attn_norm: bool = False, eps: float = 1e-06, added_kv_proj_dim: int | None = None, supported_attention_backends: tuple[AttentionBackendEnum, ...] | None = None, quant_config: QuantizationConfig | None = None, prefix: str = '')

fastvideo.models.dits.wanvideo.WanTransformerBlock_VSA.forward

forward(hidden_states: torch.Tensor, encoder_hidden_states: torch.Tensor, temb: torch.Tensor, freqs_cis: tuple[torch.Tensor, torch.Tensor], original_seq_len: int) -> torch.Tensor

Was this page helpful?