Buckets:

download
raw
43.8 kB
import"../chunks/DsnmJJEf.js";import{i as B,h as q,C as z,H as l,D as o,E,s as D,a as g}from"../chunks/BtE7mKSK.js";import{p as Q,o as Y,s as e,f as d,a as c,b as S,c as s,d as h,r as a,n as X}from"../chunks/jDjavuwI.js";import{E as f}from"../chunks/SrSJA0zO.js";const R='{"title":"Flux2","local":"flux2","sections":[{"title":"Caption upsampling","local":"caption-upsampling","sections":[],"depth":2},{"title":"Flux2Pipeline","local":"diffusers.Flux2Pipeline","sections":[],"depth":2},{"title":"Flux2KleinPipeline","local":"diffusers.Flux2KleinPipeline","sections":[],"depth":2},{"title":"Flux2KleinKVPipeline","local":"diffusers.Flux2KleinKVPipeline","sections":[],"depth":2}],"depth":1}';var H=h('<meta name="hf:doc:metadata"/>'),_=h("<p>Examples:</p> <!>",1),A=h(`<p></p> <!> <!> <div class="flex flex-wrap space-x-1"><img alt="LoRA" src="https://img.shields.io/badge/LoRA-d8b4fe?style=flat"/> <img alt="MPS" src="https://img.shields.io/badge/MPS-000000?style=flat&amp;logo=apple&amp;logoColor=white%22"/></div> <p>Flux.2 is the recent series of image generation models from Black Forest Labs, preceded by the <a href="./flux">Flux.1</a> series. It is an entirely new model with a new architecture and pre-training done from scratch!</p> <p>Original model checkpoints for Flux can be found <a href="https://huggingface.co/black-forest-labs" rel="nofollow">here</a>. Original inference code can be found <a href="https://github.com/black-forest-labs/flux2" rel="nofollow">here</a>.</p> <blockquote class="tip"><p>Flux2 can be quite expensive to run on consumer hardware devices. However, you can perform a suite of optimizations to run it faster and in a more memory-friendly manner. Check out <a href="https://huggingface.co/blog/sd3#memory-optimizations-for-sd3" rel="nofollow">this section</a> for more details. Additionally, Flux can benefit from quantization for memory efficiency with a trade-off in inference latency. Refer to <a href="https://huggingface.co/blog/quanto-diffusers" rel="nofollow">this blog post</a> to learn more.</p> <p><a href="../../optimization/cache">Caching</a> may also speed up inference by storing and reusing intermediate outputs.</p></blockquote> <!> <p>Flux.2 can potentially generate better better outputs with better prompts. We can “upsample”
an input prompt by setting the <code>caption_upsample_temperature</code> argument in the pipeline call arguments.
The <a href="https://github.com/black-forest-labs/flux2/blob/5a5d316b1b42f6b59a8c9194b77c8256be848432/src/flux2/text_encoder.py#L140" rel="nofollow">official implementation</a> recommends this value to be 0.15.</p> <!> <div class="docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"><!> <p>The Flux2 pipeline for text-to-image generation.</p> <p>Reference: <a href="https://bfl.ai/blog/flux-2" rel="nofollow">https://bfl.ai/blog/flux-2</a></p> <div class="docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"><!> <p>Function invoked when calling the pipeline for generation.</p> <!></div></div> <!> <div class="docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"><!> <p>The Flux2 Klein pipeline for text-to-image generation.</p> <p>Reference: <a href="https://bfl.ai/blog/flux2-klein-towards-interactive-visual-intelligence" rel="nofollow">https://bfl.ai/blog/flux2-klein-towards-interactive-visual-intelligence</a></p> <div class="docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"><!> <p>Function invoked when calling the pipeline for generation.</p> <!></div></div> <!> <div class="docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"><!> <p>The Flux2 Klein KV pipeline for text-to-image generation with KV-cached reference image conditioning.</p> <p>On the first denoising step, reference image tokens are included in the forward pass and their attention K/V
projections are cached. On subsequent steps, the cached K/V are reused without recomputing, providing faster
inference when using reference images.</p> <p>Reference: <a href="https://bfl.ai/blog/flux2-klein-towards-interactive-visual-intelligence" rel="nofollow">https://bfl.ai/blog/flux2-klein-towards-interactive-visual-intelligence</a></p> <div class="docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"><!> <p>Function invoked when calling the pipeline for generation.</p> <!></div></div> <!> <p></p>`,1);function te(Z,V){Q(V,!1),Y(()=>{new URLSearchParams(window.location.search).get("fw")}),B();var x=A();q("z2yr8f",n=>{var i=H();D(i,"content",R),c(n,i)});var b=e(d(x),2);z(b,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var w=e(b,2);l(w,{title:"Flux2",local:"flux2",headingTag:"h1"});var y=e(w,10);l(y,{title:"Caption upsampling",local:"caption-upsampling",headingTag:"h2"});var v=e(y,4);l(v,{title:"Flux2Pipeline",local:"diffusers.Flux2Pipeline",headingTag:"h2"});var p=e(v,2),F=s(p);o(F,{name:"class diffusers.Flux2Pipeline",anchor:"diffusers.Flux2Pipeline",source:"https://github.com/huggingface/diffusers/blob/vr_14261/src/diffusers/pipelines/flux2/pipeline_flux2.py#L251",parameters:[{name:"scheduler",val:": FlowMatchEulerDiscreteScheduler"},{name:"vae",val:": AutoencoderKLFlux2"},{name:"text_encoder",val:": Mistral3ForConditionalGeneration"},{name:"tokenizer",val:": AutoProcessor"},{name:"transformer",val:": Flux2Transformer2DModel"}],parametersDescription:[{anchor:"diffusers.Flux2Pipeline.transformer",description:`<strong>transformer</strong> (<a href="/docs/diffusers/pr_14261/en/api/models/flux2_transformer#diffusers.Flux2Transformer2DModel">Flux2Transformer2DModel</a>) &#x2014;
Conditional Transformer (MMDiT) architecture to denoise the encoded image latents.`,name:"transformer"},{anchor:"diffusers.Flux2Pipeline.scheduler",description:`<strong>scheduler</strong> (<a href="/docs/diffusers/pr_14261/en/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler">FlowMatchEulerDiscreteScheduler</a>) &#x2014;
A scheduler to be used in combination with <code>transformer</code> to denoise the encoded image latents.`,name:"scheduler"},{anchor:"diffusers.Flux2Pipeline.vae",description:`<strong>vae</strong> (<code>AutoencoderKLFlux2</code>) &#x2014;
Variational Auto-Encoder (VAE) Model to encode and decode images to and from latent representations.`,name:"vae"},{anchor:"diffusers.Flux2Pipeline.text_encoder",description:`<strong>text_encoder</strong> (<code>Mistral3ForConditionalGeneration</code>) &#x2014;
<a href="https://huggingface.co/docs/transformers/en/model_doc/mistral3#transformers.Mistral3ForConditionalGeneration" rel="nofollow">Mistral3ForConditionalGeneration</a>`,name:"text_encoder"},{anchor:"diffusers.Flux2Pipeline.tokenizer",description:`<strong>tokenizer</strong> (<code>AutoProcessor</code>) &#x2014;
Tokenizer of class
<a href="https://huggingface.co/docs/transformers/en/model_doc/pixtral#transformers.PixtralProcessor" rel="nofollow">PixtralProcessor</a>.`,name:"tokenizer"}]});var T=e(F,6),M=s(T);o(M,{name:"__call__",anchor:"diffusers.Flux2Pipeline.__call__",source:"https://github.com/huggingface/diffusers/blob/vr_14261/src/diffusers/pipelines/flux2/pipeline_flux2.py#L745",parameters:[{name:"image",val:": PIL.Image.Image | list[PIL.Image.Image] | None = None"},{name:"prompt",val:": str | list[str] = None"},{name:"height",val:": int | None = None"},{name:"width",val:": int | None = None"},{name:"num_inference_steps",val:": int = 50"},{name:"sigmas",val:": list[float] | None = None"},{name:"guidance_scale",val:": float | None = 4.0"},{name:"num_images_per_prompt",val:": int = 1"},{name:"generator",val:": typing.Union[torch.Generator, list[torch.Generator], NoneType] = None"},{name:"latents",val:": typing.Optional[torch.Tensor] = None"},{name:"prompt_embeds",val:": typing.Optional[torch.Tensor] = None"},{name:"output_type",val:": str | None = 'pil'"},{name:"return_dict",val:": bool = True"},{name:"attention_kwargs",val:": dict[str, typing.Any] | None = None"},{name:"callback_on_step_end",val:": typing.Optional[typing.Callable[[int, int], NoneType]] = None"},{name:"callback_on_step_end_tensor_inputs",val:": list = ['latents']"},{name:"max_sequence_length",val:": int = 512"},{name:"text_encoder_out_layers",val:": tuple = (10, 20, 30)"},{name:"caption_upsample_temperature",val:": float = None"}],parametersDescription:[{anchor:"diffusers.Flux2Pipeline.__call__.image",description:`<strong>image</strong> (<code>torch.Tensor</code>, <code>PIL.Image.Image</code>, <code>np.ndarray</code>, <code>list[torch.Tensor]</code>, <code>list[PIL.Image.Image]</code>, or <code>list[np.ndarray]</code>) &#x2014;
<code>Image</code>, numpy array or tensor representing an image batch to be used as the starting point. For both
numpy array and pytorch tensor, the expected value range is between <code>[0, 1]</code> If it&#x2019;s a tensor or a list
or tensors, the expected shape should be <code>(B, C, H, W)</code> or <code>(C, H, W)</code>. If it is a numpy array or a
list of arrays, the expected shape should be <code>(B, H, W, C)</code> or <code>(H, W, C)</code> It can also accept image
latents as <code>image</code>, but if passing latents directly it is not encoded again.`,name:"image"},{anchor:"diffusers.Flux2Pipeline.__call__.prompt",description:`<strong>prompt</strong> (<code>str</code> or <code>list[str]</code>, <em>optional</em>) &#x2014;
The prompt or prompts to guide the image generation. If not defined, one has to pass <code>prompt_embeds</code>.
instead.`,name:"prompt"},{anchor:"diffusers.Flux2Pipeline.__call__.guidance_scale",description:`<strong>guidance_scale</strong> (<code>float</code>, <em>optional</em>, defaults to 1.0) &#x2014;
Embedded guiddance scale is enabled by setting <code>guidance_scale</code> &gt; 1. Higher <code>guidance_scale</code> encourages
a model to generate images more aligned with <code>prompt</code> at the expense of lower image quality.</p>
<p>Guidance-distilled models approximates true classifer-free guidance for <code>guidance_scale</code> &gt; 1. Refer to
the <a href="https://huggingface.co/papers/2210.03142" rel="nofollow">paper</a> to learn more.`,name:"guidance_scale"},{anchor:"diffusers.Flux2Pipeline.__call__.height",description:`<strong>height</strong> (<code>int</code>, <em>optional</em>, defaults to self.unet.config.sample_size * self.vae_scale_factor) &#x2014;
The height in pixels of the generated image. This is set to 1024 by default for the best results.`,name:"height"},{anchor:"diffusers.Flux2Pipeline.__call__.width",description:`<strong>width</strong> (<code>int</code>, <em>optional</em>, defaults to self.unet.config.sample_size * self.vae_scale_factor) &#x2014;
The width in pixels of the generated image. This is set to 1024 by default for the best results.`,name:"width"},{anchor:"diffusers.Flux2Pipeline.__call__.num_inference_steps",description:`<strong>num_inference_steps</strong> (<code>int</code>, <em>optional</em>, defaults to 50) &#x2014;
The number of denoising steps. More denoising steps usually lead to a higher quality image at the
expense of slower inference.`,name:"num_inference_steps"},{anchor:"diffusers.Flux2Pipeline.__call__.sigmas",description:`<strong>sigmas</strong> (<code>list[float]</code>, <em>optional</em>) &#x2014;
Custom sigmas to use for the denoising process with schedulers which support a <code>sigmas</code> argument in
their <code>set_timesteps</code> method. If not defined, the default behavior when <code>num_inference_steps</code> is passed
will be used.`,name:"sigmas"},{anchor:"diffusers.Flux2Pipeline.__call__.num_images_per_prompt",description:`<strong>num_images_per_prompt</strong> (<code>int</code>, <em>optional</em>, defaults to 1) &#x2014;
The number of images to generate per prompt.`,name:"num_images_per_prompt"},{anchor:"diffusers.Flux2Pipeline.__call__.generator",description:`<strong>generator</strong> (<code>torch.Generator</code> or <code>list[torch.Generator]</code>, <em>optional</em>) &#x2014;
One or a list of <a href="https://pytorch.org/docs/stable/generated/torch.Generator.html" rel="nofollow">torch generator(s)</a>
to make generation deterministic.`,name:"generator"},{anchor:"diffusers.Flux2Pipeline.__call__.latents",description:`<strong>latents</strong> (<code>torch.Tensor</code>, <em>optional</em>) &#x2014;
Pre-generated noisy latents, sampled from a Gaussian distribution, to be used as inputs for image
generation. Can be used to tweak the same generation with different prompts. If not provided, a latents
tensor will be generated by sampling using the supplied random <code>generator</code>.`,name:"latents"},{anchor:"diffusers.Flux2Pipeline.__call__.prompt_embeds",description:`<strong>prompt_embeds</strong> (<code>torch.Tensor</code>, <em>optional</em>) &#x2014;
Pre-generated text embeddings. Can be used to easily tweak text inputs, <em>e.g.</em> prompt weighting. If not
provided, text embeddings will be generated from <code>prompt</code> input argument.`,name:"prompt_embeds"},{anchor:"diffusers.Flux2Pipeline.__call__.output_type",description:`<strong>output_type</strong> (<code>str</code>, <em>optional</em>, defaults to <code>&quot;pil&quot;</code>) &#x2014;
The output format of the generate image. Choose between
<a href="https://pillow.readthedocs.io/en/stable/" rel="nofollow">PIL</a>: <code>PIL.Image.Image</code> or <code>np.array</code>.`,name:"output_type"},{anchor:"diffusers.Flux2Pipeline.__call__.return_dict",description:`<strong>return_dict</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) &#x2014;
Whether or not to return a <code>~pipelines.qwenimage.QwenImagePipelineOutput</code> instead of a plain tuple.`,name:"return_dict"},{anchor:"diffusers.Flux2Pipeline.__call__.attention_kwargs",description:`<strong>attention_kwargs</strong> (<code>dict</code>, <em>optional</em>) &#x2014;
A kwargs dictionary that if specified is passed along to the <code>AttentionProcessor</code> as defined under
<code>self.processor</code> in
<a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py" rel="nofollow">diffusers.models.attention_processor</a>.`,name:"attention_kwargs"},{anchor:"diffusers.Flux2Pipeline.__call__.callback_on_step_end",description:`<strong>callback_on_step_end</strong> (<code>Callable</code>, <em>optional</em>) &#x2014;
A function that calls at the end of each denoising steps during the inference. The function is called
with the following arguments: <code>callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)</code>. <code>callback_kwargs</code> will include a list of all tensors as specified by
<code>callback_on_step_end_tensor_inputs</code>.`,name:"callback_on_step_end"},{anchor:"diffusers.Flux2Pipeline.__call__.callback_on_step_end_tensor_inputs",description:`<strong>callback_on_step_end_tensor_inputs</strong> (<code>List</code>, <em>optional</em>) &#x2014;
The list of tensor inputs for the <code>callback_on_step_end</code> function. The tensors specified in the list
will be passed as <code>callback_kwargs</code> argument. You will only be able to include variables listed in the
<code>._callback_tensor_inputs</code> attribute of your pipeline class.`,name:"callback_on_step_end_tensor_inputs"},{anchor:"diffusers.Flux2Pipeline.__call__.max_sequence_length",description:"<strong>max_sequence_length</strong> (<code>int</code> defaults to 512) &#x2014; Maximum sequence length to use with the <code>prompt</code>.",name:"max_sequence_length"},{anchor:"diffusers.Flux2Pipeline.__call__.text_encoder_out_layers",description:`<strong>text_encoder_out_layers</strong> (<code>tuple[int]</code>) &#x2014;
Layer indices to use in the <code>text_encoder</code> to derive the final prompt embeddings.`,name:"text_encoder_out_layers"},{anchor:"diffusers.Flux2Pipeline.__call__.caption_upsample_temperature",description:`<strong>caption_upsample_temperature</strong> (<code>float</code>) &#x2014;
When specified, we will try to perform caption upsampling for potentially improved outputs. We
recommend setting it to 0.15 if caption upsampling is to be performed.`,name:"caption_upsample_temperature"}],returnDescription:`<script context="module">export const metadata = 'undefined';<\/script>
<p><code>~pipelines.flux2.Flux2PipelineOutput</code> if
<code>return_dict</code> is True, otherwise a <code>tuple</code>. When returning a tuple, the first element is a list with the
generated images.</p>
`,returnType:`<script context="module">export const metadata = 'undefined';<\/script>
<p><code>~pipelines.flux2.Flux2PipelineOutput</code> or <code>tuple</code></p>
`});var W=e(M,4);f(W,{anchor:"diffusers.Flux2Pipeline.__call__.example",children:(n,i)=>{var t=_(),r=e(d(t),2);g(r,{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRmx1eDJQaXBlbGluZSUwQSUwQXBpcGUlMjAlM0QlMjBGbHV4MlBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMjJibGFjay1mb3Jlc3QtbGFicyUyRkZMVVguMi1kZXYlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmJmbG9hdDE2KSUwQXBpcGUudG8oJTIyY3VkYSUyMiklMEFwcm9tcHQlMjAlM0QlMjAlMjJBJTIwY2F0JTIwaG9sZGluZyUyMGElMjBzaWduJTIwdGhhdCUyMHNheXMlMjBoZWxsbyUyMHdvcmxkJTIyJTBBJTIzJTIwRGVwZW5kaW5nJTIwb24lMjB0aGUlMjB2YXJpYW50JTIwYmVpbmclMjB1c2VkJTJDJTIwdGhlJTIwcGlwZWxpbmUlMjBjYWxsJTIwd2lsbCUyMHNsaWdodGx5JTIwdmFyeS4lMEElMjMlMjBSZWZlciUyMHRvJTIwdGhlJTIwcGlwZWxpbmUlMjBkb2N1bWVudGF0aW9uJTIwZm9yJTIwbW9yZSUyMGRldGFpbHMuJTBBaW1hZ2UlMjAlM0QlMjBwaXBlKHByb21wdCUyQyUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0Q1MCUyQyUyMGd1aWRhbmNlX3NjYWxlJTNEMi41KS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2Uuc2F2ZSglMjJmbHV4LnBuZyUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> Flux2Pipeline
<span class="hljs-meta">&gt;&gt;&gt; </span>pipe = Flux2Pipeline.from_pretrained(<span class="hljs-string">&quot;black-forest-labs/FLUX.2-dev&quot;</span>, torch_dtype=torch.bfloat16)
<span class="hljs-meta">&gt;&gt;&gt; </span>pipe.to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>prompt = <span class="hljs-string">&quot;A cat holding a sign that says hello world&quot;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Depending on the variant being used, the pipeline call will slightly vary.</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Refer to the pipeline documentation for more details.</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>image = pipe(prompt, num_inference_steps=<span class="hljs-number">50</span>, guidance_scale=<span class="hljs-number">2.5</span>).images[<span class="hljs-number">0</span>]
<span class="hljs-meta">&gt;&gt;&gt; </span>image.save(<span class="hljs-string">&quot;flux.png&quot;</span>)`,lang:"py",wrap:!1}),c(n,t)},$$slots:{default:!0}}),a(T),a(p);var k=e(p,2);l(k,{title:"Flux2KleinPipeline",local:"diffusers.Flux2KleinPipeline",headingTag:"h2"});var m=e(k,2),P=s(m);o(P,{name:"class diffusers.Flux2KleinPipeline",anchor:"diffusers.Flux2KleinPipeline",source:"https://github.com/huggingface/diffusers/blob/vr_14261/src/diffusers/pipelines/flux2/pipeline_flux2_klein.py#L155",parameters:[{name:"scheduler",val:": FlowMatchEulerDiscreteScheduler"},{name:"vae",val:": AutoencoderKLFlux2"},{name:"text_encoder",val:": Qwen3ForCausalLM"},{name:"tokenizer",val:": Qwen2Tokenizer"},{name:"transformer",val:": Flux2Transformer2DModel"},{name:"is_distilled",val:": bool = False"}],parametersDescription:[{anchor:"diffusers.Flux2KleinPipeline.transformer",description:`<strong>transformer</strong> (<a href="/docs/diffusers/pr_14261/en/api/models/flux2_transformer#diffusers.Flux2Transformer2DModel">Flux2Transformer2DModel</a>) &#x2014;
Conditional Transformer (MMDiT) architecture to denoise the encoded image latents.`,name:"transformer"},{anchor:"diffusers.Flux2KleinPipeline.scheduler",description:`<strong>scheduler</strong> (<a href="/docs/diffusers/pr_14261/en/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler">FlowMatchEulerDiscreteScheduler</a>) &#x2014;
A scheduler to be used in combination with <code>transformer</code> to denoise the encoded image latents.`,name:"scheduler"},{anchor:"diffusers.Flux2KleinPipeline.vae",description:`<strong>vae</strong> (<code>AutoencoderKLFlux2</code>) &#x2014;
Variational Auto-Encoder (VAE) Model to encode and decode images to and from latent representations.`,name:"vae"},{anchor:"diffusers.Flux2KleinPipeline.text_encoder",description:`<strong>text_encoder</strong> (<code>Qwen3ForCausalLM</code>) &#x2014;
<a href="https://huggingface.co/docs/transformers/en/model_doc/qwen3#transformers.Qwen3ForCausalLM" rel="nofollow">Qwen3ForCausalLM</a>`,name:"text_encoder"},{anchor:"diffusers.Flux2KleinPipeline.tokenizer",description:`<strong>tokenizer</strong> (<code>Qwen2TokenizerFast</code>) &#x2014;
Tokenizer of class
<a href="https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2TokenizerFast" rel="nofollow">Qwen2TokenizerFast</a>.`,name:"tokenizer"}]});var I=e(P,6),J=s(I);o(J,{name:"__call__",anchor:"diffusers.Flux2KleinPipeline.__call__",source:"https://github.com/huggingface/diffusers/blob/vr_14261/src/diffusers/pipelines/flux2/pipeline_flux2_klein.py#L612",parameters:[{name:"image",val:": list[PIL.Image.Image] | PIL.Image.Image | None = None"},{name:"prompt",val:": str | list[str] = None"},{name:"height",val:": int | None = None"},{name:"width",val:": int | None = None"},{name:"num_inference_steps",val:": int = 50"},{name:"sigmas",val:": list[float] | None = None"},{name:"guidance_scale",val:": float = 4.0"},{name:"num_images_per_prompt",val:": int = 1"},{name:"generator",val:": typing.Union[torch.Generator, list[torch.Generator], NoneType] = None"},{name:"latents",val:": typing.Optional[torch.Tensor] = None"},{name:"prompt_embeds",val:": typing.Optional[torch.Tensor] = None"},{name:"negative_prompt_embeds",val:": str | list[str] | None = None"},{name:"output_type",val:": str = 'pil'"},{name:"return_dict",val:": bool = True"},{name:"attention_kwargs",val:": dict[str, typing.Any] | None = None"},{name:"callback_on_step_end",val:": typing.Optional[typing.Callable[[int, int, dict], NoneType]] = None"},{name:"callback_on_step_end_tensor_inputs",val:": list = ['latents']"},{name:"max_sequence_length",val:": int = 512"},{name:"text_encoder_out_layers",val:": tuple = (9, 18, 27)"}],parametersDescription:[{anchor:"diffusers.Flux2KleinPipeline.__call__.image",description:`<strong>image</strong> (<code>torch.Tensor</code>, <code>PIL.Image.Image</code>, <code>np.ndarray</code>, <code>List[torch.Tensor]</code>, <code>List[PIL.Image.Image]</code>, or <code>List[np.ndarray]</code>) &#x2014;
<code>Image</code>, numpy array or tensor representing an image batch to be used as the starting point. For both
numpy array and pytorch tensor, the expected value range is between <code>[0, 1]</code> If it&#x2019;s a tensor or a list
or tensors, the expected shape should be <code>(B, C, H, W)</code> or <code>(C, H, W)</code>. If it is a numpy array or a
list of arrays, the expected shape should be <code>(B, H, W, C)</code> or <code>(H, W, C)</code> It can also accept image
latents as <code>image</code>, but if passing latents directly it is not encoded again.`,name:"image"},{anchor:"diffusers.Flux2KleinPipeline.__call__.prompt",description:`<strong>prompt</strong> (<code>str</code> or <code>List[str]</code>, <em>optional</em>) &#x2014;
The prompt or prompts to guide the image generation. If not defined, one has to pass <code>prompt_embeds</code>.
instead.`,name:"prompt"},{anchor:"diffusers.Flux2KleinPipeline.__call__.guidance_scale",description:`<strong>guidance_scale</strong> (<code>float</code>, <em>optional</em>, defaults to 4.0) &#x2014;
Guidance scale as defined in <a href="https://huggingface.co/papers/2207.12598" rel="nofollow">Classifier-Free Diffusion
Guidance</a>. <code>guidance_scale</code> is defined as <code>w</code> of equation 2.
of <a href="https://huggingface.co/papers/2205.11487" rel="nofollow">Imagen Paper</a>. Guidance scale is enabled by setting
<code>guidance_scale &gt; 1</code>. Higher guidance scale encourages to generate images that are closely linked to
the text <code>prompt</code>, usually at the expense of lower image quality. For step-wise distilled models,
<code>guidance_scale</code> is ignored.`,name:"guidance_scale"},{anchor:"diffusers.Flux2KleinPipeline.__call__.height",description:`<strong>height</strong> (<code>int</code>, <em>optional</em>, defaults to self.unet.config.sample_size * self.vae_scale_factor) &#x2014;
The height in pixels of the generated image. This is set to 1024 by default for the best results.`,name:"height"},{anchor:"diffusers.Flux2KleinPipeline.__call__.width",description:`<strong>width</strong> (<code>int</code>, <em>optional</em>, defaults to self.unet.config.sample_size * self.vae_scale_factor) &#x2014;
The width in pixels of the generated image. This is set to 1024 by default for the best results.`,name:"width"},{anchor:"diffusers.Flux2KleinPipeline.__call__.num_inference_steps",description:`<strong>num_inference_steps</strong> (<code>int</code>, <em>optional</em>, defaults to 50) &#x2014;
The number of denoising steps. More denoising steps usually lead to a higher quality image at the
expense of slower inference.`,name:"num_inference_steps"},{anchor:"diffusers.Flux2KleinPipeline.__call__.sigmas",description:`<strong>sigmas</strong> (<code>List[float]</code>, <em>optional</em>) &#x2014;
Custom sigmas to use for the denoising process with schedulers which support a <code>sigmas</code> argument in
their <code>set_timesteps</code> method. If not defined, the default behavior when <code>num_inference_steps</code> is passed
will be used.`,name:"sigmas"},{anchor:"diffusers.Flux2KleinPipeline.__call__.num_images_per_prompt",description:`<strong>num_images_per_prompt</strong> (<code>int</code>, <em>optional</em>, defaults to 1) &#x2014;
The number of images to generate per prompt.`,name:"num_images_per_prompt"},{anchor:"diffusers.Flux2KleinPipeline.__call__.generator",description:`<strong>generator</strong> (<code>torch.Generator</code> or <code>List[torch.Generator]</code>, <em>optional</em>) &#x2014;
One or a list of <a href="https://pytorch.org/docs/stable/generated/torch.Generator.html" rel="nofollow">torch generator(s)</a>
to make generation deterministic.`,name:"generator"},{anchor:"diffusers.Flux2KleinPipeline.__call__.latents",description:`<strong>latents</strong> (<code>torch.Tensor</code>, <em>optional</em>) &#x2014;
Pre-generated noisy latents, sampled from a Gaussian distribution, to be used as inputs for image
generation. Can be used to tweak the same generation with different prompts. If not provided, a latents
tensor will be generated by sampling using the supplied random <code>generator</code>.`,name:"latents"},{anchor:"diffusers.Flux2KleinPipeline.__call__.prompt_embeds",description:`<strong>prompt_embeds</strong> (<code>torch.Tensor</code>, <em>optional</em>) &#x2014;
Pre-generated text embeddings. Can be used to easily tweak text inputs, <em>e.g.</em> prompt weighting. If not
provided, text embeddings will be generated from <code>prompt</code> input argument.`,name:"prompt_embeds"},{anchor:"diffusers.Flux2KleinPipeline.__call__.negative_prompt_embeds",description:`<strong>negative_prompt_embeds</strong> (<code>torch.Tensor</code>, <em>optional</em>) &#x2014;
Pre-generated negative text embeddings. Note that &quot;&quot; is used as the negative prompt in this pipeline.
If not provided, will be generated from &quot;&quot;.`,name:"negative_prompt_embeds"},{anchor:"diffusers.Flux2KleinPipeline.__call__.output_type",description:`<strong>output_type</strong> (<code>str</code>, <em>optional</em>, defaults to <code>&quot;pil&quot;</code>) &#x2014;
The output format of the generate image. Choose between
<a href="https://pillow.readthedocs.io/en/stable/" rel="nofollow">PIL</a>: <code>PIL.Image.Image</code> or <code>np.array</code>.`,name:"output_type"},{anchor:"diffusers.Flux2KleinPipeline.__call__.return_dict",description:`<strong>return_dict</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) &#x2014;
Whether or not to return a <code>~pipelines.qwenimage.QwenImagePipelineOutput</code> instead of a plain tuple.`,name:"return_dict"},{anchor:"diffusers.Flux2KleinPipeline.__call__.attention_kwargs",description:`<strong>attention_kwargs</strong> (<code>dict</code>, <em>optional</em>) &#x2014;
A kwargs dictionary that if specified is passed along to the <code>AttentionProcessor</code> as defined under
<code>self.processor</code> in
<a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py" rel="nofollow">diffusers.models.attention_processor</a>.`,name:"attention_kwargs"},{anchor:"diffusers.Flux2KleinPipeline.__call__.callback_on_step_end",description:`<strong>callback_on_step_end</strong> (<code>Callable</code>, <em>optional</em>) &#x2014;
A function that calls at the end of each denoising steps during the inference. The function is called
with the following arguments: <code>callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)</code>. <code>callback_kwargs</code> will include a list of all tensors as specified by
<code>callback_on_step_end_tensor_inputs</code>.`,name:"callback_on_step_end"},{anchor:"diffusers.Flux2KleinPipeline.__call__.callback_on_step_end_tensor_inputs",description:`<strong>callback_on_step_end_tensor_inputs</strong> (<code>List</code>, <em>optional</em>) &#x2014;
The list of tensor inputs for the <code>callback_on_step_end</code> function. The tensors specified in the list
will be passed as <code>callback_kwargs</code> argument. You will only be able to include variables listed in the
<code>._callback_tensor_inputs</code> attribute of your pipeline class.`,name:"callback_on_step_end_tensor_inputs"},{anchor:"diffusers.Flux2KleinPipeline.__call__.max_sequence_length",description:"<strong>max_sequence_length</strong> (<code>int</code> defaults to 512) &#x2014; Maximum sequence length to use with the <code>prompt</code>.",name:"max_sequence_length"},{anchor:"diffusers.Flux2KleinPipeline.__call__.text_encoder_out_layers",description:`<strong>text_encoder_out_layers</strong> (<code>tuple[int]</code>) &#x2014;
Layer indices to use in the <code>text_encoder</code> to derive the final prompt embeddings.`,name:"text_encoder_out_layers"}],returnDescription:`<script context="module">export const metadata = 'undefined';<\/script>
<p><code>~pipelines.flux2.Flux2PipelineOutput</code> if
<code>return_dict</code> is True, otherwise a <code>tuple</code>. When returning a tuple, the first element is a list with the
generated images.</p>
`,returnType:`<script context="module">export const metadata = 'undefined';<\/script>
<p><code>~pipelines.flux2.Flux2PipelineOutput</code> or <code>tuple</code></p>
`});var N=e(J,4);f(N,{anchor:"diffusers.Flux2KleinPipeline.__call__.example",children:(n,i)=>{var t=_(),r=e(d(t),2);g(r,{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRmx1eDJLbGVpblBpcGVsaW5lJTBBJTBBcGlwZSUyMCUzRCUyMEZsdXgyS2xlaW5QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIyYmxhY2stZm9yZXN0LWxhYnMlMkZGTFVYLjIta2xlaW4tYmFzZS05QiUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guYmZsb2F0MTYlMEEpJTBBcGlwZS50byglMjJjdWRhJTIyKSUwQXByb21wdCUyMCUzRCUyMCUyMkElMjBjYXQlMjBob2xkaW5nJTIwYSUyMHNpZ24lMjB0aGF0JTIwc2F5cyUyMGhlbGxvJTIwd29ybGQlMjIlMEElMjMlMjBEZXBlbmRpbmclMjBvbiUyMHRoZSUyMHZhcmlhbnQlMjBiZWluZyUyMHVzZWQlMkMlMjB0aGUlMjBwaXBlbGluZSUyMGNhbGwlMjB3aWxsJTIwc2xpZ2h0bHklMjB2YXJ5LiUwQSUyMyUyMFJlZmVyJTIwdG8lMjB0aGUlMjBwaXBlbGluZSUyMGRvY3VtZW50YXRpb24lMjBmb3IlMjBtb3JlJTIwZGV0YWlscy4lMEFpbWFnZSUyMCUzRCUyMHBpcGUocHJvbXB0JTJDJTIwbnVtX2luZmVyZW5jZV9zdGVwcyUzRDUwJTJDJTIwZ3VpZGFuY2Vfc2NhbGUlM0Q0LjApLmltYWdlcyU1QjAlNUQlMEFpbWFnZS5zYXZlKCUyMmZsdXgyX291dHB1dC5wbmclMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> Flux2KleinPipeline
<span class="hljs-meta">&gt;&gt;&gt; </span>pipe = Flux2KleinPipeline.from_pretrained(
<span class="hljs-meta">... </span> <span class="hljs-string">&quot;black-forest-labs/FLUX.2-klein-base-9B&quot;</span>, torch_dtype=torch.bfloat16
<span class="hljs-meta">... </span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>pipe.to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>prompt = <span class="hljs-string">&quot;A cat holding a sign that says hello world&quot;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Depending on the variant being used, the pipeline call will slightly vary.</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Refer to the pipeline documentation for more details.</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>image = pipe(prompt, num_inference_steps=<span class="hljs-number">50</span>, guidance_scale=<span class="hljs-number">4.0</span>).images[<span class="hljs-number">0</span>]
<span class="hljs-meta">&gt;&gt;&gt; </span>image.save(<span class="hljs-string">&quot;flux2_output.png&quot;</span>)`,lang:"py",wrap:!1}),c(n,t)},$$slots:{default:!0}}),a(I),a(m);var j=e(m,2);l(j,{title:"Flux2KleinKVPipeline",local:"diffusers.Flux2KleinKVPipeline",headingTag:"h2"});var u=e(j,2),K=s(u);o(K,{name:"class diffusers.Flux2KleinKVPipeline",anchor:"diffusers.Flux2KleinKVPipeline",source:"https://github.com/huggingface/diffusers/blob/vr_14261/src/diffusers/pipelines/flux2/pipeline_flux2_klein_kv.py#L155",parameters:[{name:"scheduler",val:": FlowMatchEulerDiscreteScheduler"},{name:"vae",val:": AutoencoderKLFlux2"},{name:"text_encoder",val:": Qwen3ForCausalLM"},{name:"tokenizer",val:": Qwen2Tokenizer"},{name:"transformer",val:": Flux2Transformer2DModel"},{name:"is_distilled",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.Flux2KleinKVPipeline.transformer",description:`<strong>transformer</strong> (<a href="/docs/diffusers/pr_14261/en/api/models/flux2_transformer#diffusers.Flux2Transformer2DModel">Flux2Transformer2DModel</a>) &#x2014;
Conditional Transformer (MMDiT) architecture to denoise the encoded image latents.`,name:"transformer"},{anchor:"diffusers.Flux2KleinKVPipeline.scheduler",description:`<strong>scheduler</strong> (<a href="/docs/diffusers/pr_14261/en/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler">FlowMatchEulerDiscreteScheduler</a>) &#x2014;
A scheduler to be used in combination with <code>transformer</code> to denoise the encoded image latents.`,name:"scheduler"},{anchor:"diffusers.Flux2KleinKVPipeline.vae",description:`<strong>vae</strong> (<code>AutoencoderKLFlux2</code>) &#x2014;
Variational Auto-Encoder (VAE) Model to encode and decode images to and from latent representations.`,name:"vae"},{anchor:"diffusers.Flux2KleinKVPipeline.text_encoder",description:`<strong>text_encoder</strong> (<code>Qwen3ForCausalLM</code>) &#x2014;
<a href="https://huggingface.co/docs/transformers/en/model_doc/qwen3#transformers.Qwen3ForCausalLM" rel="nofollow">Qwen3ForCausalLM</a>`,name:"text_encoder"},{anchor:"diffusers.Flux2KleinKVPipeline.tokenizer",description:`<strong>tokenizer</strong> (<code>Qwen2TokenizerFast</code>) &#x2014;
Tokenizer of class
<a href="https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2TokenizerFast" rel="nofollow">Qwen2TokenizerFast</a>.`,name:"tokenizer"}]});var G=e(K,8),U=s(G);o(U,{name:"__call__",anchor:"diffusers.Flux2KleinKVPipeline.__call__",source:"https://github.com/huggingface/diffusers/blob/vr_14261/src/diffusers/pipelines/flux2/pipeline_flux2_klein_kv.py#L609",parameters:[{name:"image",val:": list[PIL.Image.Image] | PIL.Image.Image | None = None"},{name:"prompt",val:": str | list[str] = None"},{name:"height",val:": int | None = None"},{name:"width",val:": int | None = None"},{name:"num_inference_steps",val:": int = 4"},{name:"sigmas",val:": list[float] | None = None"},{name:"num_images_per_prompt",val:": int = 1"},{name:"generator",val:": typing.Union[torch.Generator, list[torch.Generator], NoneType] = None"},{name:"latents",val:": typing.Optional[torch.Tensor] = None"},{name:"prompt_embeds",val:": typing.Optional[torch.Tensor] = None"},{name:"output_type",val:": str = 'pil'"},{name:"return_dict",val:": bool = True"},{name:"attention_kwargs",val:": dict[str, typing.Any] | None = None"},{name:"callback_on_step_end",val:": typing.Optional[typing.Callable[[int, int, dict], NoneType]] = None"},{name:"callback_on_step_end_tensor_inputs",val:": list = ['latents']"},{name:"max_sequence_length",val:": int = 512"},{name:"text_encoder_out_layers",val:": tuple = (9, 18, 27)"}],parametersDescription:[{anchor:"diffusers.Flux2KleinKVPipeline.__call__.image",description:`<strong>image</strong> (<code>PIL.Image.Image</code> or <code>List[PIL.Image.Image]</code>, <em>optional</em>) &#x2014;
Reference image(s) for conditioning. On the first denoising step, reference tokens are included in the
forward pass and their attention K/V are cached. On subsequent steps, the cached K/V are reused without
recomputing.`,name:"image"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.prompt",description:`<strong>prompt</strong> (<code>str</code> or <code>List[str]</code>, <em>optional</em>) &#x2014;
The prompt or prompts to guide the image generation.`,name:"prompt"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.height",description:`<strong>height</strong> (<code>int</code>, <em>optional</em>) &#x2014;
The height in pixels of the generated image.`,name:"height"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.width",description:`<strong>width</strong> (<code>int</code>, <em>optional</em>) &#x2014;
The width in pixels of the generated image.`,name:"width"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.num_inference_steps",description:`<strong>num_inference_steps</strong> (<code>int</code>, <em>optional</em>, defaults to 4) &#x2014;
The number of denoising steps.`,name:"num_inference_steps"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.sigmas",description:`<strong>sigmas</strong> (<code>List[float]</code>, <em>optional</em>) &#x2014;
Custom sigmas for the denoising schedule.`,name:"sigmas"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.num_images_per_prompt",description:`<strong>num_images_per_prompt</strong> (<code>int</code>, <em>optional</em>, defaults to 1) &#x2014;
The number of images to generate per prompt.`,name:"num_images_per_prompt"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.generator",description:`<strong>generator</strong> (<code>torch.Generator</code> or <code>List[torch.Generator]</code>, <em>optional</em>) &#x2014;
Generator(s) for deterministic generation.`,name:"generator"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.latents",description:`<strong>latents</strong> (<code>torch.Tensor</code>, <em>optional</em>) &#x2014;
Pre-generated noisy latents.`,name:"latents"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.prompt_embeds",description:`<strong>prompt_embeds</strong> (<code>torch.Tensor</code>, <em>optional</em>) &#x2014;
Pre-generated text embeddings.`,name:"prompt_embeds"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.output_type",description:`<strong>output_type</strong> (<code>str</code>, <em>optional</em>, defaults to <code>&quot;pil&quot;</code>) &#x2014;
Output format: <code>&quot;pil&quot;</code> or <code>&quot;np&quot;</code>.`,name:"output_type"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.return_dict",description:`<strong>return_dict</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) &#x2014;
Whether to return a <code>Flux2PipelineOutput</code> or a plain tuple.`,name:"return_dict"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.attention_kwargs",description:`<strong>attention_kwargs</strong> (<code>dict</code>, <em>optional</em>) &#x2014;
Extra kwargs passed to attention processors.`,name:"attention_kwargs"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.callback_on_step_end",description:`<strong>callback_on_step_end</strong> (<code>Callable</code>, <em>optional</em>) &#x2014;
Callback function called at the end of each denoising step.`,name:"callback_on_step_end"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.callback_on_step_end_tensor_inputs",description:`<strong>callback_on_step_end_tensor_inputs</strong> (<code>List</code>, <em>optional</em>) &#x2014;
Tensor inputs for the callback function.`,name:"callback_on_step_end_tensor_inputs"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.max_sequence_length",description:`<strong>max_sequence_length</strong> (<code>int</code>, defaults to 512) &#x2014;
Maximum sequence length for the prompt.`,name:"max_sequence_length"},{anchor:"diffusers.Flux2KleinKVPipeline.__call__.text_encoder_out_layers",description:`<strong>text_encoder_out_layers</strong> (<code>tuple[int]</code>) &#x2014;
Layer indices for text encoder hidden state extraction.`,name:"text_encoder_out_layers"}],returnDescription:`<script context="module">export const metadata = 'undefined';<\/script>
<p><code>~pipelines.flux2.Flux2PipelineOutput</code> or <code>tuple</code>.</p>
`});var L=e(U,4);f(L,{anchor:"diffusers.Flux2KleinKVPipeline.__call__.example",children:(n,i)=>{var t=_(),r=e(d(t),2);g(r,{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwUElMJTIwaW1wb3J0JTIwSW1hZ2UlMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRmx1eDJLbGVpbktWUGlwZWxpbmUlMEElMEFwaXBlJTIwJTNEJTIwRmx1eDJLbGVpbktWUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMmJsYWNrLWZvcmVzdC1sYWJzJTJGRkxVWC4yLWtsZWluLTliLWt2JTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5iZmxvYXQxNiUwQSklMEFwaXBlLnRvKCUyMmN1ZGElMjIpJTBBcmVmX2ltYWdlJTIwJTNEJTIwSW1hZ2Uub3BlbiglMjJyZWZlcmVuY2UucG5nJTIyKSUwQWltYWdlJTIwJTNEJTIwcGlwZSglMjJBJTIwY2F0JTIwZHJlc3NlZCUyMGxpa2UlMjBhJTIwd2l6YXJkJTIyJTJDJTIwaW1hZ2UlM0RyZWZfaW1hZ2UlMkMlMjBudW1faW5mZXJlbmNlX3N0ZXBzJTNENCkuaW1hZ2VzJTVCMCU1RCUwQWltYWdlLnNhdmUoJTIyZmx1eDJfa3Zfb3V0cHV0LnBuZyUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> Flux2KleinKVPipeline
<span class="hljs-meta">&gt;&gt;&gt; </span>pipe = Flux2KleinKVPipeline.from_pretrained(
<span class="hljs-meta">... </span> <span class="hljs-string">&quot;black-forest-labs/FLUX.2-klein-9b-kv&quot;</span>, torch_dtype=torch.bfloat16
<span class="hljs-meta">... </span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>pipe.to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>ref_image = Image.<span class="hljs-built_in">open</span>(<span class="hljs-string">&quot;reference.png&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>image = pipe(<span class="hljs-string">&quot;A cat dressed like a wizard&quot;</span>, image=ref_image, num_inference_steps=<span class="hljs-number">4</span>).images[<span class="hljs-number">0</span>]
<span class="hljs-meta">&gt;&gt;&gt; </span>image.save(<span class="hljs-string">&quot;flux2_kv_output.png&quot;</span>)`,lang:"py",wrap:!1}),c(n,t)},$$slots:{default:!0}}),a(G),a(u);var C=e(u,2);E(C,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/pipelines/flux2.md"}),X(2),c(Z,x),S()}export{te as component};

Xet Storage Details

Size:
43.8 kB
·
Xet hash:
bfa62aa4da116cef2372e870d22e76341c50db8077c21bf2733b8ca951d9a461

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.