---
title: flux
---

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

<h2 id="fastvideo.configs.pipelines.flux.EncoderConfig"><code>fastvideo.configs.pipelines.flux.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.flux.FluxDiTConfig"><code>fastvideo.configs.pipelines.flux.FluxDiTConfig</code></h2>
<pre class="doc-signature"><code>FluxDiTConfig(arch_config: DiTArchConfig = FluxTransformer2DArchConfig(), prefix: str = &#x27;flux&#x27;, quant_config: QuantizationConfig | None = None, *, _resolved_attention_backend: AttentionBackendEnum | None = None)</code></pre>


<h2 id="fastvideo.configs.pipelines.flux.BaseEncoderOutput"><code>fastvideo.configs.pipelines.flux.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.flux.CLIPTextConfig"><code>fastvideo.configs.pipelines.flux.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.flux.T5LargeConfig"><code>fastvideo.configs.pipelines.flux.T5LargeConfig</code></h2>
<pre class="doc-signature"><code>T5LargeConfig(arch_config: TextEncoderArchConfig = T5LargeArchConfig(), prefix: str = &#x27;t5&#x27;, quant_config: QuantizationConfig | None = None, lora_config: Any | None = None, is_chat_model: bool = False, treat_empty_as_dot: bool = False, *, _resolved_attention_backend: AttentionBackendEnum | None = None, chat_template_enable_thinking: bool = False)</code></pre>
<p>T5 Large configuration for your specific model.</p>

<h2 id="fastvideo.configs.pipelines.flux.AutoencoderKLVAEConfig"><code>fastvideo.configs.pipelines.flux.AutoencoderKLVAEConfig</code></h2>
<pre class="doc-signature"><code>AutoencoderKLVAEConfig(arch_config: VAEArchConfig = AutoencoderKLArchConfig(), 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.flux.PipelineConfig"><code>fastvideo.configs.pipelines.flux.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.flux.PipelineConfig.add_cli_args"><code>fastvideo.configs.pipelines.flux.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.flux.PipelineConfig.update_config_from_dict"><code>fastvideo.configs.pipelines.flux.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.flux.PipelineConfig.from_pretrained"><code>fastvideo.configs.pipelines.flux.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.flux.PipelineConfig.from_kwargs"><code>fastvideo.configs.pipelines.flux.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.flux.PipelineConfig.check_pipeline_config"><code>fastvideo.configs.pipelines.flux.PipelineConfig.check_pipeline_config</code></h3>
<pre class="doc-signature"><code>check_pipeline_config() -&gt; None</code></pre>

<h3 id="fastvideo.configs.pipelines.flux.PipelineConfig.resolve_checkpoint_settings"><code>fastvideo.configs.pipelines.flux.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.flux.PipelineConfig.apply_request_constraints"><code>fastvideo.configs.pipelines.flux.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.flux.PipelineConfig.dump_to_json"><code>fastvideo.configs.pipelines.flux.PipelineConfig.dump_to_json</code></h3>
<pre class="doc-signature"><code>dump_to_json(file_path: str)</code></pre>

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

<h3 id="fastvideo.configs.pipelines.flux.PipelineConfig.update_pipeline_config"><code>fastvideo.configs.pipelines.flux.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.flux.preprocess_text"><code>fastvideo.configs.pipelines.flux.preprocess_text</code></h2>
<pre class="doc-signature"><code>preprocess_text(prompt: str) -&gt; str</code></pre>

<h2 id="fastvideo.configs.pipelines.flux.FluxPipelineConfig"><code>fastvideo.configs.pipelines.flux.FluxPipelineConfig</code></h2>
<pre class="doc-signature"><code>FluxPipelineConfig(model_path: str = &#x27;&#x27;, pipeline_config_path: str | None = None, embedded_cfg_scale: float = 3.5, 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: FluxDiTConfig = FluxDiTConfig(), dit_precision: str = &#x27;bf16&#x27;, upsampler_config: UpsamplerConfig = UpsamplerConfig(), upsampler_precision: str = &#x27;fp32&#x27;, vae_config: AutoencoderKLVAEConfig = AutoencoderKLVAEConfig(), 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: (CLIPTextConfig(), T5LargeConfig()))(), text_encoder_precisions: tuple&#91;str, ...&#93; = (lambda: (&#x27;fp32&#x27;, &#x27;bf16&#x27;))(), preprocess_text_funcs: tuple&#91;Callable&#91;&#91;str&#93;, str&#93;, ...&#93; = (lambda: (preprocess_text, preprocess_text))(), postprocess_text_funcs: tuple&#91;Callable&#91;&#91;BaseEncoderOutput&#93;, torch.Tensor&#93;, ...&#93; = (lambda: (_flux_clip_pooled_postprocess, _flux_t5_sequence_postprocess))(), dmd_denoising_steps: list&#91;int&#93; | None = None, ti2v_task: bool = False, lucy_edit_task: bool = False, boundary_ratio: float | None = None, scheduler_arch: str = &#x27;FlowMatchEulerDiscreteScheduler&#x27;, transformer_arch: str = &#x27;FluxTransformer2DModel&#x27;, vae_arch: str = &#x27;AutoencoderKL&#x27;, text_encoder_archs: tuple&#91;str, ...&#93; = (&#x27;CLIPTextModel&#x27;, &#x27;T5EncoderModel&#x27;), tokenizer_archs: tuple&#91;str, ...&#93; = (&#x27;CLIPTokenizer&#x27;, &#x27;T5TokenizerFast&#x27;))</code></pre>
<p>Pipeline layout for Diffusers FLUX.1-dev (CLIP + T5 + packed DiT + FlowMatch).</p>

<details><summary>Source</summary><pre><code>@dataclass
class FluxPipelineConfig(PipelineConfig):
    &quot;&quot;&quot;Pipeline layout for Diffusers FLUX.1-dev (CLIP + T5 + packed DiT + FlowMatch).&quot;&quot;&quot;

    scheduler_arch: str = &quot;FlowMatchEulerDiscreteScheduler&quot;
    transformer_arch: str = &quot;FluxTransformer2DModel&quot;
    vae_arch: str = &quot;AutoencoderKL&quot;
    text_encoder_archs: tuple&#91;str, ...&#93; = (&quot;CLIPTextModel&quot;, &quot;T5EncoderModel&quot;)
    tokenizer_archs: tuple&#91;str, ...&#93; = (&quot;CLIPTokenizer&quot;, &quot;T5TokenizerFast&quot;)

    dit_config: FluxDiTConfig = field(default_factory=FluxDiTConfig)
    vae_config: AutoencoderKLVAEConfig = field(default_factory=AutoencoderKLVAEConfig)

    embedded_cfg_scale: float = 3.5
    flow_shift: float | None = None

    text_encoder_configs: tuple&#91;EncoderConfig, ...&#93; = field(default_factory=lambda: (CLIPTextConfig(), T5LargeConfig()))
    preprocess_text_funcs: tuple&#91;Callable&#91;&#91;str&#93;, str&#93;,
                                 ...&#93; = field(default_factory=lambda: (preprocess_text, preprocess_text))
    postprocess_text_funcs: tuple&#91;Callable&#91;&#91;BaseEncoderOutput&#93;, torch.Tensor&#93;, ...&#93; = field(
        default_factory=lambda: (_flux_clip_pooled_postprocess, _flux_t5_sequence_postprocess))

    dit_precision: str = &quot;bf16&quot;
    vae_precision: str = &quot;fp32&quot;
    text_encoder_precisions: tuple&#91;str, ...&#93; = field(default_factory=lambda: (&quot;fp32&quot;, &quot;bf16&quot;))

    def __post_init__(self) -&gt; None:
        te_cfgs = list(self.text_encoder_configs)
        if len(te_cfgs) &gt;= 1:
            te_cfgs&#91;0&#93;.tokenizer_kwargs.setdefault(&quot;padding&quot;, &quot;max_length&quot;)
            te_cfgs&#91;0&#93;.tokenizer_kwargs.setdefault(&quot;max_length&quot;, 77)
            te_cfgs&#91;0&#93;.tokenizer_kwargs.setdefault(&quot;truncation&quot;, True)
            te_cfgs&#91;0&#93;.tokenizer_kwargs.setdefault(&quot;return_tensors&quot;, &quot;pt&quot;)
        if len(te_cfgs) &gt;= 2:
            cap = 512
            te_cfgs&#91;1&#93;.tokenizer_kwargs&#91;&quot;max_length&quot;&#93; = min(int(te_cfgs&#91;1&#93;.tokenizer_kwargs.get(&quot;max_length&quot;, cap)),
                                                            cap)
            te_cfgs&#91;1&#93;.tokenizer_kwargs.setdefault(&quot;padding&quot;, &quot;max_length&quot;)
            te_cfgs&#91;1&#93;.tokenizer_kwargs.setdefault(&quot;truncation&quot;, True)
            te_cfgs&#91;1&#93;.tokenizer_kwargs.setdefault(&quot;return_tensors&quot;, &quot;pt&quot;)</code></pre></details>
</div>
