Diffusers documentation
PRX
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-t2i | 256 | Hayır | Hayır | 256'de Flux VAE ile ön eğitilmiş temel model | Doğal dilde ayrıntılı istemlerle en iyi sonucu verir | 28 adım, cfg=5.0 | torch.bfloat16 |
Photoroom/prx-256-t2i-sft | 512 | Evet | Hayır | Flux VAE ile Alchemist dataset veri setinde ince ayar yapıldı | Daha az detaylı istemleri işleyebilir | 28 adım, cfg=5.0 | torch.bfloat16 |
Photoroom/prx-512-t2i | 512 | Hayır | Hayır | 512'de Flux VAE ile ön eğitilmiş temel model | Doğal dilde ayrıntılı istemlerle en iyi sonucu verir | 28 adım, cfg=5.0 | torch.bfloat16 |
Photoroom/prx-512-t2i-sft | 512 | Evet | Hayır | Flux VAE ile Alchemist dataset veri setinde ince ayar yapıldı | Doğal dilde daha az ayrıntılı istekleri işleyebilir | 28 adım, cfg=5.0 | torch.bfloat16 |
Photoroom/prx-512-t2i-sft-distilled | 512 | Evet | Evet | Photoroom/prx-512-t2i-sft modelinden 8 adımlık damıtılmış model | Doğal dilde daha az ayrıntılı istekleri işleyebilir | 8 adım, cfg=1.0 | torch.bfloat16 |
Photoroom/prx-512-t2i-dc-ae | 512 | Hayır | Hayır | 512'de Deep Compression Autoencoder (DC-AE) ile ön eğitilmiş temel model | Doğal dilde ayrıntılı istemlerle en iyi sonucu verir | 28 adım, cfg=5.0 | torch.bfloat16 |
Photoroom/prx-512-t2i-dc-ae-sft | 512 | Evet | Hayır | Alchemist veri seti üzerinde Deep Compression Autoencoder (DC-AE) ile ince ayar yapılmıştır | Doğal dilde daha az ayrıntılı istekleri işleyebilir | 28 adım, cfg=5.0 | torch.bfloat16 |
Photoroom/prx-512-t2i-dc-ae-sft-distilled | 512 | Evet | Evet | Photoroom/prx-512-t2i-dc-ae-sft-distilled modelinden türetilmiş 8 adımlık model | Doğal dilde daha az ayrıntılı istekleri işleyebilir | 8 adım, cfg=1.0 | torch.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
< source >( 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
transformerile birlikte kullanılacak bir zamanlayıcı. - text_encoder (
T5GemmaEncoder) — İfadeleri kodlamak için metin kodlayıcı modeli. - tokenizer ([
T5TokenizerFastveyaGemmaTokenizerFast]) — 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__
< source >( 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_lengthdeğ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
< source >( 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
< source >( 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
< source >( ) → 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
< source >( 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
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Parametreler
PRX hatları için çıktı sınıfı.