---
title: causal_wanvideo
---

<div class="python-reference">
<a id="fastvideo.models.dits.causal_wanvideo-classes"></a>
<a id="fastvideo.models.dits.causal_wanvideo.CausalWanSelfAttention-functions"></a>
<a id="fastvideo.models.dits.causal_wanvideo.CausalWanTransformer3DModel-functions"></a>
<a id="fastvideo.models.dits.causal_wanvideo"></a>
<p>Compatibility imports for the family-local causal Wan transformer.</p>
<h2 id="fastvideo.models.dits.causal_wanvideo.CausalWanSelfAttention"><code>fastvideo.models.dits.causal_wanvideo.CausalWanSelfAttention</code></h2>
<pre class="doc-signature"><code>CausalWanSelfAttention(dim: int, num_heads: int, local_attn_size: int = -1, sink_size: int = 0, qk_norm = True, eps = 1e-06, parallel_attention = False, rope_cache_policy: str = &#x27;absolute&#x27;)</code></pre>


<h3 id="fastvideo.models.dits.causal_wanvideo.CausalWanSelfAttention.forward"><code>fastvideo.models.dits.causal_wanvideo.CausalWanSelfAttention.forward</code></h3>
<pre class="doc-signature"><code>forward(q: torch.Tensor, k: torch.Tensor, v: torch.Tensor, freqs_cis: tuple&#91;torch.Tensor, torch.Tensor&#93;, block_mask: BlockMask, kv_cache: dict | None = None, current_start: int = 0, cache_start: int | None = None, frame_seqlen: int = 1560)</code></pre>
<h4>Parameters</h4>
<dl>
<dt><code>x: Tensor</code></dt><dd><p>Shape [B, L, num_heads, C / num_heads]</p></dd>
<dt><code>seq_lens: Tensor</code></dt><dd><p>Shape [B]</p></dd>
<dt><code>grid_sizes: Tensor</code></dt><dd><p>Shape [B, 3], the second dimension contains (F, H, W)</p></dd>
<dt><code>freqs: Tensor</code></dt><dd><p>Rope freqs, shape [1024, C / num_heads / 2]</p></dd>
<dt><code>frame_seqlen: int</code></dt><dd><p>Number of tokens per latent frame,
e.g. 1560 for 480x832 resolution.</p></dd>
</dl>
<h2 id="fastvideo.models.dits.causal_wanvideo.CausalWanTransformer3DModel"><code>fastvideo.models.dits.causal_wanvideo.CausalWanTransformer3DModel</code></h2>
<pre class="doc-signature"><code>CausalWanTransformer3DModel(config: WanVideoConfig, hf_config: dict&#91;str, Any&#93;)</code></pre>


<h3 id="fastvideo.models.dits.causal_wanvideo.CausalWanTransformer3DModel.forward"><code>fastvideo.models.dits.causal_wanvideo.CausalWanTransformer3DModel.forward</code></h3>
<pre class="doc-signature"><code>forward(*args, **kwargs)</code></pre>

<h3 id="fastvideo.models.dits.causal_wanvideo.CausalWanTransformer3DModel.unpatchify"><code>fastvideo.models.dits.causal_wanvideo.CausalWanTransformer3DModel.unpatchify</code></h3>
<pre class="doc-signature"><code>unpatchify(x, grid_sizes)</code></pre>
<h4>Parameters</h4>
<dl>
<dt><code>x: List[Tensor]</code></dt><dd><p>List of patchified features, each with shape [L, C_out * prod(patch_size)]</p></dd>
<dt><code>grid_sizes: Tensor</code></dt><dd><p>Original spatial-temporal grid dimensions before patching,</p></dd>
</dl>
<h4>Returns</h4>
<dl>
<dt><code>Tensor</code></dt><dd><p>Reconstructed video tensors with shape [B, C_out, F, H / 8, W / 8]</p></dd>
</dl>
<h2 id="fastvideo.models.dits.causal_wanvideo.CausalWanTransformerBlock"><code>fastvideo.models.dits.causal_wanvideo.CausalWanTransformerBlock</code></h2>
<pre class="doc-signature"><code>CausalWanTransformerBlock(dim: int, ffn_dim: int, num_heads: int, local_attn_size: int = -1, sink_size: int = 0, qk_norm: str = &#x27;rms_norm_across_heads&#x27;, cross_attn_norm: bool = False, eps: float = 1e-06, added_kv_proj_dim: int | None = None, supported_attention_backends: tuple&#91;AttentionBackendEnum, ...&#93; | None = None, prefix: str = &#x27;&#x27;, rope_cache_policy: str = &#x27;absolute&#x27;)</code></pre>


<h3 id="fastvideo.models.dits.causal_wanvideo.CausalWanTransformerBlock.forward"><code>fastvideo.models.dits.causal_wanvideo.CausalWanTransformerBlock.forward</code></h3>
<pre class="doc-signature"><code>forward(hidden_states: torch.Tensor, encoder_hidden_states: torch.Tensor, temb: torch.Tensor, freqs_cis: tuple&#91;torch.Tensor, torch.Tensor&#93;, block_mask: BlockMask, kv_cache: dict | None = None, crossattn_cache: dict | None = None, current_start: int = 0, cache_start: int | None = None, frame_seqlen: int | None = None) -&gt; torch.Tensor</code></pre>

</div>
