---
title: matrixgame2
---

<div class="python-reference">
<a id="fastvideo.models.dits.matrixgame2-classes"></a>
<a id="fastvideo.models.dits.matrixgame2.ActionModule-functions"></a>
<a id="fastvideo.models.dits.matrixgame2"></a>

<h2 id="fastvideo.models.dits.matrixgame2.MatrixGame2WanModel"><code>fastvideo.models.dits.matrixgame2.MatrixGame2WanModel</code></h2>
<pre class="doc-signature"><code>MatrixGame2WanModel(config: MatrixGame2WanVideoConfig, hf_config: dict&#91;str, Any&#93;, **kwargs)</code></pre>


<h3 id="fastvideo.models.dits.matrixgame2.MatrixGame2WanModel.forward"><code>fastvideo.models.dits.matrixgame2.MatrixGame2WanModel.forward</code></h3>
<pre class="doc-signature"><code>forward(hidden_states: torch.Tensor, encoder_hidden_states: torch.Tensor | list&#91;torch.Tensor&#93;, timestep: torch.LongTensor, encoder_hidden_states_image: torch.Tensor | list&#91;torch.Tensor&#93; | None = None, mouse_cond: torch.Tensor | None = None, keyboard_cond: torch.Tensor | None = None, **kwargs) -&gt; torch.Tensor</code></pre>

<h2 id="fastvideo.models.dits.matrixgame2.MatrixGame2TransformerBlock"><code>fastvideo.models.dits.matrixgame2.MatrixGame2TransformerBlock</code></h2>
<pre class="doc-signature"><code>MatrixGame2TransformerBlock(dim: int, ffn_dim: int, num_heads: int, 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;, action_config: dict | None = None)</code></pre>


<h3 id="fastvideo.models.dits.matrixgame2.MatrixGame2TransformerBlock.forward"><code>fastvideo.models.dits.matrixgame2.MatrixGame2TransformerBlock.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;, grid_sizes: torch.Tensor, mouse_cond: torch.Tensor | None = None, keyboard_cond: torch.Tensor | None = None) -&gt; torch.Tensor</code></pre>

<h2 id="fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel"><code>fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel</code></h2>
<pre class="doc-signature"><code>CausalMatrixGame2WanModel(config: MatrixGame2WanVideoConfig, hf_config: dict&#91;str, Any&#93;, **kwargs)</code></pre>


<h3 id="fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel.set_causal_attention_window"><code>fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel.set_causal_attention_window</code></h3>
<pre class="doc-signature"><code>set_causal_attention_window(*, local_attn_size: int | None = None, sink_size: int | None = None) -&gt; None</code></pre>

<h3 id="fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel.set_sink_size"><code>fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel.set_sink_size</code></h3>
<pre class="doc-signature"><code>set_sink_size(sink_size: int) -&gt; None</code></pre>

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

<h3 id="fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel.unpatchify"><code>fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel.unpatchify</code></h3>
<pre class="doc-signature"><code>unpatchify(x: torch.Tensor, grid_sizes: tuple&#91;int, int, int&#93;) -&gt; torch.Tensor</code></pre>

<h3 id="fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel.init_weights"><code>fastvideo.models.dits.matrixgame2.CausalMatrixGame2WanModel.init_weights</code></h3>
<pre class="doc-signature"><code>init_weights()</code></pre>

<h2 id="fastvideo.models.dits.matrixgame2.CausalMatrixGame2TransformerBlock"><code>fastvideo.models.dits.matrixgame2.CausalMatrixGame2TransformerBlock</code></h2>
<pre class="doc-signature"><code>CausalMatrixGame2TransformerBlock(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;, action_config: dict | None = None, block_idx: int = 0, rope_cache_policy: str = &#x27;absolute&#x27;)</code></pre>


<h3 id="fastvideo.models.dits.matrixgame2.CausalMatrixGame2TransformerBlock.forward"><code>fastvideo.models.dits.matrixgame2.CausalMatrixGame2TransformerBlock.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, grid_sizes: tuple&#91;int, int, int&#93;, mouse_cond: torch.Tensor | None = None, keyboard_cond: torch.Tensor | None = None, block_mask_mouse: BlockMask | None = None, block_mask_keyboard: BlockMask | None = None, num_frame_per_block: int = 1, use_rope_keyboard: bool = True, kv_cache: dict | None = None, kv_cache_mouse: dict | None = None, kv_cache_keyboard: dict | None = None, crossattn_cache: dict | None = None, current_start: int = 0, cache_start: int | None = None) -&gt; torch.Tensor</code></pre>

<h2 id="fastvideo.models.dits.matrixgame2.ActionModule"><code>fastvideo.models.dits.matrixgame2.ActionModule</code></h2>
<pre class="doc-signature"><code>ActionModule(mouse_dim_in: int = 2, keyboard_dim_in: int = 6, hidden_size: int = 128, img_hidden_size: int = 1536, keyboard_hidden_dim: int = 1024, mouse_hidden_dim: int = 1024, vae_time_compression_ratio: int = 4, windows_size: int = 3, heads_num: int = 16, patch_size: list | None = None, qk_norm: bool = True, qkv_bias: bool = False, rope_dim_list: list | None = None, rope_theta = 256, mouse_qk_dim_list: list | None = None, enable_mouse = True, enable_keyboard = True, local_attn_size = 6, sink_size = 0, blocks: list | None = None)</code></pre>
<p>action module from https://arxiv.org/pdf/2501.08325</p>

<h3 id="fastvideo.models.dits.matrixgame2.ActionModule.patchify"><code>fastvideo.models.dits.matrixgame2.ActionModule.patchify</code></h3>
<pre class="doc-signature"><code>patchify(x, patch_size)</code></pre>
<p>x : (N C T H W)</p>
<h3 id="fastvideo.models.dits.matrixgame2.ActionModule.unpatchify"><code>fastvideo.models.dits.matrixgame2.ActionModule.unpatchify</code></h3>
<pre class="doc-signature"><code>unpatchify(x, t, h, w, patch_size)</code></pre>
<p>x: (N, T, patch_size**2 * C)
imgs: (N, H, W, C)</p>
<h3 id="fastvideo.models.dits.matrixgame2.ActionModule.get_rotary_pos_embed"><code>fastvideo.models.dits.matrixgame2.ActionModule.get_rotary_pos_embed</code></h3>
<pre class="doc-signature"><code>get_rotary_pos_embed(video_length, height, width, head_dim, rope_dim_list = None, start_offset = 0)</code></pre>

<h3 id="fastvideo.models.dits.matrixgame2.ActionModule.forward"><code>fastvideo.models.dits.matrixgame2.ActionModule.forward</code></h3>
<pre class="doc-signature"><code>forward(x: torch.Tensor, tt: int, th: int, tw: int, mouse_condition: torch.Tensor | None = None, keyboard_condition: torch.Tensor | None = None, block_mask_mouse: BlockMask | None = None, block_mask_keyboard: BlockMask | None = None, is_causal: bool = False, kv_cache_mouse: dict&#91;str, torch.Tensor&#93; | None = None, kv_cache_keyboard: dict&#91;str, torch.Tensor&#93; | None = None, start_frame: int = 0, use_rope_keyboard: bool = True, num_frame_per_block: int = 3)</code></pre>
<p>hidden_states: B, tt<em>th</em>tw, C
mouse_condition: B, N_frames, C1
keyboard_condition: B, N_frames, C2</p>
</div>

<h2>Submodules</h2>
<ul>
<li><a href="/FastVideo/api/fastvideo/models/dits/matrixgame2/action_module">action_module</a></li>
<li><a href="/FastVideo/api/fastvideo/models/dits/matrixgame2/causal_model">causal_model</a></li>
<li><a href="/FastVideo/api/fastvideo/models/dits/matrixgame2/model">model</a></li>
<li><a href="/FastVideo/api/fastvideo/models/dits/matrixgame2/utils">utils</a></li>
</ul>
