---
title: base
---

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

<h2 id="fastvideo.models.dits.base.DiTConfig"><code>fastvideo.models.dits.base.DiTConfig</code></h2>
<pre class="doc-signature"><code>DiTConfig(arch_config: DiTArchConfig = DiTArchConfig(), prefix: str = &#x27;&#x27;, quant_config: QuantizationConfig | None = None, *, _resolved_attention_backend: AttentionBackendEnum | None = None)</code></pre>


<h3 id="fastvideo.models.dits.base.DiTConfig.add_cli_args"><code>fastvideo.models.dits.base.DiTConfig.add_cli_args</code></h3>
<pre class="doc-signature"><code>add_cli_args(parser: Any, prefix: str = &#x27;dit-config&#x27;) -&gt; Any</code></pre>
<p>Add CLI arguments for DiTConfig fields</p>
<h2 id="fastvideo.models.dits.base.AttentionBackendEnum"><code>fastvideo.models.dits.base.AttentionBackendEnum</code></h2>
<pre class="doc-signature"><code>AttentionBackendEnum()</code></pre>

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


<details><summary>Source</summary><pre><code>class BaseDiT(nn.Module, ABC):
    _fsdp_shard_conditions: list = &#91;&#93;
    _compile_conditions: list = &#91;&#93;
    param_names_mapping: dict
    reverse_param_names_mapping: dict
    hidden_size: int
    num_attention_heads: int
    num_channels_latents: int
    # always supports torch_sdpa
    _supported_attention_backends: tuple&#91;AttentionBackendEnum, ...&#93; = DiTConfig()._supported_attention_backends

    def __init_subclass__(cls) -&gt; None:
        required_class_attrs = &#91;&quot;_fsdp_shard_conditions&quot;, &quot;param_names_mapping&quot;, &quot;_compile_conditions&quot;&#93;
        super().__init_subclass__()
        for attr in required_class_attrs:
            if not hasattr(cls, attr):
                raise AttributeError(f&quot;Subclasses of BaseDiT must define &#x27;&#123;attr&#125;&#x27; class variable&quot;)

    def __init__(self, config: DiTConfig, hf_config: dict&#91;str, Any&#93;, **kwargs) -&gt; None:
        super().__init__()
        self.config = config
        self.hf_config = hf_config
        if not self.supported_attention_backends:
            raise ValueError(f&quot;Subclass &#123;self.__class__.__name__&#125; must define _supported_attention_backends&quot;)

    @abstractmethod
    def forward(self,
                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,
                guidance=None,
                **kwargs) -&gt; torch.Tensor:
        pass

    def __post_init__(self) -&gt; None:
        required_attrs = &#91;&quot;hidden_size&quot;, &quot;num_attention_heads&quot;, &quot;num_channels_latents&quot;&#93;
        for attr in required_attrs:
            if not hasattr(self, attr):
                raise AttributeError(f&quot;Subclasses of BaseDiT must define &#x27;&#123;attr&#125;&#x27; instance variable&quot;)

    @property
    def supported_attention_backends(self) -&gt; tuple&#91;AttentionBackendEnum, ...&#93;:
        return self._supported_attention_backends


    def preprocess_loaded_weight(self, name: str, tensor: torch.Tensor) -&gt; torch.Tensor:
        &quot;&quot;&quot;Adapt a checkpoint tensor before sharding; default models are unchanged.&quot;&quot;&quot;
        return tensor

    @property
    def _fastvideo_shard_cache_key_extra(self) -&gt; Any:
        &quot;&quot;&quot;Extra weight-shard-cache key material for structurally different variants.&quot;&quot;&quot;
        return None


    def inference_config_overrides(self) -&gt; dict&#91;str, Any&#93;:
        &quot;&quot;&quot;Extra ``config.json`` keys a deployable checkpoint of this model needs.&quot;&quot;&quot;
        return &#123;&#125;


    def inference_export_expected_shape(self, output_key: str, base_shape: tuple&#91;int, ...&#93;) -&gt; tuple&#91;int, ...&#93;:
        &quot;&quot;&quot;The exported shape of *output_key* given the base checkpoint&#x27;s shape.&quot;&quot;&quot;
        return tuple(base_shape)</code></pre></details>
<h3 id="fastvideo.models.dits.base.BaseDiT.forward"><code>fastvideo.models.dits.base.BaseDiT.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, guidance = None, **kwargs) -&gt; torch.Tensor</code></pre>

<details><summary>Source</summary><pre><code>@abstractmethod
def forward(self,
            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,
            guidance=None,
            **kwargs) -&gt; torch.Tensor:
    pass</code></pre></details>
<h3 id="fastvideo.models.dits.base.BaseDiT.preprocess_loaded_weight"><code>fastvideo.models.dits.base.BaseDiT.preprocess_loaded_weight</code></h3>
<pre class="doc-signature"><code>preprocess_loaded_weight(name: str, tensor: torch.Tensor) -&gt; torch.Tensor</code></pre>
<p>Adapt a checkpoint tensor before sharding; default models are unchanged.</p>
<details><summary>Source</summary><pre><code>def preprocess_loaded_weight(self, name: str, tensor: torch.Tensor) -&gt; torch.Tensor:
    &quot;&quot;&quot;Adapt a checkpoint tensor before sharding; default models are unchanged.&quot;&quot;&quot;
    return tensor</code></pre></details>
<h3 id="fastvideo.models.dits.base.BaseDiT.inference_config_overrides"><code>fastvideo.models.dits.base.BaseDiT.inference_config_overrides</code></h3>
<pre class="doc-signature"><code>inference_config_overrides() -&gt; dict&#91;str, Any&#93;</code></pre>
<p>Extra <code>config.json</code> keys a deployable checkpoint of this model needs.</p>
<details><summary>Source</summary><pre><code>def inference_config_overrides(self) -&gt; dict&#91;str, Any&#93;:
    &quot;&quot;&quot;Extra ``config.json`` keys a deployable checkpoint of this model needs.&quot;&quot;&quot;
    return &#123;&#125;</code></pre></details>
<h3 id="fastvideo.models.dits.base.BaseDiT.inference_export_expected_shape"><code>fastvideo.models.dits.base.BaseDiT.inference_export_expected_shape</code></h3>
<pre class="doc-signature"><code>inference_export_expected_shape(output_key: str, base_shape: tuple&#91;int, ...&#93;) -&gt; tuple&#91;int, ...&#93;</code></pre>
<p>The exported shape of <em>output_key</em> given the base checkpoint's shape.</p>
<details><summary>Source</summary><pre><code>def inference_export_expected_shape(self, output_key: str, base_shape: tuple&#91;int, ...&#93;) -&gt; tuple&#91;int, ...&#93;:
    &quot;&quot;&quot;The exported shape of *output_key* given the base checkpoint&#x27;s shape.&quot;&quot;&quot;
    return tuple(base_shape)</code></pre></details>
</div>
