Buckets:
| import{s as me,o as ue,n as fe}from"../chunks/scheduler.53228c21.js";import{S as ge,i as he,e as c,s as i,c as w,h as _e,a as p,d as n,b as r,f as Y,g as v,j as M,k as q,l as _,m as o,n as T,t as $,o as F,p as P}from"../chunks/index.100fac89.js";import{C as xe}from"../chunks/CopyLLMTxtMenu.969c168d.js";import{D as pe}from"../chunks/Docstring.8eea0d47.js";import{C as be}from"../chunks/CodeBlock.d30a6509.js";import{E as ye}from"../chunks/ExampleCodeBlock.5e9b5749.js";import{H as de,E as we}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.92f39b94.js";function ve(Z){let a,k="Examples:",g,d,m;return d=new be({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRmx1eDJQaXBlbGluZSUwQSUwQXBpcGUlMjAlM0QlMjBGbHV4MlBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMjJibGFjay1mb3Jlc3QtbGFicyUyRkZMVVguMi1kZXYlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmJmbG9hdDE2KSUwQXBpcGUudG8oJTIyY3VkYSUyMiklMEFwcm9tcHQlMjAlM0QlMjAlMjJBJTIwY2F0JTIwaG9sZGluZyUyMGElMjBzaWduJTIwdGhhdCUyMHNheXMlMjBoZWxsbyUyMHdvcmxkJTIyJTBBJTIzJTIwRGVwZW5kaW5nJTIwb24lMjB0aGUlMjB2YXJpYW50JTIwYmVpbmclMjB1c2VkJTJDJTIwdGhlJTIwcGlwZWxpbmUlMjBjYWxsJTIwd2lsbCUyMHNsaWdodGx5JTIwdmFyeS4lMEElMjMlMjBSZWZlciUyMHRvJTIwdGhlJTIwcGlwZWxpbmUlMjBkb2N1bWVudGF0aW9uJTIwZm9yJTIwbW9yZSUyMGRldGFpbHMuJTBBaW1hZ2UlMjAlM0QlMjBwaXBlKHByb21wdCUyQyUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0Q1MCUyQyUyMGd1aWRhbmNlX3NjYWxlJTNEMi41KS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2Uuc2F2ZSglMjJmbHV4LnBuZyUyMik=",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">import</span> torch | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> Flux2Pipeline | |
| <span class="hljs-meta">>>> </span>pipe = Flux2Pipeline.from_pretrained(<span class="hljs-string">"black-forest-labs/FLUX.2-dev"</span>, torch_dtype=torch.bfloat16) | |
| <span class="hljs-meta">>>> </span>pipe.to(<span class="hljs-string">"cuda"</span>) | |
| <span class="hljs-meta">>>> </span>prompt = <span class="hljs-string">"A cat holding a sign that says hello world"</span> | |
| <span class="hljs-meta">>>> </span><span class="hljs-comment"># Depending on the variant being used, the pipeline call will slightly vary.</span> | |
| <span class="hljs-meta">>>> </span><span class="hljs-comment"># Refer to the pipeline documentation for more details.</span> | |
| <span class="hljs-meta">>>> </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">>>> </span>image.save(<span class="hljs-string">"flux.png"</span>)`,wrap:!1}}),{c(){a=c("p"),a.textContent=k,g=i(),w(d.$$.fragment)},l(s){a=p(s,"P",{"data-svelte-h":!0}),M(a)!=="svelte-kvfsh7"&&(a.textContent=k),g=r(s),v(d.$$.fragment,s)},m(s,u){o(s,a,u),o(s,g,u),T(d,s,u),m=!0},p:fe,i(s){m||($(d.$$.fragment,s),m=!0)},o(s){F(d.$$.fragment,s),m=!1},d(s){s&&(n(a),n(g)),P(d,s)}}}function Me(Z){let a,k,g,d,m,s,u,D,x,oe='<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&logo=apple&logoColor=white%22"/>',N,I,se='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!',A,j,ae='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>.',V,b,ie='<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>',z,C,S,l,L,X,H,re="The Flux2 pipeline for text-to-image generation.",K,B,le='Reference: <a href="https://bfl.ai/blog/flux-2" rel="nofollow">https://bfl.ai/blog/flux-2</a>',ee,h,G,te,U,ce="Function invoked when calling the pipeline for generation.",ne,y,O,J,R,E,Q;return m=new xe({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),u=new de({props:{title:"Flux2",local:"flux2",headingTag:"h1"}}),C=new de({props:{title:"Flux2Pipeline",local:"diffusers.Flux2Pipeline",headingTag:"h2"}}),L=new pe({props:{name:"class diffusers.Flux2Pipeline",anchor:"diffusers.Flux2Pipeline",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_12762/en/api/models/flux2_transformer#diffusers.Flux2Transformer2DModel">Flux2Transformer2DModel</a>) — | |
| 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_12762/en/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler">FlowMatchEulerDiscreteScheduler</a>) — | |
| 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>) — | |
| 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>) — | |
| <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>) — | |
| Tokenizer of class | |
| <a href="https://huggingface.co/docs/transformers/en/model_doc/pixtral#transformers.PixtralProcessor" rel="nofollow">PixtralProcessor</a>.`,name:"tokenizer"}],source:"https://github.com/huggingface/diffusers/blob/vr_12762/src/diffusers/pipelines/flux2/pipeline_flux2.py#L170"}}),G=new pe({props:{name:"__call__",anchor:"diffusers.Flux2Pipeline.__call__",parameters:[{name:"image",val:": typing.Union[typing.List[PIL.Image.Image], PIL.Image.Image, NoneType] = None"},{name:"prompt",val:": typing.Union[str, typing.List[str]] = None"},{name:"height",val:": typing.Optional[int] = None"},{name:"width",val:": typing.Optional[int] = None"},{name:"num_inference_steps",val:": int = 50"},{name:"sigmas",val:": typing.Optional[typing.List[float]] = None"},{name:"guidance_scale",val:": typing.Optional[float] = 4.0"},{name:"num_images_per_prompt",val:": int = 1"},{name:"generator",val:": typing.Union[torch._C.Generator, typing.List[torch._C.Generator], NoneType] = None"},{name:"latents",val:": typing.Optional[torch.Tensor] = None"},{name:"prompt_embeds",val:": typing.Optional[torch.Tensor] = None"},{name:"output_type",val:": typing.Optional[str] = 'pil'"},{name:"return_dict",val:": bool = True"},{name:"attention_kwargs",val:": typing.Optional[typing.Dict[str, typing.Any]] = None"},{name:"callback_on_step_end",val:": typing.Optional[typing.Callable[[int, int, typing.Dict], NoneType]] = None"},{name:"callback_on_step_end_tensor_inputs",val:": typing.List[str] = ['latents']"},{name:"max_sequence_length",val:": int = 512"},{name:"text_encoder_out_layers",val:": typing.Tuple[int] = (10, 20, 30)"}],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>) — | |
| <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’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>) — | |
| 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) — | |
| 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 > 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.`,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) — | |
| 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) — | |
| 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) — | |
| 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>) — | |
| 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) — | |
| 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>) — | |
| 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>) — | |
| 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>) — | |
| 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>"pil"</code>) — | |
| 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>) — | |
| 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>) — | |
| 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>) — | |
| 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>) — | |
| 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) — 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>) — | |
| Layer indices to use in the <code>text_encoder</code> to derive the final prompt embeddings.`,name:"text_encoder_out_layers"}],source:"https://github.com/huggingface/diffusers/blob/vr_12762/src/diffusers/pipelines/flux2/pipeline_flux2.py#L601",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> | |
| `}}),y=new ye({props:{anchor:"diffusers.Flux2Pipeline.__call__.example",$$slots:{default:[ve]},$$scope:{ctx:Z}}}),J=new we({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/pipelines/flux2.md"}}),{c(){a=c("meta"),k=i(),g=c("p"),d=i(),w(m.$$.fragment),s=i(),w(u.$$.fragment),D=i(),x=c("div"),x.innerHTML=oe,N=i(),I=c("p"),I.innerHTML=se,A=i(),j=c("p"),j.innerHTML=ae,V=i(),b=c("blockquote"),b.innerHTML=ie,z=i(),w(C.$$.fragment),S=i(),l=c("div"),w(L.$$.fragment),X=i(),H=c("p"),H.textContent=re,K=i(),B=c("p"),B.innerHTML=le,ee=i(),h=c("div"),w(G.$$.fragment),te=i(),U=c("p"),U.textContent=ce,ne=i(),w(y.$$.fragment),O=i(),w(J.$$.fragment),R=i(),E=c("p"),this.h()},l(e){const t=_e("svelte-u9bgzb",document.head);a=p(t,"META",{name:!0,content:!0}),t.forEach(n),k=r(e),g=p(e,"P",{}),Y(g).forEach(n),d=r(e),v(m.$$.fragment,e),s=r(e),v(u.$$.fragment,e),D=r(e),x=p(e,"DIV",{class:!0,"data-svelte-h":!0}),M(x)!=="svelte-1elo7hh"&&(x.innerHTML=oe),N=r(e),I=p(e,"P",{"data-svelte-h":!0}),M(I)!=="svelte-1togc7r"&&(I.innerHTML=se),A=r(e),j=p(e,"P",{"data-svelte-h":!0}),M(j)!=="svelte-otikoq"&&(j.innerHTML=ae),V=r(e),b=p(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(b)!=="svelte-79zmu7"&&(b.innerHTML=ie),z=r(e),v(C.$$.fragment,e),S=r(e),l=p(e,"DIV",{class:!0});var f=Y(l);v(L.$$.fragment,f),X=r(f),H=p(f,"P",{"data-svelte-h":!0}),M(H)!=="svelte-1hjjsby"&&(H.textContent=re),K=r(f),B=p(f,"P",{"data-svelte-h":!0}),M(B)!=="svelte-a2p6bq"&&(B.innerHTML=le),ee=r(f),h=p(f,"DIV",{class:!0});var W=Y(h);v(G.$$.fragment,W),te=r(W),U=p(W,"P",{"data-svelte-h":!0}),M(U)!=="svelte-v78lg8"&&(U.textContent=ce),ne=r(W),v(y.$$.fragment,W),W.forEach(n),f.forEach(n),O=r(e),v(J.$$.fragment,e),R=r(e),E=p(e,"P",{}),Y(E).forEach(n),this.h()},h(){q(a,"name","hf:doc:metadata"),q(a,"content",Te),q(x,"class","flex flex-wrap space-x-1"),q(b,"class","tip"),q(h,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),q(l,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(e,t){_(document.head,a),o(e,k,t),o(e,g,t),o(e,d,t),T(m,e,t),o(e,s,t),T(u,e,t),o(e,D,t),o(e,x,t),o(e,N,t),o(e,I,t),o(e,A,t),o(e,j,t),o(e,V,t),o(e,b,t),o(e,z,t),T(C,e,t),o(e,S,t),o(e,l,t),T(L,l,null),_(l,X),_(l,H),_(l,K),_(l,B),_(l,ee),_(l,h),T(G,h,null),_(h,te),_(h,U),_(h,ne),T(y,h,null),o(e,O,t),T(J,e,t),o(e,R,t),o(e,E,t),Q=!0},p(e,[t]){const f={};t&2&&(f.$$scope={dirty:t,ctx:e}),y.$set(f)},i(e){Q||($(m.$$.fragment,e),$(u.$$.fragment,e),$(C.$$.fragment,e),$(L.$$.fragment,e),$(G.$$.fragment,e),$(y.$$.fragment,e),$(J.$$.fragment,e),Q=!0)},o(e){F(m.$$.fragment,e),F(u.$$.fragment,e),F(C.$$.fragment,e),F(L.$$.fragment,e),F(G.$$.fragment,e),F(y.$$.fragment,e),F(J.$$.fragment,e),Q=!1},d(e){e&&(n(k),n(g),n(d),n(s),n(D),n(x),n(N),n(I),n(A),n(j),n(V),n(b),n(z),n(S),n(l),n(O),n(R),n(E)),n(a),P(m,e),P(u,e),P(C,e),P(L),P(G),P(y),P(J,e)}}}const Te='{"title":"Flux2","local":"flux2","sections":[{"title":"Flux2Pipeline","local":"diffusers.Flux2Pipeline","sections":[],"depth":2}],"depth":1}';function $e(Z){return ue(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ge extends ge{constructor(a){super(),he(this,a,$e,Me,me,{})}}export{Ge as component}; | |
Xet Storage Details
- Size:
- 19.7 kB
- Xet hash:
- 99aec2980aa95e7586a87570b41696a811fce652e2d74d0bf262f63a12d25aa7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.