Buckets:

mishig's picture
|
download
raw
29 kB

Flux2

Flux.2 هي سلسلة النماذج الحديثة لتوليد الصور من Black Forest Labs، وقد سبقتها سلسلة Flux.1. إنها نموذج جديد كليًا بهيكل معماري جديد وتدريب مسبق تم من الصفر!

يمكن العثور على نقاط التفتيش الأصلية لنموذج Flux هنا. ويمكن العثور على كود الاستدلال الأصلي هنا.

قد يكون تشغيل Flux2 مكلفًا إلى حد كبير على أجهزة العتاد الاستهلاكي. ومع ذلك، يمكنك تنفيذ مجموعة من التحسينات لتشغيله بشكل أسرع وبطريقة أكثر كفاءة في استخدام الذاكرة. راجع هذا القسم لمزيد من التفاصيل. بالإضافة إلى ذلك، يمكن أن يستفيد Flux من التكميم (Quantization) لتحسين كفاءة الذاكرة مقابل زيادة في زمن الاستدلال (Inference Latency). راجع هذا المنشور على المدونة لمعرفة المزيد.

يمكن أن يسرّع التخزين المؤقت الاستدلال أيضًا من خلال تخزين المخرجات الوسيطة وإعادة استخدامها.

توسيع عينات التسمية

يمكن لـ Flux.2 أن يولّد مخرجات أفضل بشكل محتمل عند استخدام أوامر (prompts) أفضل. يمكننا "تحسين" الأمر المُدخل عن طريق ضبط معامل caption_upsample_temperature ضمن معاملات استدعاء خط الأنابيب. يوصي التنفيذ الرسمي بأن تكون قيمة هذا المعامل 0.15.

Flux2Pipeline[[diffusers.Flux2Pipeline]]

diffusers.Flux2Pipeline[[diffusers.Flux2Pipeline]]

diffusers.Flux2Pipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLFlux2, text_encoder: Mistral3ForConditionalGeneration, tokenizer: AutoProcessor, transformer: Flux2Transformer2DModel)

المصدر

المعاملات:

transformer (Flux2Transformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من كامنات الصورة المُرمّزة.

scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.

vae (AutoencoderKLFlux2) : نموذج الترميز التحويلي التبايني (VAE) لتشفير الصور وفك تشفيرها إلى تمثيلات كامنة ومنها.

text_encoder (Mistral3ForConditionalGeneration) : Mistral3ForConditionalGeneration

tokenizer (AutoProcessor) : مُجزِّئ من الفئة PixtralProcessor.

خط أنابيب Flux2 لتوليد الصور من النص.

مرجع: https://bfl.ai/blog/flux-2

call[[diffusers.Flux2Pipeline.call]]

__call__(image: PIL.Image.Image | list[PIL.Image.Image] | None = None, prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = 4.0, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, text_encoder_out_layers: tuple[int] = (10, 20, 30), caption_upsample_temperature: float = None)

المصدر

المعاملات:

image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) لاستخدامها كنقطة انطلاق. لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C) كما يمكنه قبول كامنات الصور (image latents) كـ image، ولكن إذا تم تمرير الكامنات مباشرةً فلن يتم ترميزها مرة أخرى.

prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.

guidance_scale (float، اختياري، القيمة الافتراضية 1.0) : يتم تفعيل مقياس التوجيه المدمج عن طريق تعيين guidance_scale > 1. كلما زاد guidance_scale، شجّع النموذج على توليد صور أكثر توافقًا مع prompt على حساب انخفاض جودة الصورة. تقرب النماذج المُقطّرة بالتوجيه من التوجيه الحقيقي الحر من المصنّف لقيم guidance_scale > 1. راجع الورقة البحثية لمعرفة المزيد.

height (int، اختياري، الافتراضي هو self.unet.config.sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج.

width (int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج.

num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.

num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.

latents (torch.Tensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.

prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.

output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.

return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.qwenimage.QwenImagePipelineOutput بدلاً من tuple عادي.

attention_kwargs (dict، اختياري) : قاموس kwargs يُمرَّر إلى AttentionProcessor إذا تم تحديده، كما هو معرَّف تحت self.processor في diffusers.models.attention_processor.

callback_on_step_end (Callable، اختياري) : دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). سيتضمن callback_kwargs قائمة بجميع المصفوفات كما حددتها callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (List، اختياري) : قائمة مدخلات المصفوفات (tensors) لدالة callback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجة callback_kwargs. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية ._callback_tensor_inputs لفئة خط الأنابيب (pipeline) الخاص بك.

max_sequence_length (int الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.

text_encoder_out_layers (tuple[int]) : فهارس الطبقات المستخدمة في text_encoder لاستخراج تمثيلات الموجه النهائية.

caption_upsample_temperature (float) : عند تحديد هذا المعامل، سنحاول إجراء زيادة عينة التسمية (caption upsampling) للحصول على مخرجات محسّنة محتملاً. ننصح بإعداده على 0.15 إذا كان من المقرر إجراء زيادة عينة التسمية.

يعيد: ~pipelines.flux2.Flux2PipelineOutput أو tuple

~pipelines.flux2.Flux2PipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.

الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.

أمثلة:

>>> import torch
>>> from diffusers import Flux2Pipeline

>>> pipe = Flux2Pipeline.from_pretrained("black-forest-labs/FLUX.2-dev", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(prompt, num_inference_steps=50, guidance_scale=2.5).images[0]
>>> image.save("flux.png")

Flux2KleinPipeline[[diffusers.Flux2KleinPipeline]]

diffusers.Flux2KleinPipeline[[diffusers.Flux2KleinPipeline]]

diffusers.Flux2KleinPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLFlux2, text_encoder: Qwen3ForCausalLM, tokenizer: Qwen2Tokenizer, transformer: Flux2Transformer2DModel, is_distilled: bool = False)

المصدر

المعاملات:

transformer (Flux2Transformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من كامنات الصورة المُرمّزة.

scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.

vae (AutoencoderKLFlux2) : نموذج الترميز التحويلي التبايني (VAE) لتشفير الصور وفك تشفيرها إلى تمثيلات كامنة ومنها.

text_encoder (Qwen3ForCausalLM) : Qwen3ForCausalLM

tokenizer (Qwen2TokenizerFast) : مُجزِّئ من الفئة Qwen2TokenizerFast.

خط أنابيب Flux2 Klein لتوليد الصور من النص.

مرجع: https://bfl.ai/blog/flux2-klein-towards-interactive-visual-intelligence

call[[diffusers.Flux2KleinPipeline.call]]

__call__(image: list[PIL.Image.Image] | PIL.Image.Image | None = None, prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float = 4.0, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: str | list[str] | None = None, output_type: str = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, text_encoder_out_layers: tuple[int] = (9, 18, 27))

المصدر

المعاملات:

image (torch.Tensor، PIL.Image.Image، np.ndarray، List[torch.Tensor]، List[PIL.Image.Image]، أو List[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) تُستخدم كنقطة انطلاق. لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). أما إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C) كما يمكنه قبول كامنات الصور (image latents) كـ image، ولكن إذا تم تمرير الكامنات مباشرةً فلن يتم ترميزها مرة أخرى.

prompt (str أو List[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.

guidance_scale (float، اختياري، القيمة الافتراضية 4.0) : مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة. بالنسبة للنماذج المُقطَّرة خطوة بخطوة، يتم تجاهل guidance_scale.

height (int، اختياري، الافتراضي هو self.unet.config.sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج.

width (int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج.

num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

sigmas (List[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.

num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

generator (torch.Generator أو List[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.

latents (torch.Tensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.

prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.

negative_prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. لاحظ أن "" تُستخدم كموجّه سلبي في هذا الخطّ الأنابيب. إذا لم تُوفَّر، فستُولَّد من "".

output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.

return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.qwenimage.QwenImagePipelineOutput بدلاً من tuple عادي.

attention_kwargs (dict، اختياري) : قاموس kwargs يُمرَّر إلى AttentionProcessor إذا تم تحديده، كما هو معرَّف تحت self.processor في diffusers.models.attention_processor.

callback_on_step_end (Callable، اختياري) : دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). سيتضمن callback_kwargs قائمة بجميع المصفوفات كما حددتها callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (List، اختياري) : قائمة مدخلات المصفوفات (tensors) لدالة callback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجة callback_kwargs. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية ._callback_tensor_inputs لفئة خط الأنابيب (pipeline) الخاص بك.

max_sequence_length (int الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.

text_encoder_out_layers (tuple[int]) : فهارس الطبقات المستخدمة في text_encoder لاستخراج تمثيلات الموجه النهائية.

يعيد: ~pipelines.flux2.Flux2PipelineOutput أو tuple

~pipelines.flux2.Flux2PipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.

الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.

أمثلة:

>>> import torch
>>> from diffusers import Flux2KleinPipeline

>>> pipe = Flux2KleinPipeline.from_pretrained(
...     "black-forest-labs/FLUX.2-klein-base-9B", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(prompt, num_inference_steps=50, guidance_scale=4.0).images[0]
>>> image.save("flux2_output.png")

Flux2KleinKVPipeline[[diffusers.Flux2KleinKVPipeline]]

diffusers.Flux2KleinKVPipeline[[diffusers.Flux2KleinKVPipeline]]

diffusers.Flux2KleinKVPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLFlux2, text_encoder: Qwen3ForCausalLM, tokenizer: Qwen2Tokenizer, transformer: Flux2Transformer2DModel, is_distilled: bool = True)

المصدر

المعاملات:

transformer (Flux2Transformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من كامنات الصورة المُرمّزة.

scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.

vae (AutoencoderKLFlux2) : نموذج الترميز التحويلي التبايني (VAE) لتشفير الصور وفك تشفيرها إلى تمثيلات كامنة ومنها.

text_encoder (Qwen3ForCausalLM) : Qwen3ForCausalLM

tokenizer (Qwen2TokenizerFast) : مُجزِّئ من الفئة Qwen2TokenizerFast.

خط أنابيب Flux2 Klein KV لتوليد الصور من النص مع استخدام صور مرجعية مشروطة عبر ذاكرة KV المؤقتة.

في خطوة إزالة الضوضاء الأولى، تُضمَّن رموز الصورة المرجعية في المرور الأمامي، وتُخزَّن إسقاطات K/V الخاصة باهتمامها في ذاكرة مؤقتة. في الخطوات اللاحقة، يُعاد استخدام إسقاطات K/V المخزنة دون إعادة حسابها، مما يوفر استنتاجًا أسرع عند استخدام الصور المرجعية.

مرجع: https://bfl.ai/blog/flux2-klein-towards-interactive-visual-intelligence

call[[diffusers.Flux2KleinKVPipeline.call]]

__call__(image: list[PIL.Image.Image] | PIL.Image.Image | None = None, prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 4, sigmas: list[float] | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, text_encoder_out_layers: tuple[int] = (9, 18, 27))

المصدر

المعاملات:

image (PIL.Image.Image أو List[PIL.Image.Image]، اختياري) : صورة مرجعية أو صور مرجعية للتكييف. في خطوة إزالة الضوضاء الأولى، تُدرج الرموز المرجعية في المرور الأمامي وتُخزَّن قيم الانتباه K/V الخاصة بها مؤقتًا. في الخطوات اللاحقة، تُعاد استخدام قيم K/V المخزنة مؤقتًا دون إعادة حسابها.

prompt (str أو List[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة.

height (int، اختياري) : ارتفاع الصورة المولّدة بالبكسل.

width (int, اختياري) : عرض الصورة المولدة بالبكسل.

num_inference_steps (int، اختياري، القيمة الافتراضية 4) : عدد خطوات إزالة الضوضاء.

sigmas (List[float]، اختياري) : قيم سيجما مخصصة لجدول إزالة الضوضاء.

num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

generator (torch.Generator أو List[torch.Generator]، اختياري) : مولّدات للتوليد الحتمي.

latents (torch.Tensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا.

prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا.

output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الإخراج: "pil" أو "np".

return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع Flux2PipelineOutput أو مجرد tuple.

attention_kwargs (dict، اختياري) : معاملات إضافية تُمرَّر إلى معالجات الانتباه.

callback_on_step_end (Callable، اختياري) : دالة الاستدعاء التي تُستدعى في نهاية كل خطوة إزالة ضوضاء.

callback_on_step_end_tensor_inputs (List، اختياري) : مدخلات من نوع Tensor لدالة الاستدعاء.

max_sequence_length (int، القيمة الافتراضية 512) : الحد الأقصى لطول التسلسل للموجّه.

text_encoder_out_layers (tuple[int]) : فهارس الطبقات لاستخراج حالة المخفي لمشفّر النص.

يعيد:

~pipelines.flux2.Flux2PipelineOutput أو tuple.

الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.

أمثلة:

>>> import torch
>>> from PIL import Image
>>> from diffusers import Flux2KleinKVPipeline

>>> pipe = Flux2KleinKVPipeline.from_pretrained(
...     "black-forest-labs/FLUX.2-klein-9b-kv", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> ref_image = Image.open("reference.png")
>>> image = pipe("A cat dressed like a wizard", image=ref_image, num_inference_steps=4).images[0]
>>> image.save("flux2_kv_output.png")

Xet Storage Details

Size:
29 kB
·
Xet hash:
f01685ccc3abfef8b169a6a7285fe5a5af3629876829d798d21a61bddec09d8c

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