vllm_omni.diffusion.models.flux2_klein ¶
Flux2 klein diffusion model components.
Modules:
| Name | Description |
|---|---|
flux2_klein_transformer | |
pipeline_flux2_klein | |
Flux2KleinPipeline ¶
Bases: Module, CFGParallelMixin, SupportImageInput, DiffusionPipelineProfilerMixin, SupportsComponentDiscovery
Flux2 klein pipeline for text-to-image generation.
image_processor instance-attribute ¶
image_processor = Flux2ImageProcessor(
vae_scale_factor=self.vae_scale_factor * 2
)
latent_channels instance-attribute ¶
latent_channels = (
self.vae.config.latent_channels
if hasattr(self.vae, "config")
else 16
)
mask_processor instance-attribute ¶
mask_processor = VaeImageProcessor(
vae_scale_factor=self.vae_scale_factor * 2,
vae_latent_channels=self.latent_channels,
do_normalize=False,
do_binarize=True,
do_convert_grayscale=True,
)
scheduler instance-attribute ¶
scheduler = FlowMatchEulerDiscreteScheduler.from_pretrained(
model,
subfolder="scheduler",
local_files_only=local_files_only,
)
text_encoder instance-attribute ¶
text_encoder = from_pretrained_with_prefetch(
Qwen3ForCausalLM.from_pretrained,
model,
subfolder="text_encoder",
prefetch_list=flux2_subfolders,
local_files_only=local_files_only,
).to(self._execution_device)
tokenizer instance-attribute ¶
tokenizer = Qwen2TokenizerFast.from_pretrained(
model,
subfolder="tokenizer",
local_files_only=local_files_only,
)
transformer instance-attribute ¶
transformer = Flux2Transformer2DModel(
quant_config=od_config.quantization_config,
**transformer_kwargs,
)
vae instance-attribute ¶
vae = from_pretrained_with_prefetch(
AutoencoderKLFlux2.from_pretrained,
model,
subfolder="vae",
prefetch_list=flux2_subfolders,
local_files_only=local_files_only,
).to(self._execution_device)
vae_scale_factor instance-attribute ¶
vae_scale_factor = (
2 ** (len(self.vae.config.block_out_channels) - 1)
if getattr(self, "vae", None)
else 8
)
weights_sources instance-attribute ¶
weights_sources = [
DiffusersPipelineLoader.ComponentSource(
model_or_path=od_config.model,
subfolder="transformer",
revision=None,
prefix="transformer.",
fall_back_to_pt=True,
)
]
check_inputs ¶
check_inputs(
prompt,
height,
width,
prompt_embeds=None,
callback_on_step_end_tensor_inputs=None,
guidance_scale=None,
strength=None,
num_inference_steps=None,
)
encode_prompt ¶
encode_prompt(
prompt: str | list[str],
device: device | None = None,
num_images_per_prompt: int = 1,
prompt_embeds: Tensor | None = None,
max_sequence_length: int = 512,
text_encoder_out_layers: tuple[int, ...] = (9, 18, 27),
)
prepare_image_latents ¶
prepare_image_latents(
images: list[Tensor],
batch_size,
generator: Generator,
device,
dtype,
)
prepare_latents ¶
prepare_latents(
batch_size,
num_latents_channels,
height,
width,
dtype,
device,
generator: Generator,
latents: Tensor | None = None,
)
prepare_mask_latents ¶
prepare_mask_latents(
mask,
masked_image,
batch_size,
num_channels_latents,
num_images_per_prompt,
height,
width,
dtype,
device,
generator,
)
Flux2Transformer2DModel ¶
Bases: Module
The Transformer model introduced in Flux 2.
Supports Sequence Parallelism (Ulysses and Ring) when configured via OmniDiffusionConfig.
config instance-attribute ¶
config = SimpleNamespace(
patch_size=patch_size,
in_channels=in_channels,
out_channels=self.out_channels,
num_layers=num_layers,
num_single_layers=num_single_layers,
attention_head_dim=attention_head_dim,
num_attention_heads=num_attention_heads,
joint_attention_dim=joint_attention_dim,
timestep_guidance_channels=timestep_guidance_channels,
mlp_ratio=mlp_ratio,
axes_dims_rope=axes_dims_rope,
rope_theta=rope_theta,
eps=eps,
guidance_embeds=guidance_embeds,
)
context_embedder instance-attribute ¶
double_stream_modulation_img instance-attribute ¶
double_stream_modulation_img = Flux2Modulation(
self.inner_dim, mod_param_sets=2, bias=False
)
double_stream_modulation_txt instance-attribute ¶
double_stream_modulation_txt = Flux2Modulation(
self.inner_dim, mod_param_sets=2, bias=False
)
norm_out instance-attribute ¶
norm_out = AdaLayerNormContinuous(
self.inner_dim,
self.inner_dim,
elementwise_affine=False,
eps=eps,
bias=False,
)
pos_embed instance-attribute ¶
pos_embed = Flux2PosEmbed(
theta=rope_theta, axes_dim=list(axes_dims_rope)
)
proj_out instance-attribute ¶
single_stream_modulation instance-attribute ¶
single_stream_modulation = Flux2Modulation(
self.inner_dim, mod_param_sets=1, bias=False
)
single_transformer_blocks instance-attribute ¶
single_transformer_blocks = nn.ModuleList(
[
(
Flux2SingleTransformerBlock(
parallel_config=self.parallel_config,
dim=self.inner_dim,
num_attention_heads=num_attention_heads,
attention_head_dim=attention_head_dim,
mlp_ratio=mlp_ratio,
eps=eps,
bias=False,
quant_config=quant_config,
prefix=f"single_transformer_blocks.{i}",
)
)
for i in (range(num_single_layers))
]
)
time_guidance_embed instance-attribute ¶
time_guidance_embed = Flux2TimestepGuidanceEmbeddings(
in_channels=timestep_guidance_channels,
embedding_dim=self.inner_dim,
bias=False,
guidance_embeds=guidance_embeds,
)
transformer_blocks instance-attribute ¶
transformer_blocks = nn.ModuleList(
[
(
Flux2TransformerBlock(
parallel_config=self.parallel_config,
dim=self.inner_dim,
num_attention_heads=num_attention_heads,
attention_head_dim=attention_head_dim,
mlp_ratio=mlp_ratio,
eps=eps,
bias=False,
quant_config=quant_config,
prefix=f"transformer_blocks.{i}",
)
)
for i in (range(num_layers))
]
)
get_flux2_klein_post_process_func ¶
get_flux2_klein_post_process_func(
od_config: OmniDiffusionConfig,
)