---
title: kandinsky5
---

<div class="python-reference">
<a id="fastvideo.configs.pipelines.kandinsky5-classes"></a>
<a id="fastvideo.configs.pipelines.kandinsky5"></a>

<h2 id="fastvideo.configs.pipelines.kandinsky5.DiTConfig"><code>fastvideo.configs.pipelines.kandinsky5.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.configs.pipelines.kandinsky5.DiTConfig.add_cli_args"><code>fastvideo.configs.pipelines.kandinsky5.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.configs.pipelines.kandinsky5.EncoderConfig"><code>fastvideo.configs.pipelines.kandinsky5.EncoderConfig</code></h2>
<pre class="doc-signature"><code>EncoderConfig(arch_config: ArchConfig = EncoderArchConfig(), prefix: str = &#x27;&#x27;, quant_config: QuantizationConfig | None = None, lora_config: Any | None = None, *, _resolved_attention_backend: AttentionBackendEnum | None = None)</code></pre>


<h2 id="fastvideo.configs.pipelines.kandinsky5.VAEConfig"><code>fastvideo.configs.pipelines.kandinsky5.VAEConfig</code></h2>
<pre class="doc-signature"><code>VAEConfig(arch_config: VAEArchConfig = VAEArchConfig(), load_encoder: bool = True, load_decoder: bool = True, tile_sample_min_height: int = 256, tile_sample_min_width: int = 256, tile_sample_min_num_frames: int = 16, tile_sample_stride_height: int = 192, tile_sample_stride_width: int = 192, tile_sample_stride_num_frames: int = 12, blend_num_frames: int = 0, use_tiling: bool = True, use_temporal_tiling: bool = True, use_parallel_tiling: bool = True, use_temporal_scaling_frames: bool = True, *, _resolved_attention_backend: AttentionBackendEnum | None = None)</code></pre>


<h3 id="fastvideo.configs.pipelines.kandinsky5.VAEConfig.add_cli_args"><code>fastvideo.configs.pipelines.kandinsky5.VAEConfig.add_cli_args</code></h3>
<pre class="doc-signature"><code>add_cli_args(parser: Any, prefix: str = &#x27;vae-config&#x27;) -&gt; Any</code></pre>
<p>Add CLI arguments for VAEConfig fields</p>
<h3 id="fastvideo.configs.pipelines.kandinsky5.VAEConfig.from_cli_args"><code>fastvideo.configs.pipelines.kandinsky5.VAEConfig.from_cli_args</code></h3>
<pre class="doc-signature"><code>from_cli_args(args: argparse.Namespace) -&gt; VAEConfig</code></pre>

<h2 id="fastvideo.configs.pipelines.kandinsky5.Kandinsky5VideoConfig"><code>fastvideo.configs.pipelines.kandinsky5.Kandinsky5VideoConfig</code></h2>
<pre class="doc-signature"><code>Kandinsky5VideoConfig(arch_config: DiTArchConfig = Kandinsky5ArchConfig(), prefix: str = &#x27;Kandinsky5&#x27;, quant_config: QuantizationConfig | None = None, *, _resolved_attention_backend: AttentionBackendEnum | None = None)</code></pre>


<h2 id="fastvideo.configs.pipelines.kandinsky5.BaseEncoderOutput"><code>fastvideo.configs.pipelines.kandinsky5.BaseEncoderOutput</code></h2>
<pre class="doc-signature"><code>BaseEncoderOutput(last_hidden_state: torch.FloatTensor | None = None, pooler_output: torch.FloatTensor | None = None, hidden_states: tuple&#91;torch.FloatTensor, ...&#93; | None = None, attentions: tuple&#91;torch.FloatTensor, ...&#93; | None = None, attention_mask: torch.Tensor | None = None)</code></pre>


<h2 id="fastvideo.configs.pipelines.kandinsky5.CLIPTextConfig"><code>fastvideo.configs.pipelines.kandinsky5.CLIPTextConfig</code></h2>
<pre class="doc-signature"><code>CLIPTextConfig(arch_config: TextEncoderArchConfig = CLIPTextArchConfig(), prefix: str = &#x27;clip&#x27;, quant_config: QuantizationConfig | None = None, lora_config: Any | None = None, is_chat_model: bool = False, treat_empty_as_dot: bool = False, num_hidden_layers_override: int | None = None, require_post_norm: bool | None = None, enable_scale: bool = True, is_causal: bool = True, *, _resolved_attention_backend: AttentionBackendEnum | None = None, chat_template_enable_thinking: bool = False)</code></pre>


<h2 id="fastvideo.configs.pipelines.kandinsky5.Reason1Config"><code>fastvideo.configs.pipelines.kandinsky5.Reason1Config</code></h2>
<pre class="doc-signature"><code>Reason1Config(arch_config: Reason1ArchConfig = Reason1ArchConfig(), prefix: str = &#x27;&#x27;, quant_config: QuantizationConfig | None = None, lora_config: Any | None = None, is_chat_model: bool = False, treat_empty_as_dot: bool = False, tokenizer_type: str = &#x27;Qwen/Qwen2.5-VL-7B-Instruct&#x27;, *, _resolved_attention_backend: AttentionBackendEnum | None = None, chat_template_enable_thinking: bool = False)</code></pre>
<p>Reason1 text encoder config.</p>

<h2 id="fastvideo.configs.pipelines.kandinsky5.HunyuanVAEConfig"><code>fastvideo.configs.pipelines.kandinsky5.HunyuanVAEConfig</code></h2>
<pre class="doc-signature"><code>HunyuanVAEConfig(arch_config: VAEArchConfig = HunyuanVAEArchConfig(), load_encoder: bool = True, load_decoder: bool = True, tile_sample_min_height: int = 256, tile_sample_min_width: int = 256, tile_sample_min_num_frames: int = 16, tile_sample_stride_height: int = 192, tile_sample_stride_width: int = 192, tile_sample_stride_num_frames: int = 12, blend_num_frames: int = 0, use_tiling: bool = True, use_temporal_tiling: bool = True, use_parallel_tiling: bool = True, use_temporal_scaling_frames: bool = True, *, _resolved_attention_backend: AttentionBackendEnum | None = None)</code></pre>


<h2 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig</code></h2>
<pre class="doc-signature"><code>PipelineConfig(model_path: str = &#x27;&#x27;, pipeline_config_path: str | None = None, embedded_cfg_scale: float = 6.0, flow_shift: float | None = None, flow_shift_sr: float | None = None, disable_autocast: bool = False, scheduler_step_in_fp32: bool = False, is_causal: bool = False, dit_config: DiTConfig = DiTConfig(), dit_precision: str = &#x27;bf16&#x27;, upsampler_config: UpsamplerConfig = UpsamplerConfig(), upsampler_precision: str = &#x27;fp32&#x27;, vae_config: VAEConfig = VAEConfig(), vae_precision: str = &#x27;fp32&#x27;, vae_decode_precision: str | None = None, vae_tiling: bool = True, vae_sp: bool = True, image_encoder_config: EncoderConfig = EncoderConfig(), image_encoder_precision: str = &#x27;fp32&#x27;, image_encoder_configs: tuple&#91;EncoderConfig, ...&#93; | None = None, image_encoder_precisions: tuple&#91;str, ...&#93; | None = None, text_encoder_configs: tuple&#91;EncoderConfig, ...&#93; = (lambda: (EncoderConfig(),))(), text_encoder_precisions: tuple&#91;str, ...&#93; = (lambda: (&#x27;fp32&#x27;,))(), preprocess_text_funcs: tuple&#91;Callable&#91;&#91;str&#93;, str&#93;, ...&#93; = (lambda: (preprocess_text,))(), postprocess_text_funcs: tuple&#91;Callable&#91;&#91;BaseEncoderOutput&#93;, torch.tensor&#93;, ...&#93; = (lambda: (postprocess_text,))(), dmd_denoising_steps: list&#91;int&#93; | None = None, ti2v_task: bool = False, lucy_edit_task: bool = False, boundary_ratio: float | None = None)</code></pre>
<p>Base configuration for all pipeline architectures.</p>

<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.add_cli_args"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.add_cli_args</code></h3>
<pre class="doc-signature"><code>add_cli_args(parser: FlexibleArgumentParser, prefix: str = &#x27;&#x27;) -&gt; FlexibleArgumentParser</code></pre>

<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.update_config_from_dict"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.update_config_from_dict</code></h3>
<pre class="doc-signature"><code>update_config_from_dict(args: dict&#91;str, Any&#93;, prefix: str = &#x27;&#x27;) -&gt; None</code></pre>

<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.from_pretrained"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.from_pretrained</code></h3>
<pre class="doc-signature"><code>from_pretrained(model_path: str) -&gt; PipelineConfig</code></pre>
<p>use the pipeline class setting from model_path to match the pipeline config</p>
<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.from_kwargs"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.from_kwargs</code></h3>
<pre class="doc-signature"><code>from_kwargs(kwargs: dict&#91;str, Any&#93;, config_cli_prefix: str = &#x27;&#x27;) -&gt; PipelineConfig</code></pre>
<p>Load PipelineConfig from kwargs Dictionary.
kwargs: dictionary of kwargs
config_cli_prefix: prefix of CLI arguments for this PipelineConfig instance</p>
<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.check_pipeline_config"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.check_pipeline_config</code></h3>
<pre class="doc-signature"><code>check_pipeline_config() -&gt; None</code></pre>

<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.resolve_checkpoint_settings"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.resolve_checkpoint_settings</code></h3>
<pre class="doc-signature"><code>resolve_checkpoint_settings(fastvideo_args: FastVideoArgs) -&gt; None</code></pre>
<p>Apply the run settings that the checkpoint at <code>fastvideo_args.model_path</code> fixes.</p>
<p><code>FastVideoArgs.__post_init__</code> calls this once in the main process, before
argument validation and before any weights load. Most checkpoints fix no
run settings, so the base implementation does nothing.</p>
<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.apply_request_constraints"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.apply_request_constraints</code></h3>
<pre class="doc-signature"><code>apply_request_constraints(request: GenerationRequest, sampling_param: SamplingParam) -&gt; SamplingParam</code></pre>
<p>Apply this model's constraints on a generation request to its sampling parameters.</p>
<p><code>sampling_param</code> holds the preset defaults with the request's explicit
fields applied. A model sets the values it fixes when the request leaves
them unset, and raises when the request sets a value it does not accept.
The base PipelineConfig accepts every request unchanged.</p>
<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.dump_to_json"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.dump_to_json</code></h3>
<pre class="doc-signature"><code>dump_to_json(file_path: str)</code></pre>

<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.load_from_json"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.load_from_json</code></h3>
<pre class="doc-signature"><code>load_from_json(file_path: str)</code></pre>

<h3 id="fastvideo.configs.pipelines.kandinsky5.PipelineConfig.update_pipeline_config"><code>fastvideo.configs.pipelines.kandinsky5.PipelineConfig.update_pipeline_config</code></h3>
<pre class="doc-signature"><code>update_pipeline_config(source_pipeline_dict: dict&#91;str, Any&#93;) -&gt; None</code></pre>

<h2 id="fastvideo.configs.pipelines.kandinsky5.preprocess_text"><code>fastvideo.configs.pipelines.kandinsky5.preprocess_text</code></h2>
<pre class="doc-signature"><code>preprocess_text(prompt: str) -&gt; str</code></pre>

<h2 id="fastvideo.configs.pipelines.kandinsky5.kandinsky5_qwen_preprocess_text"><code>fastvideo.configs.pipelines.kandinsky5.kandinsky5_qwen_preprocess_text</code></h2>
<pre class="doc-signature"><code>kandinsky5_qwen_preprocess_text(prompt: str) -&gt; str</code></pre>

<details><summary>Source</summary><pre><code>def kandinsky5_qwen_preprocess_text(prompt: str) -&gt; str:
    if not prompt.strip():
        prompt = &quot;.&quot;
    return KANDINSKY5_PROMPT_TEMPLATE.format(prompt)</code></pre></details>
<h2 id="fastvideo.configs.pipelines.kandinsky5.kandinsky5_qwen_postprocess_text"><code>fastvideo.configs.pipelines.kandinsky5.kandinsky5_qwen_postprocess_text</code></h2>
<pre class="doc-signature"><code>kandinsky5_qwen_postprocess_text(outputs: BaseEncoderOutput, mask: torch.Tensor) -&gt; tuple&#91;torch.Tensor, torch.Tensor&#93;</code></pre>

<details><summary>Source</summary><pre><code>def kandinsky5_qwen_postprocess_text(outputs: BaseEncoderOutput,
                                     mask: torch.Tensor) -&gt; tuple&#91;torch.Tensor, torch.Tensor&#93;:
    if outputs.hidden_states is None:
        raise RuntimeError(&quot;Kandinsky5 Qwen prompt embeddings require hidden_states.&quot;)
    hidden_states = outputs.hidden_states&#91;-1&#93;
    prompt_embeds = hidden_states&#91;:, KANDINSKY5_PROMPT_TEMPLATE_ENCODE_START_IDX:&#93;
    mask = mask&#91;:, KANDINSKY5_PROMPT_TEMPLATE_ENCODE_START_IDX:&#93;
    if prompt_embeds.shape&#91;1&#93; == 0:
        prompt_embeds = hidden_states&#91;:, -1:&#93;
        mask = torch.ones((mask.shape&#91;0&#93;, 1), dtype=mask.dtype, device=mask.device)
    return prompt_embeds, mask</code></pre></details>
<h2 id="fastvideo.configs.pipelines.kandinsky5.kandinsky5_clip_postprocess_text"><code>fastvideo.configs.pipelines.kandinsky5.kandinsky5_clip_postprocess_text</code></h2>
<pre class="doc-signature"><code>kandinsky5_clip_postprocess_text(outputs: BaseEncoderOutput) -&gt; torch.Tensor</code></pre>

<details><summary>Source</summary><pre><code>def kandinsky5_clip_postprocess_text(outputs: BaseEncoderOutput) -&gt; torch.Tensor:
    if outputs.pooler_output is None:
        raise RuntimeError(&quot;Kandinsky5 CLIP pooled output is required.&quot;)
    return outputs.pooler_output</code></pre></details>
<h2 id="fastvideo.configs.pipelines.kandinsky5.Kandinsky5T2VConfig"><code>fastvideo.configs.pipelines.kandinsky5.Kandinsky5T2VConfig</code></h2>
<pre class="doc-signature"><code>Kandinsky5T2VConfig(model_path: str = &#x27;&#x27;, pipeline_config_path: str | None = None, embedded_cfg_scale: float = 6.0, flow_shift: float | None = 5.0, flow_shift_sr: float | None = None, disable_autocast: bool = False, scheduler_step_in_fp32: bool = False, is_causal: bool = False, dit_config: DiTConfig = Kandinsky5VideoConfig(), dit_precision: str = &#x27;bf16&#x27;, upsampler_config: UpsamplerConfig = UpsamplerConfig(), upsampler_precision: str = &#x27;fp32&#x27;, vae_config: VAEConfig = HunyuanVAEConfig(), vae_precision: str = &#x27;bf16&#x27;, vae_decode_precision: str | None = None, vae_tiling: bool = True, vae_sp: bool = True, image_encoder_config: EncoderConfig = EncoderConfig(), image_encoder_precision: str = &#x27;fp32&#x27;, image_encoder_configs: tuple&#91;EncoderConfig, ...&#93; | None = None, image_encoder_precisions: tuple&#91;str, ...&#93; | None = None, text_encoder_configs: tuple&#91;EncoderConfig, ...&#93; = (lambda: (Reason1Config(), CLIPTextConfig()))(), text_encoder_precisions: tuple&#91;str, ...&#93; = (lambda: (&#x27;bf16&#x27;, &#x27;bf16&#x27;))(), preprocess_text_funcs: tuple&#91;Callable&#91;&#91;str&#93;, Any&#93;, ...&#93; = (lambda: (kandinsky5_qwen_preprocess_text, preprocess_text))(), postprocess_text_funcs: tuple&#91;Callable&#91;..., Any&#93;, ...&#93; = (lambda: (kandinsky5_qwen_postprocess_text, kandinsky5_clip_postprocess_text))(), dmd_denoising_steps: list&#91;int&#93; | None = None, ti2v_task: bool = False, lucy_edit_task: bool = False, boundary_ratio: float | None = None, text_encoder_max_lengths: tuple&#91;int, ...&#93; = (lambda: (KANDINSKY5_PROMPT_TEMPLATE_ENCODE_START_IDX + 512, 77))())</code></pre>
<p>Kandinsky-5.0 Lite text-to-video pipeline configuration.</p>

<details><summary>Source</summary><pre><code>@dataclass
class Kandinsky5T2VConfig(PipelineConfig):
    &quot;&quot;&quot;Kandinsky-5.0 Lite text-to-video pipeline configuration.&quot;&quot;&quot;

    dit_config: DiTConfig = field(default_factory=Kandinsky5VideoConfig)
    vae_config: VAEConfig = field(default_factory=HunyuanVAEConfig)

    text_encoder_configs: tuple&#91;EncoderConfig, ...&#93; = field(default_factory=lambda: (Reason1Config(), CLIPTextConfig()))
    preprocess_text_funcs: tuple&#91;Callable&#91;&#91;str&#93;, Any&#93;, ...&#93; = field(
        default_factory=lambda: (kandinsky5_qwen_preprocess_text, preprocess_text))
    postprocess_text_funcs: tuple&#91;Callable&#91;..., Any&#93;, ...&#93; = field(
        default_factory=lambda: (kandinsky5_qwen_postprocess_text, kandinsky5_clip_postprocess_text))

    dit_precision: str = &quot;bf16&quot;
    vae_precision: str = &quot;bf16&quot;
    text_encoder_precisions: tuple&#91;str, ...&#93; = field(default_factory=lambda: (&quot;bf16&quot;, &quot;bf16&quot;))
    text_encoder_max_lengths: tuple&#91;int, ...&#93; = field(
        default_factory=lambda: (KANDINSKY5_PROMPT_TEMPLATE_ENCODE_START_IDX + 512, 77))

    flow_shift: float | None = 5.0
    vae_tiling: bool = True

    def __post_init__(self) -&gt; None:
        if len(self.text_encoder_configs) != 2:
            raise ValueError(f&quot;Kandinsky5 pipeline requires exactly 2 text encoders (qwen and clip), &quot;
                             f&quot;but got &#123;len(self.text_encoder_configs)&#125; encoder(s).&quot;)
        if len(self.text_encoder_precisions) != 2:
            raise ValueError(&quot;Kandinsky5 pipeline requires exactly 2 text encoder precisions, &quot;
                             f&quot;but got &#123;len(self.text_encoder_precisions)&#125;.&quot;)
        if len(self.text_encoder_max_lengths) != 2:
            raise ValueError(&quot;Kandinsky5 pipeline requires exactly 2 text encoder max lengths, &quot;
                             f&quot;but got &#123;len(self.text_encoder_max_lengths)&#125;.&quot;)

        self.vae_config.load_encoder = False
        self.vae_config.load_decoder = True

        qwen_cfg = self.text_encoder_configs&#91;0&#93;
        qwen_cfg.arch_config.output_hidden_states = True
        qwen_cfg.arch_config.tokenizer_kwargs.update(&#123;
            &quot;padding&quot;: True,
            &quot;truncation&quot;: True,
            &quot;return_tensors&quot;: &quot;pt&quot;,
        &#125;)

        clip_cfg = self.text_encoder_configs&#91;1&#93;
        clip_cfg.arch_config.tokenizer_kwargs.update(&#123;
            &quot;padding&quot;: &quot;max_length&quot;,
            &quot;max_length&quot;: 77,
            &quot;truncation&quot;: True,
            &quot;add_special_tokens&quot;: True,
            &quot;return_tensors&quot;: &quot;pt&quot;,
        &#125;)</code></pre></details>
<h2 id="fastvideo.configs.pipelines.kandinsky5.Kandinsky5I2VConfig"><code>fastvideo.configs.pipelines.kandinsky5.Kandinsky5I2VConfig</code></h2>
<pre class="doc-signature"><code>Kandinsky5I2VConfig(model_path: str = &#x27;&#x27;, pipeline_config_path: str | None = None, embedded_cfg_scale: float = 6.0, flow_shift: float | None = 5.0, flow_shift_sr: float | None = None, disable_autocast: bool = False, scheduler_step_in_fp32: bool = False, is_causal: bool = False, dit_config: DiTConfig = Kandinsky5VideoConfig(), dit_precision: str = &#x27;bf16&#x27;, upsampler_config: UpsamplerConfig = UpsamplerConfig(), upsampler_precision: str = &#x27;fp32&#x27;, vae_config: VAEConfig = HunyuanVAEConfig(), vae_precision: str = &#x27;bf16&#x27;, vae_decode_precision: str | None = None, vae_tiling: bool = True, vae_sp: bool = True, image_encoder_config: EncoderConfig = EncoderConfig(), image_encoder_precision: str = &#x27;fp32&#x27;, image_encoder_configs: tuple&#91;EncoderConfig, ...&#93; | None = None, image_encoder_precisions: tuple&#91;str, ...&#93; | None = None, text_encoder_configs: tuple&#91;EncoderConfig, ...&#93; = (lambda: (Reason1Config(), CLIPTextConfig()))(), text_encoder_precisions: tuple&#91;str, ...&#93; = (lambda: (&#x27;bf16&#x27;, &#x27;bf16&#x27;))(), preprocess_text_funcs: tuple&#91;Callable&#91;&#91;str&#93;, Any&#93;, ...&#93; = (lambda: (kandinsky5_qwen_preprocess_text, preprocess_text))(), postprocess_text_funcs: tuple&#91;Callable&#91;..., Any&#93;, ...&#93; = (lambda: (kandinsky5_qwen_postprocess_text, kandinsky5_clip_postprocess_text))(), dmd_denoising_steps: list&#91;int&#93; | None = None, ti2v_task: bool = False, lucy_edit_task: bool = False, boundary_ratio: float | None = None, text_encoder_max_lengths: tuple&#91;int, ...&#93; = (lambda: (KANDINSKY5_PROMPT_TEMPLATE_ENCODE_START_IDX + 512, 77))())</code></pre>
<p>Kandinsky-5.0 image-to-video pipeline configuration.</p>

<details><summary>Source</summary><pre><code>@dataclass
class Kandinsky5I2VConfig(Kandinsky5T2VConfig):
    &quot;&quot;&quot;Kandinsky-5.0 image-to-video pipeline configuration.&quot;&quot;&quot;

    def __post_init__(self) -&gt; None:
        super().__post_init__()
        # I2V needs the VAE encoder to encode the conditioning image.
        self.vae_config.load_encoder = True</code></pre></details>
<h2 id="fastvideo.configs.pipelines.kandinsky5.Kandinsky5DMDConfig"><code>fastvideo.configs.pipelines.kandinsky5.Kandinsky5DMDConfig</code></h2>
<pre class="doc-signature"><code>Kandinsky5DMDConfig(model_path: str = &#x27;&#x27;, pipeline_config_path: str | None = None, embedded_cfg_scale: float = 6.0, flow_shift: float | None = 5.0, flow_shift_sr: float | None = None, disable_autocast: bool = False, scheduler_step_in_fp32: bool = False, is_causal: bool = False, dit_config: DiTConfig = Kandinsky5VideoConfig(), dit_precision: str = &#x27;bf16&#x27;, upsampler_config: UpsamplerConfig = UpsamplerConfig(), upsampler_precision: str = &#x27;fp32&#x27;, vae_config: VAEConfig = HunyuanVAEConfig(), vae_precision: str = &#x27;bf16&#x27;, vae_decode_precision: str | None = None, vae_tiling: bool = True, vae_sp: bool = True, image_encoder_config: EncoderConfig = EncoderConfig(), image_encoder_precision: str = &#x27;fp32&#x27;, image_encoder_configs: tuple&#91;EncoderConfig, ...&#93; | None = None, image_encoder_precisions: tuple&#91;str, ...&#93; | None = None, text_encoder_configs: tuple&#91;EncoderConfig, ...&#93; = (lambda: (Reason1Config(), CLIPTextConfig()))(), text_encoder_precisions: tuple&#91;str, ...&#93; = (lambda: (&#x27;bf16&#x27;, &#x27;bf16&#x27;))(), preprocess_text_funcs: tuple&#91;Callable&#91;&#91;str&#93;, Any&#93;, ...&#93; = (lambda: (kandinsky5_qwen_preprocess_text, preprocess_text))(), postprocess_text_funcs: tuple&#91;Callable&#91;..., Any&#93;, ...&#93; = (lambda: (kandinsky5_qwen_postprocess_text, kandinsky5_clip_postprocess_text))(), dmd_denoising_steps: list&#91;int&#93; | None = (lambda: &#91;1000, 750, 500, 250&#93;)(), ti2v_task: bool = False, lucy_edit_task: bool = False, boundary_ratio: float | None = None, text_encoder_max_lengths: tuple&#91;int, ...&#93; = (lambda: (KANDINSKY5_PROMPT_TEMPLATE_ENCODE_START_IDX + 512, 77))())</code></pre>
<p>Kandinsky-5.0 DMD (few-step distilled) text-to-video pipeline configuration.</p>
<p>Checkpoints exported by <code>fastvideo.train.entrypoint.dcp_to_diffusers</code>
copy their base T2V checkpoint's <code>model_index.json</code> unchanged, so
<code>_class_name</code> still says the base T2V pipeline and the registry
(<code>fastvideo/registry.py</code>) cannot auto-detect a DMD export -- pass this
config together with <code>override_pipeline_cls_name="Kandinsky5DMDPipeline"</code>
explicitly to <code>VideoGenerator.from_pretrained</code>/<code>from_config</code> (see
<code>examples/train/configs/fine_tuning/kandinsky5/README.md</code>). Without it,
<code>Kandinsky5T2VConfig</code>'s <code>dmd_denoising_steps=None</code> makes
<code>Kandinsky5DmdDenoisingStage</code> raise immediately.</p>

<details><summary>Source</summary><pre><code>@dataclass
class Kandinsky5DMDConfig(Kandinsky5T2VConfig):
    &quot;&quot;&quot;Kandinsky-5.0 DMD (few-step distilled) text-to-video pipeline configuration.

    Checkpoints exported by ``fastvideo.train.entrypoint.dcp_to_diffusers``
    copy their base T2V checkpoint&#x27;s ``model_index.json`` unchanged, so
    ``_class_name`` still says the base T2V pipeline and the registry
    (``fastvideo/registry.py``) cannot auto-detect a DMD export -- pass this
    config together with ``override_pipeline_cls_name=&quot;Kandinsky5DMDPipeline&quot;``
    explicitly to ``VideoGenerator.from_pretrained``/``from_config`` (see
    ``examples/train/configs/fine_tuning/kandinsky5/README.md``). Without it,
    ``Kandinsky5T2VConfig``&#x27;s ``dmd_denoising_steps=None`` makes
    ``Kandinsky5DmdDenoisingStage`` raise immediately.
    &quot;&quot;&quot;

    dmd_denoising_steps: list&#91;int&#93; | None = field(default_factory=lambda: &#91;1000, 750, 500, 250&#93;)</code></pre></details>
</div>
