Diffusers documentation

PRX

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PRX

يولّد PRX صورًا عالية الجودة من النصوص باستخدام معمارية MMDIT مبسطة لا يتم فيها تحديث رموز النص عبر كتل التحويل. ويعتمد على مطابقة التدفق مع جدولة منفصلة للعينة بكفاءة، ويستخدم نموذج T5Gemma-2B-2B-UL2 من Google لتشفير النصوص متعددة اللغات. ويقدّم التحويلي بحجم حوالي 1.3 مليار معامل استنتاجًا سريعًا دون التضحية بالجودة. يمكنك الاختيار بين Flux VAE (ضغط 8x، 16 قناة كامنة) لجودة وسرعة متوازنتين، أو DC-AE (ضغط 32x، 32 قناة كامنة) للضغط الكامن ومعالجة أسرع.

النماذج المتاحة

توفر PRX عدة نسخ بإعدادات مختلفة لـ VAE، حيث تم تحسين كل نسخة لدقة محددة. تتفوق النماذج الأساسية عند استخدام الأوامر النصية المفصّلة، إذ تلتقط التكوينات المعقدة والتفاصيل الدقيقة. أما النماذج المُحسّنة عبر التدريب على مجموعة بيانات Alchemist فتحسّن الجودة الجمالية، لا سيما عند استخدام أوامر نصية أبسط.

النموذجدقةتم ضبطهامُصغَّرالوصفالموجّهات المقترحةالمعلمات المقترحةنوع البيانات الموصى به
Photoroom/prx-256-t2i256لالانموذج أساسي مُدرَّب مسبقًا عند 256 باستخدام Flux VAEيعمل بشكل أفضل مع الأوامر التفصيلية بلغة طبيعية28 خطوة، cfg=5.0torch.bfloat16
Photoroom/prx-256-t2i-sft512نعملاتمت الضبط الدقيق على مجموعة بيانات Alchemist dataset باستخدام Flux VAEيمكنه التعامل مع أوامر أقل تفصيلاً28 خطوة، cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i512لالانموذج أساسي مُدرَّب مسبقًا عند 512 باستخدام Flux VAEيعمل بشكل أفضل مع الأوامر التفصيلية بلغة طبيعية28 خطوة، cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i-sft512نعملاتمت الضبط الدقيق على مجموعة بيانات Alchemist dataset باستخدام Flux VAEيمكنه التعامل مع أوامر أقل تفصيلاً بلغة طبيعية28 خطوة، cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i-sft-distilled512نعمنعمنموذج مُقطّر من 8 خطوات من Photoroom/prx-512-t2i-sftيمكنه التعامل مع أوامر أقل تفصيلاً بلغة طبيعية8 خطوات، cfg=1.0torch.bfloat16
Photoroom/prx-512-t2i-dc-ae512لالاالنموذج الأساسي المُدرَّب مسبقًا عند 512 باستخدام Deep Compression Autoencoder (DC-AE)يعمل بشكل أفضل مع الأوامر التفصيلية بلغة طبيعية28 خطوة، cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i-dc-ae-sft512نعملاتم ضبطه بدقة على مجموعة بيانات Alchemist dataset باستخدام Deep Compression Autoencoder (DC-AE)يمكنه التعامل مع أوامر أقل تفصيلاً بلغة طبيعية28 خطوة، cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i-dc-ae-sft-distilled512نعمنعمنموذج مُقطّر من 8 خطوات من Photoroom/prx-512-t2i-dc-ae-sft-distilledيمكنه التعامل مع أوامر أقل تفصيلاً بلغة طبيعية8 خطوات، cfg=1.0torch.bfloat16

راجع هذه المجموعة لمزيد من المعلومات.

تحميل خط الأنابيب

حمّل خط الأنابيب باستخدام from_pretrained().

from diffusers.pipelines.prx import PRXPipeline

# Load pipeline - VAE and text encoder will be loaded from HuggingFace
pipe = PRXPipeline.from_pretrained("Photoroom/prx-512-t2i-sft", dtype=torch.bfloat16)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "A front-facing portrait of a lion the golden savanna at sunset."
image = pipe(prompt, num_inference_steps=28, guidance_scale=5.0).images[0]
image.save("prx_output.png")

تحميل المكونات يدويًا

حمّل المكونات بشكل فردي لتخصيص خط الأنابيب، على سبيل المثال لاستخدام نماذج مُكمّاة.

import torch
from diffusers.pipelines.prx import PRXPipeline
from diffusers.models import AutoencoderKL, AutoencoderDC
from diffusers.models.transformers.transformer_prx import PRXTransformer2DModel
from diffusers.schedulers import FlowMatchEulerDiscreteScheduler
from transformers import T5GemmaModel, GemmaTokenizerFast
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig
from transformers import BitsAndBytesConfig as BitsAndBytesConfig

quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
# Load transformer
transformer = PRXTransformer2DModel.from_pretrained(
    "checkpoints/prx-512-t2i-sft",
    subfolder="transformer",
    quantization_config=quant_config,
    dtype=torch.bfloat16,
)

# Load scheduler
scheduler = FlowMatchEulerDiscreteScheduler.from_pretrained(
    "checkpoints/prx-512-t2i-sft", subfolder="scheduler"
)

# Load T5Gemma text encoder
t5gemma_model = T5GemmaModel.from_pretrained("google/t5gemma-2b-2b-ul2",
                                            quantization_config=quant_config,
                                            dtype=torch.bfloat16)
text_encoder = t5gemma_model.encoder.to(dtype=torch.bfloat16)
tokenizer = GemmaTokenizerFast.from_pretrained("google/t5gemma-2b-2b-ul2")
tokenizer.model_max_length = 256

# Load VAE - choose either Flux VAE or DC-AE
# Flux VAE
vae = AutoencoderKL.from_pretrained("black-forest-labs/FLUX.1-dev",
                                    subfolder="vae",
                                    quantization_config=quant_config,
                                    dtype=torch.bfloat16)

pipe = PRXPipeline(
    transformer=transformer,
    scheduler=scheduler,
    text_encoder=text_encoder,
    tokenizer=tokenizer,
    vae=vae
)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

تحسين الذاكرة

للمحيطات ذات القيود على الذاكرة:

import torch
from diffusers.pipelines.prx import PRXPipeline

pipe = PRXPipeline.from_pretrained("Photoroom/prx-512-t2i-sft", dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()  # Offload components to CPU when not in use

# Or use sequential CPU offload for even lower memory
pipe.enable_sequential_cpu_offload()

PRXPipeline

فئة diffusers.PRXPipeline

< >

( transformer: PRXTransformer2DModelscheduler: FlowMatchEulerDiscreteSchedulertext_encoder: T5GemmaEncodertokenizer: transformers.models.t5.tokenization_t5.T5Tokenizer | transformers.models.gemma.tokenization_gemma.GemmaTokenizer | transformers.models.auto.tokenization_auto.AutoTokenizervae: diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL | diffusers.models.autoencoders.autoencoder_dc.AutoencoderDC | None = Nonedefault_sample_size: int | None = 512 )

المعاملات

  • transformer (PRXTransformer2DModel) — نموذج PRX transformer لإزالة الضوضاء من كامنات الصورة المُرمّزة.
  • scheduler (FlowMatchEulerDiscreteScheduler) — جدول زمني يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كائنات الصورة المُرمّزة.
  • text_encoder (T5GemmaEncoder) — نموذج ترميز النص لترميز الأوامر.
  • tokenizer ([T5TokenizerFast أو GemmaTokenizerFast]) — مُجزِّئ (Tokenizer) لمُشفِّر النص.
  • vae (AutoencoderKL أو AutoencoderDC) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها. يدعم كلًا من AutoencoderKL (ضغط 8x) وAutoencoderDC (ضغط 32x).

خط أنابيب لتوليد الصور من النص باستخدام PRX Transformer.

يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).

__call__

< >

( prompt: str | list[str] = Nonenegative_prompt: str = ''height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28timesteps: list = Noneguidance_scale: float = 4.0num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneprompt_attention_mask: typing.Optional[torch.BoolTensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.BoolTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueuse_resolution_binning: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']tokenizer_max_length: int | None = Noneskip_text_cleaning: bool = False ) → [~pipelines.prx.PRXPipelineOutput] or *tuple`

المعاملات

  • prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
  • negative_prompt (str، اختياري، القيمة الافتراضية "") — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كانت قيمة guidance_scale أقل من 1).
  • height (int، اختياري، القيمة الافتراضية هي self.transformer.config.sample_size * self.vae_scale_factor) — ارتفاع الصورة المولّدة بالبكسل.
  • width (int، اختياري، القيمة الافتراضية هي self.transformer.config.sample_size * self.vae_scale_factor) — عرض الصورة المولدة بالبكسل.
  • num_inference_steps (int، اختياري، القيمة الافتراضية 28) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
  • timesteps (list[int]، اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل timesteps في طريقة set_timesteps الخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps. يجب أن تكون بترتيب تنازلي.
  • guidance_scale (float، اختياري، القيمة الافتراضية 4.0) — مقياس التوجيه كما هو معرّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2 في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجّع مقياس توجيه أعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة.
  • num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها لكل موجه.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
  • latents (torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم توليد كائن latents عن طريق الاستخراج باستخدام generator العشوائي المُقدَّم.
  • prompt_embeds (torch.FloatTensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخال prompt.
  • negative_prompt_embeds (torch.FloatTensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم وكانت guidance_scale > 1، فسيتم توليد التضمينات السلبية من سلسلة فارغة.
  • prompt_attention_mask (torch.BoolTensor، اختياري) — قناع الانتباه المُولَّد مسبقًا لـ prompt_embeds. إذا لم يُقدَّم، فسيتم توليد قناع الانتباه من معامل الإدخال prompt.
  • negative_prompt_attention_mask (torch.BoolTensor، اختياري) — قناع الانتباه المُولَّد مسبقًا لـ negative_prompt_embeds. إذا لم يُقدَّم وكان guidance_scale > 1، سيتم توليد قناع الانتباه من نص فارغ.
  • output_type (str، اختياري، الافتراضي “pil”) — تنسيق الصورة الناتجة عن التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
  • tokenizer_max_length (int, اختياري) — تجاوز الحد الأقصى لعدد الرموز المستخدمة عند تحويل النص إلى رموز في الموجه. الافتراضي هو model_max_length الخاص بمحوّل النص نفسه عند عدم تعيينه.
  • skip_text_cleaning (bool، اختياري، القيمة الافتراضية False) — إذا كانت True، يتم استخدام تنظيف خفيف فقط للموجّه (إصلاح الترميز + إلغاء هروب HTML) بدلاً من خط أنابيب تنظيف DeepFloyd الكامل.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع [~pipelines.prx.PRXPipelineOutput] بدلاً من tuple عادي.
  • use_resolution_binning (bool، اختياري، القيمة الافتراضية True) — إذا تم ضبطه على True، تُخضع الارتفاع والعرض المطلوبان أولاً إلى أقرب دقة باستخدام صناديق نسبة العرض إلى الارتفاع المحددة مسبقاً. بعد فك ترميز الكمّيات الناتجة إلى صور، يتم تغيير حجمها مرة أخرى إلى الدقة المطلوبة. مفيد لتوليد صور غير مربعة بأدق الدقات المثلى.
  • callback_on_step_end (Callable، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: callback_on_step_end(self, step, timestep, callback_kwargs). ستتضمن 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.

يعيد

[~pipelines.prx.PRXPipelineOutput] أو *tuple`

[~pipelines.prx.PRXPipelineOutput] إذا كان return_dict True، وإلا فسيكون *tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.

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

أمثلة:

>>> import torch
>>> from diffusers import PRXPipeline

>>> # Load pipeline with from_pretrained
>>> pipe = PRXPipeline.from_pretrained("Photoroom/prx-512-t2i-sft")
>>> pipe.to("cuda")

>>> prompt = "A digital painting of a rusty, vintage tram on a sandy beach"
>>> image = pipe(prompt, num_inference_steps=28, guidance_scale=5.0).images[0]
>>> image.save("prx_output.png")

check_inputs

< >

( prompt: str | list[str]height: intwidth: intguidance_scale: floatcallback_on_step_end_tensor_inputs: list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = None )

تحقق من أن جميع المدخلات بصيغة صحيحة.

encode_prompt

< >

( prompt: str | list[str]device: typing.Optional[torch.device] = Nonedo_classifier_free_guidance: bool = Truenegative_prompt: str = ''num_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneprompt_attention_mask: typing.Optional[torch.BoolTensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.BoolTensor] = Nonetokenizer_max_length: int | None = Noneskip_text_cleaning: bool = False )

ترميز موجه النص باستخدام مُرمِّز النص ومُجزِّئ النص القياسيين، أو استخدام التضمينات المحسوبة مسبقًا.

get_default_resolution

< >

( ) → int

يعيد

int

حجم العينة الافتراضي (الارتفاع/العرض) المستخدم للتوليد.

حدد الدقة الافتراضية بناءً على VAE المُحمّل والإعدادات.

prepare_latents

< >

( batch_size: intnum_channels_latents: intheight: intwidth: intdtype: dtypedevice: devicegenerator: typing.Optional[torch.Generator] = Nonelatents: typing.Optional[torch.Tensor] = None )

جهّز الكمونيات الأولية لعملية الانتشار.

PRXPipelineOutput

فئة diffusers.pipelines.prx.PRXPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

المعاملات

  • images (list[PIL.Image.Image] أو np.ndarray) — قائمة من صور PIL منزوعة الضوضاء بطول batch_size أو مصفوفة numpy بأبعاد (batch_size, height, width, num_channels). تمثل صور PIL أو مصفوفة numpy الصور منزوعة الضوضاء من خط أنابيب الانتشار.

فئة الإخراج لخطوط أنابيب PRX.

Update on GitHub