Buckets:
Apache Lisansı, 2.0 Sürümü ("Lisans") altında lisanslanmıştır;
bu dosyayı, Lisansa uygun olarak kullanabilirsiniz.
Lisansın bir kopyasını şu adresten edinebilirsiniz
http://www.apache.org/licenses/LICENSE-2.0
Uygulanabilir yasa gerektirmedikçe veya yazılı olarak anlaşılmadıkça, yazılım
Lisans kapsamında dağıtılan, "OLDUĞU GİBİ" esasına göre dağıtılır,
HİÇBİR TÜR AÇIK VEYA ZIMMİ GARANTİ VEYA ŞART İÇERMEZ.
İzinleri ve
lisans kapsamındaki kısıtlamalar. -->
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 detaylı istemleri 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[[diffusers.PRXPipeline]]
diffusers.PRXPipeline[[diffusers.PRXPipeline]]
diffusers.PRXPipeline(transformer: PRXTransformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, text_encoder: T5GemmaEncoder, tokenizer: transformers.models.t5.tokenization_t5.T5Tokenizer | transformers.models.gemma.tokenization_gemma.GemmaTokenizer | transformers.models.auto.tokenization_auto.AutoTokenizer, vae: diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL | diffusers.models.autoencoders.autoencoder_dc.AutoencoderDC | None = None, default_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ısı için tokenizer.
vae (AutoencoderKL veya AutoencoderDC) : Görüntüleri 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[[diffusers.PRXPipeline.call]]
__call__(prompt: str | list[str] = None, negative_prompt: str = '', height: int | None = None, width: int | None = None, num_inference_steps: int = 28, timesteps: list = None, guidance_scale: float = 4.0, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, prompt_attention_mask: typing.Optional[torch.BoolTensor] = None, negative_prompt_attention_mask: typing.Optional[torch.BoolTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, use_resolution_binning: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], tokenizer_max_length: int | None = None, skip_text_cleaning: bool = False)
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 geçirilmelidir.
negative_prompt (str, optional, varsayılan "") : Görsel üretimi yönlendirmemek için kullanılan 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, optional, varsayılan: self.transformer.config.sample_size * self.vae_scale_factor) : Üretilen görüntünün piksel cinsinden yüksekliği.
width (int, optional, varsayılan: self.transformer.config.sample_size * self.vae_scale_factor) : Üretilen görüntünün piksel cinsinden genişliği.
num_inference_steps (int, optional, 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], opsiyonel) : set_timesteps metodunda timesteps argümanını destekleyen zamanlayıcılarla (scheduler) gürültü azaltma (denoising) süreci için kullanılacak özel zaman adımları. Tanımlanmamışsa, num_inference_steps geçirildiğinde varsayılan davranış kullanılır. Azalan sırada olmalıdır.
guidance_scale (float, optional, varsayılan 4.0) : Classifier-Free Diffusion Guidance'de tanımlanan yönlendirme ölçeği. guidance_scale, Imagen Paper'deki 2. denklemindeki w olarak tanımlanır. guidance_scale > 1 ayarlanarak yönlendirme ölçeği etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, prompt ile yakından ilişkili görüntülerin üretilmesini teşvik eder.
num_images_per_prompt (int, optional, varsayılan 1) : Her istem için üretilecek görsel sayısı.
generator (torch.Generator veya list[torch.Generator], opsiyonel) : Üretimi deterministik hale getirmek için bir veya bir torch generator(ları) listesi.
latents (torch.Tensor, opsiyonel) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklem yoluyla bir latens tensörü oluşturulur.
prompt_embeds (torch.FloatTensor, opsiyonel) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
negative_prompt_embeds (torch.FloatTensor, opsiyonel) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmaz ve guidance_scale > 1 ise, negatif gömme değerleri boş bir diziden oluşturulur.
prompt_attention_mask (torch.BoolTensor, opsiyonel) : 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, opsiyonel) : 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, opsiyonel, varsayılan "pil") : Üretilen görüntünün çıktı biçimi. PIL: PIL.Image.Image veya np.array arasında seçim yapın.
tokenizer_max_length (int, opsiyonel) : İfadenin (prompt) tokenize edilmesinde 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üzelt + HTML kaçışlarını kaldır) kullanılır.
return_dict (bool, opsiyonel, varsayılan True) : Düz bir tuple yerine [~pipelines.prx.PRXPipelineOutput] döndürülüp döndürülmediğini belirtir.
use_resolution_binning (bool, opsiyonel, varsayılan True) : True olarak ayarlanırsa, istenen yükseklik ve genişlik, önceden tanımlı en-boy oranı sınıfları 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 şu 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çerecektir.
callback_on_step_end_tensor_inputs (list, optional) : callback_on_step_end fonksiyonu 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üş: [~pipelines.prx.PRXPipelineOutput] veya *tuple`
[~pipelines.prx.PRXPipelineOutput] return_dict True ise, aksi halde bir tuple. 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[[diffusers.PRXPipeline.check_inputs]]
check_inputs(prompt: str | list[str], height: int, width: int, guidance_scale: float, callback_on_step_end_tensor_inputs: list[str] | None = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None)
Tüm girdilerin doğru formatta olduğunu kontrol edin.
encode_prompt[[diffusers.PRXPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], device: typing.Optional[torch.device] = None, do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, prompt_attention_mask: typing.Optional[torch.BoolTensor] = None, negative_prompt_attention_mask: typing.Optional[torch.BoolTensor] = None, tokenizer_max_length: int | None = None, skip_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[[diffusers.PRXPipeline.get_default_resolution]]
get_default_resolution()
Dönüş: 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[[diffusers.PRXPipeline.prepare_latents]]
prepare_latents(batch_size: int, num_channels_latents: int, height: int, width: int, dtype: dtype, device: device, generator: typing.Optional[torch.Generator] = None, latents: typing.Optional[torch.Tensor] = None)
Difüzyon süreci için başlangıç latenslerini hazırlar.
PRXPipelineOutput[[diffusers.pipelines.prx.PRXPipelineOutput]]
diffusers.pipelines.prx.PRXPipelineOutput[[diffusers.pipelines.prx.PRXPipelineOutput]]
diffusers.pipelines.prx.PRXPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray)
Parametreler:
images (list[PIL.Image.Image] veya np.ndarray) : batch_size uzunluğunda gürültüsü azaltılmış PIL görselleri listesi veya (batch_size, height, width, num_channels) biçiminde numpy dizisi. PIL görselleri veya numpy dizisi, difüzyon hattının gürültüsü azaltılmış görsellerini temsil eder.
PRX hatları için çıktı sınıfı.
Xet Storage Details
- Size:
- 20 kB
- Xet hash:
- a53c8e27ed9f3e3e91d72a3c4ccbaa3852a798b25e808b67f24591386a33119d
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.