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, metin jetonlarının transformer blokları boyunca güncellenmediği basitleştirilmiş bir MMDIT mimarisi kullanarak metinden yüksek kaliteli görseller üretir. Verimli örneklemeler için ayrık zamanlamalı akış eşleştirmesi (flow matching) kullanır ve çok dilli metin kodlaması için Google'ın T5Gemma-2B-2B-UL2 modelini kullanır. ~1.3B parametreli transformer, kaliteden ödün vermeden hızlı çıkarım sağlar. Dengeli kalite ve hız için Flux VAE (8x sıkıştırma, 16 latent kanal) veya latent sıkıştırma ve daha hızlı işleme için DC-AE (32x sıkıştırma, 32 latent kanal) arasında seçim yapabilirsiniz.

Mevcut modeller

PRX, farklı VAE yapılandırmalarına sahip birden fazla varyant sunar; her biri belirli çözünürlükler için optimize edilmiştir. Temel modeller, ayrıntılı istemlerle mükemmel performans gösterir; karmaşık kompozisyonları ve ince detayları yakalar. Alchemist veri seti üzerinde eğitilmiş ince ayarlı modeller, özellikle daha basit istemlerle estetik kaliteyi artırır.

ModelÇözümİnce ayarlanmışDamıtılmışAçıklamaÖnerilen istemlerÖnerilen parametrelerÖnerilen dtype
Photoroom/prx-256-t2i256HayırHayır256'de Flux VAE ile ön eğitilmiş temel modelDoğal dilde ayrıntılı istemlerle en iyi sonucu verir28 adım, cfg=5.0torch.bfloat16
Photoroom/prx-256-t2i-sft512EvetHayırFlux VAE ile Alchemist dataset veri setinde ince ayar yapıldıDaha az detaylı istemleri işleyebilir28 adım, cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i512HayırHayır512'de Flux VAE ile ön eğitilmiş temel modelDoğal dilde ayrıntılı istemlerle en iyi sonucu verir28 adım, cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i-sft512EvetHayırFlux VAE ile Alchemist dataset veri setinde ince ayar yapıldıDoğal dilde daha az ayrıntılı istekleri işleyebilir28 adım, cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i-sft-distilled512EvetEvetPhotoroom/prx-512-t2i-sft modelinden 8 adımlık damıtılmış modelDoğal dilde daha az ayrıntılı istekleri işleyebilir8 adım, cfg=1.0torch.bfloat16
Photoroom/prx-512-t2i-dc-ae512HayırHayır512'de Deep Compression Autoencoder (DC-AE) ile ön eğitilmiş temel modelDoğal dilde ayrıntılı istemlerle en iyi sonucu verir28 adım, cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i-dc-ae-sft512EvetHayırAlchemist veri seti üzerinde Deep Compression Autoencoder (DC-AE) ile ince ayar yapılmıştırDoğal dilde daha az ayrıntılı istekleri işleyebilir28 adım, cfg=5.0torch.bfloat16
Photoroom/prx-512-t2i-dc-ae-sft-distilled512EvetEvetPhotoroom/prx-512-t2i-dc-ae-sft-distilled modelinden türetilmiş 8 adımlık modelDoğal dilde daha az ayrıntılı istekleri işleyebilir8 adım, cfg=1.0torch.bfloat16

Daha fazla bilgi için bu koleksiyona başvurun.

Hattın yüklenmesi

Load the pipeline with 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")

Manuel Bileşen Yükleme

Örneğin, kuantize modelleri kullanmak için hattı özelleştirmek üzere bileşenleri ayrı ayrı yükleyin.

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"

Bellek Optimizasyonu

Bellek kısıtlamalı ortamlar için:

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

sınıf 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 )

Parametreler

  • transformer (PRXTransformer2DModel) — Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan PRX transformer modeli.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Kodlanmış görüntü latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.
  • text_encoder (T5GemmaEncoder) — İfadeleri kodlamak için metin kodlayıcı modeli.
  • tokenizer ([T5TokenizerFast veya GemmaTokenizerFast]) — Metin kodlayıcı için tokenizer.
  • vae (AutoencoderKL veya AutoencoderDC) — Görselleri latent temsillere kodlamak ve bu temsillerden çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli. Hem AutoencoderKL (8x sıkıştırma) hem de AutoencoderDC (32x sıkıştırma) desteklenir.

PRX Transformer kullanılarak metinden görüntüye üretim için Pipeline.

Bu model DiffusionPipeline sınıfından devralır. Kütüphanenin tüm pipeline'lar için uyguladığı genel yöntemler (indirme veya kaydetme, belirli bir cihazda çalıştırma vb.) için üst sınıf belgelendirmesine bakın.

__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`

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine prompt_embeds parametresinin geçirilmesi gerekir.
  • negative_prompt (str, isteğe bağlı, varsayılan "") — Görsel üretimini yönlendirmemesi istenen istem veya istemler. Yönlendirme kullanılmadığında yok sayılır (yani guidance_scale 1'den küçükse yok sayılır).
  • height (int, isteğe bağlı, varsayılan: self.transformer.config.sample_size * self.vae_scale_factor) — Oluşturulan görüntünün piksel cinsinden yüksekliği.
  • width (int, isteğe bağlı, varsayılan: self.transformer.config.sample_size * self.vae_scale_factor) — Oluşturulan görüntünün piksel cinsinden genişliği.
  • num_inference_steps (int, isteğe bağlı, varsayılan 28) — Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.
  • timesteps (list[int], optional) — Custom timesteps to use for the denoising process with schedulers which support a timesteps argument in their set_timesteps method. If not defined, the default behavior when num_inference_steps is passed will be used. Must be in descending order.
  • guidance_scale (float, opsiyonel, varsayılan 4.0) — Classifier-Free Diffusion Guidance makalesinde tanımlandığı gibi yönlendirme ölçeği. guidance_scale, Imagen Paper makalesindeki 2. denklemindeki w olarak tanımlanır. Yönlendirme ölçeği, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, metin prompt'u ile yakından ilişkili görsellerin üretilmesini teşvik eder, genellikle bu da daha düşük görsel kalitesi pahasına olur.
  • num_images_per_prompt (int, isteğe bağlı, varsayılan 1) — Her istem için oluşturulacak görsel sayısı.
  • generator (torch.Generator veya list[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için bir veya bir torch üreteci listesi.
  • latents (torch.Tensor, opsiyonel) — Gaussian dağılımdan örneklenmiş, gürültülü ve önceden oluşturulmuş latents; görsel üretimi için girdi olarak kullanılabilir. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklemeye dayalı bir latents tensörü oluşturulur.
  • prompt_embeds (torch.FloatTensor, opsiyonel) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
  • negative_prompt_embeds (torch.FloatTensor, opsiyonel) — Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa ve guidance_scale > 1 ise, negatif gömme değerleri boş bir diziden oluşturulur.
  • prompt_attention_mask (torch.BoolTensor, isteğe bağlı) — prompt_embeds için önceden oluşturulmuş dikkat maskesi. Sağlanmazsa, dikkat maskesi prompt girdi argümanından oluşturulur.
  • negative_prompt_attention_mask (torch.BoolTensor, isteğe bağlı) — negative_prompt_embeds için önceden oluşturulmuş dikkat maskesi. Sağlanmazsa ve guidance_scale > 1 ise, dikkat maskesi boş bir diziden oluşturulur.
  • output_type (str, isteğe bağlı, varsayılan “pil”) — Görsel oluşturma çıktısının biçimi. Şunlardan birini seçin: PIL: PIL.Image.Image veya np.array.
  • tokenizer_max_length (int, opsiyonel) — İstem (prompt) işlenirken (tokenize) kullanılan maksimum token sayısını geçersiz kılar. Ayarlanmadığında varsayılan olarak tokenizer'ın kendi model_max_length değerini kullanır.
  • skip_text_cleaning (bool, isteğe bağlı, varsayılan False) — True ise, tam DeepFloyd temizleme hattı yerine yalnızca hafif istem temizliği (kodlamayı düzeltme + HTML kaçışlarını kaldırma) kullanılır.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine [~pipelines.prx.PRXPipelineOutput] döndürülüp döndürülmemesi.
  • use_resolution_binning (bool, isteğe bağlı, varsayılan True) — True olarak ayarlanırsa, istenen yükseklik ve genişlik, önceden tanımlı en-boy oranı bini kullanılarak en yakın çözünürlüklere eşlenir. Üretilen latentler görüntülere çözümlendikten sonra, istenen çözünürlüğe yeniden boyutlandırılır. Optimal çözünürlüklerde kare olmayan görüntüler üretmek için faydalıdır.
  • callback_on_step_end (Callable, isteğe bağlı) — Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır: callback_on_step_end(self, step, timestep, callback_kwargs). callback_kwargs, callback_on_step_end_tensor_inputs tarafından belirtildiği üzere tüm tensörlerin listesini içerir.
  • callback_on_step_end_tensor_inputs (list, optional) — callback_on_step_end işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler callback_kwargs argümanı olarak geçirilir. Yalnızca ._callback_tensor_inputs özniteliğinde listelenen tensörleri dahil edebilirsiniz.

Dönüş değeri

[~pipelines.prx.PRXPipelineOutput] veya *tuple`

[~pipelines.prx.PRXPipelineOutput] return_dict True ise, aksi halde bir *tuple döner. Tuple döndürüldüğünde, ilk öğe üretilen görsellerin listesidir.

Üretim için pipeline çağrıldığında tetiklenen işlev.

Örnekler:

>>> 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 )

Tüm girdilerin doğru formatta olduğunu kontrol edin.

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 )

Standart metin kodlayıcı ve belirteçleyiciyi kullanarak metin komutunu kodlayın veya önceden hesaplanmış gömme değerlerini kullanın.

get_default_resolution

< >

( ) → int

Dönüş değeri

int

Üretim için kullanılacak varsayılan örnek boyutu (yükseklik/genişlik).

Yüklenen VAE ve yapılandırmaya göre varsayılan çözünürlüğü belirleyin.

prepare_latents

< >

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

Difüzyon süreci için başlangıç latenslerini hazırlar.

PRXPipelineOutput

sınıf diffusers.pipelines.prx.PRXPipelineOutput

< >

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

Parametreler

  • images (list[PIL.Image.Image] veya np.ndarray) — Uzunluğu batch_size olan gürültüsü azaltılmış PIL görüntülerinin listesi veya (batch_size, height, width, num_channels) biçiminde bir numpy dizisi. PIL görüntüleri veya numpy dizisi, difüzyon hattının gürültüsü azaltılmış görüntülerini temsil eder.

PRX hatları için çıktı sınıfı.

Update on GitHub