Diffusers documentation
SanaPipeline
SanaPipeline
NVIDIA ve MIT HAN Lab'den Enze Xie, Junsong Chen, Junyu Chen, Han Cai, Haotian Tang, Yujun Lin, Zhekai Zhang, Muyang Li, Ligeng Zhu, Yao Lu, Song Han tarafından SANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformers
Makalenin özeti şudur:
Sana'yı tanıtıyoruz; 4096×4096 çözünürlüğe kadar görüntüleri verimli bir şekilde üretebilen bir metinden görüntüye çerçevesi. Sana, son derece yüksek hızda, güçlü metin-görüntü hizalamasına sahip yüksek çözünürlüklü ve yüksek kaliteli görüntüler sentezleyebilir ve dizüstü bilgisayar GPU'larında dağıtılabilir. Temel tasarımlar şunları içerir: (1) Derin sıkıştırma otoenkoder: görüntüleri yalnızca 8× sıkıştıran geleneksel AE'lerin aksine, görüntüleri 32× sıkıştırabilen bir AE eğittik; bu, latent token sayısını etkili bir şekilde azaltır. (2) Doğrusal DiT: DiT'deki tüm standart dikkat mekanizmalarını, kaliteden ödün vermeden yüksek çözünürlüklerde daha verimli olan doğrusal dikkatle değiştirdik. (3) Sadece çözücü metin kodlayıcı: T5'i, metin kodlayıcı olarak modern, yalnızca çözücü tabanlı küçük bir LLM ile değiştirdik ve görüntü-metin hizalamasını güçlendirmek için bağlam içi öğrenme ile karmaşık insan talimatları tasarladık. (4) Verimli eğitim ve örneklem: örneklem adımlarını azaltmak için Flow-DPM-Solver öneriyoruz; yakınsamayı hızlandırmak için verimli başlık etiketleme ve seçimi kullanıyoruz. Sonuç olarak, Sana-0.6B, modern dev difüzyon modelleriyle (ör. Flux-12B) çok rekabetçidir; 20 kat daha küçük olup ölçülen verimlilikte 100+ kat daha hızlıdır. Ayrıca, Sana-0.6B, 16GB'lık bir dizüstü bilgisayar GPU'suna dağıtılabilir ve 1024×1024 çözünürlüğünde bir görüntü üretmek için 1 saniyeden az zaman alır. Sana, düşük maliyetle içerik oluşturmaya olanak tanır. Kod ve model kamuya açık olarak yayınlanacaktır.
Scheduler'lar kılavuzunu inceleyerek scheduler hızı ve kalitesi arasındaki ödünleşimi nasıl keşfedebileceğinizi öğrenin ve aynı bileşenleri birden fazla pipeline'a nasıl verimli bir şekilde yükleyebileceğinizi öğrenmek için pipeline'lar arasında bileşenleri yeniden kullanma bölümüne göz atın.
Bu pipeline lawrence-cj ve chenjy2003 tarafından katkı sağlanmıştır. Orijinal kod tabanı burada bulunabilir. Orijinal ağırlıklar hf.co/Efficient-Large-Model altında bulunabilir.
Mevcut modeller:
| Model | Önerilen dtype |
|---|---|
Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers | torch.bfloat16 |
Efficient-Large-Model/Sana_1600M_1024px_diffusers | torch.float16 |
Efficient-Large-Model/Sana_1600M_1024px_MultiLing_diffusers | torch.float16 |
Efficient-Large-Model/Sana_1600M_512px_diffusers | torch.float16 |
Efficient-Large-Model/Sana_1600M_512px_MultiLing_diffusers | torch.float16 |
Efficient-Large-Model/Sana_600M_1024px_diffusers | torch.float16 |
Efficient-Large-Model/Sana_600M_512px_diffusers | torch.float16 |
Daha fazla bilgi için bu koleksiyona başvurun.
Not: Bahsedilen önerilen dtype, transformer ağırlıkları içindir. Modelin doğru çalışması için metin kodlayıcı ve VAE ağırlıkları torch.bfloat16 veya torch.float32 olarak kalmalıdır. Modelin önerilen dtype ile nasıl yükleneceğini görmek için aşağıdaki çıkarım örneğine bakın.
Daha az disk alanı kullanmak için indirilen checkpoint'lerde
variantargümanını iletmenizden emin olun. Önerilen dtype'ıtorch.float16olan modeller için bunu"fp16"olarak, önerilen dtype'ıtorch.bfloat16olan modeller için ise"bf16"olarak ayarlayın. Varsayılan olarak, iki katı disk depolama alanı kullanantorch.float32ağırlıkları indirilir. Ayrıca,dtypeargümanını belirleyerektorch.float32ağırlıkları anlık olarak aşağı dönüştürülebilir. Bununla ilgili belgelerde okuyun.
Kantizasyon
Kantizasyon, model ağırlıklarını daha düşük hassasiyetli bir veri türünde saklayarak çok büyük modellerin bellek gereksinimlerini azaltmaya yardımcı olur. Ancak kantizasyonun video kalitesi üzerindeki etkisi, video modeline göre değişebilir.
Desteklenen kuantizasyon arka uçları ve kullanım durumunu destekleyen bir kuantizasyon arka ucunu seçme hakkında daha fazla bilgi edinmek için Quantization genel bakışına başvurun. Aşağıdaki örnek, bitsandbytes ile çıkarım için kuantize edilmiş bir SanaPipeline yüklemenin nasıl yapılacağını göstermektedir.
import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, SanaTransformer2DModel, SanaPipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, AutoModel
quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = AutoModel.from_pretrained(
"Efficient-Large-Model/Sana_1600M_1024px_diffusers",
subfolder="text_encoder",
quantization_config=quant_config,
dtype=torch.float16,
)
quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = SanaTransformer2DModel.from_pretrained(
"Efficient-Large-Model/Sana_1600M_1024px_diffusers",
subfolder="transformer",
quantization_config=quant_config,
dtype=torch.float16,
)
pipeline = SanaPipeline.from_pretrained(
"Efficient-Large-Model/Sana_1600M_1024px_diffusers",
text_encoder=text_encoder_8bit,
transformer=transformer_8bit,
dtype=torch.float16,
device_map="balanced",
)
prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt).images[0]
image.save("sana.png")SanaPipeline
sınıf diffusers.SanaPipeline
< source >( tokenizer: GemmaTokenizertext_encoder: Gemma2PreTrainedModelvae: AutoencoderDCtransformer: SanaTransformer2DModelscheduler: DPMSolverMultistepScheduler )
Sana kullanarak metinden görüntüye üretim hattı.
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str = ''num_inference_steps: int = 20timesteps: list = Nonesigmas: list = Noneguidance_scale: float = 4.5num_images_per_prompt: int | None = 1height: int = 1024width: int = 1024eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueclean_caption: bool = Falseuse_resolution_binning: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 300complex_human_instruction: list = ["Given a user prompt, generate an 'Enhanced prompt' that provides detailed visual descriptions suitable for image generation. Evaluate the level of detail in the user prompt:", '- If the prompt is simple, focus on adding specifics about colors, shapes, sizes, textures, and spatial relationships to create vivid and concrete scenes.', '- If the prompt is already detailed, refine and enhance the existing details slightly without overcomplicating.', 'Here are examples of how to transform or refine prompts:', '- User Prompt: A cat sleeping -> Enhanced: A small, fluffy white cat curled up in a round shape, sleeping peacefully on a warm sunny windowsill, surrounded by pots of blooming red flowers.', '- User Prompt: A busy city street -> Enhanced: A bustling city street scene at dusk, featuring glowing street lamps, a diverse crowd of people in colorful clothing, and a double-decker bus passing by towering glass skyscrapers.', 'Please generate only the enhanced description for the prompt below and avoid including any additional commentary or evaluations:', 'User Prompt: '] ) → SanaPipelineOutput or tuple
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerineprompt_embedsgeçirilmelidir. - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerinenegative_prompt_embedsparametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yaniguidance_scaledeğeri1'den küçükse) yok sayılır. - num_inference_steps (
int, isteğe bağlı, varsayılan 20) — 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], isteğe bağlı) —timestepsargümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel zaman adımları.set_timestepsyönteminde. Tanımlanmamışsa,num_inference_stepsgeçirildiğinde varsayılan davranış kullanılacaktır. Azalan sırada olmalıdır. - sigmas (
list[float], isteğe bağlı) —set_timestepsyöntemlerindesigmasargümanını destekleyen zamanlayıcılarla gürültü azaltma sürecinde kullanılacak özel sigmalar. Tanımlanmamışsa,num_inference_stepsgeçirildiğinde varsayılan davranış kullanılır. - guidance_scale (
float, isteğe bağlı, varsayılan 4.5) — Classifier-Free Diffusion Guidance'de tanımlandığı gibi yönlendirme ölçeği.guidance_scale, Imagen Paper'daki 2. denkleminw'si olarak tanımlanır. Yönlendirme ölçeği,guidance_scale > 1olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği,promptmetniyle yakından ilişkili görsellerin üretilmesini teşvik eder, genellikle daha düşük görsel kalitesi pahasına. - num_images_per_prompt (
int, isteğe bağlı, varsayılan 1) — Her istem için oluşturulacak görsel sayısı. - height (
int, isteğe bağlı, varsayılan: self.unet.config.sample_size) — Oluşturulan görüntünün piksel cinsinden yüksekliği. - width (
int, isteğe bağlı, varsayılan: self.unet.config.sample_size) — Oluşturulan görüntünün piksel cinsinden genişliği. - eta (
float, isteğe bağlı, varsayılan 0.0) — DDIM makalesindeki eta (η) parametresine karşılık gelir: https://huggingface.co/papers/2010.02502. Yalnızca schedulers.DDIMScheduler için geçerlidir, diğerlerinde yok sayılır. - generator (
torch.Generatorveyalist[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için bir veya torch üreteci listesi. - latents (
torch.Tensor, isteğe bağlı) — Gaussian dağılımdan örneklenmiş, gürültülü ve önceden oluşturulmuş latents; görüntü üretimi için girdi olarak kullanılabilir. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgelegeneratorkullanılarak örneklemeye dayalı bir latents tensörü oluşturulur. - prompt_embeds (
torch.Tensor, isteğe bağlı) — Ö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ğerleripromptgirdi argümanından oluşturulur. - prompt_attention_mask (
torch.Tensor, isteğe bağlı) — Metin gömme (embedding) için önceden oluşturulmuş dikkat maskesi. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. PixArt-Sigma için bu negatif istem "" olmalıdır. Sağlanmazsa, negative_prompt_embeds,negative_promptgirdi argümanından oluşturulur. - negative_prompt_attention_mask (
torch.Tensor, isteğe bağlı) — Negatif metin gömme verileri için önceden oluşturulmuş dikkat maskesi. - 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.Imageveyanp.array. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~pipelines.stable_diffusion.IFPipelineOutputdöndürülüp döndürülmemesi. - attention_kwargs —
Belirtilirse, diffusers.models.attention_processor içindeki
self.processoraltında tanımlananAttentionProcessor'a iletilen bir kwargs sözlüğü. - clean_caption (
bool, isteğe bağlı, varsayılanTrue) — Gömleştirmeler oluşturulmadan önce açıklamanın temizlenip temizlenmeyeceğini belirtir. Bunun içinbeautifulsoup4veftfypaketlerinin yüklü olması gerekir. Bağımlılıklar yüklü değilse, gömleştirmeler ham istemden oluşturulur. - use_resolution_binning (
bool, varsayılanTrue) —Trueolarak ayarlanırsa, istenen yükseklik ve genişlik önceASPECT_RATIO_1024_BINkullanılarak en yakın çözümlere eşlenir. Oluşturulan latentler görüntülere çözümlendikten sonra, istenen çözünürlüğe yeniden boyutlandırılır. 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: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargs,callback_on_step_end_tensor_inputstarafından belirtilen tüm tensörlerin listesini içerir. - callback_on_step_end_tensor_inputs (
list, isteğe bağlı) —callback_on_step_endişlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler,callback_kwargsargümanı olarak geçirilir. Yalnızca pipeline sınıfınızın._callback_tensor_inputsözniteliğinde listelenen değişkenleri dahil edebilirsiniz. - max_sequence_length (
int, varsayılan300) —promptile kullanılacak maksimum dizi uzunluğu. - complex_human_instruction (
list[str], isteğe bağlı) — Karmaşık insan dikkati için talimatlar: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55.
Dönüş değeri
SanaPipelineOutput veya tuple
return_dict True ise SanaPipelineOutput döndürülür,
aksi halde ilk öğesi üretilen görüntülerin listesinden oluşan bir tuple döndürülür
Üretim için pipeline çağrıldığında tetiklenen işlev.
Örnekler:
>>> import torch
>>> from diffusers import SanaPipeline
>>> pipe = SanaPipeline.from_pretrained(
... "Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers", torch_dtype=torch.float32
... )
>>> pipe.to("cuda")
>>> pipe.text_encoder.to(torch.bfloat16)
>>> pipe.transformer = pipe.transformer.to(torch.bfloat16)
>>> image = pipe(prompt='a cyberpunk cat with a neon sign that says "Sana"')[0]
>>> image[0].save("output.png")encode_prompt
< source >( prompt: str | list[str]do_classifier_free_guidance: bool = Truenegative_prompt: str = ''num_images_per_prompt: int = 1device: typing.Optional[torch.device] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneclean_caption: bool = Falsemax_sequence_length: int = 300complex_human_instruction: list[str] | None = Nonelora_scale: float | None = None )
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — kodlanacak prompt - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem. Tanımlanmazsa, bunun yerinenegative_prompt_embedsdeğeri geçirilmelidir. Yönlendirme kullanılmadığında yok sayılır (yaniguidance_scale,1'den küçükse yok sayılır). PixArt-Alpha için bu değer "" olmalıdır. - do_classifier_free_guidance (
bool, isteğe bağlı, varsayılanTrue) — classifier free guidance kullanılacak mı - num_images_per_prompt (
int, isteğe bağlı, varsayılan 1) — her prompt için oluşturulacak görsel sayısı - device — (
torch.device, isteğe bağlı): Sonuç olarak elde edilen gömme vektörlerinin yerleştirileceği torch cihazı - prompt_embeds (
torch.Tensor, isteğe bağlı) — Ö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ğerleripromptgirdi argümanından oluşturulur. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Sana için, "" dizisinin gömme değerleri olmalıdır. - clean_caption (
bool, varsayılanFalse) —Trueise, fonksiyon kodlamadan önce sağlanan başlığı ön işler ve temizler. - max_sequence_length (
int, varsayılan 300) — İstem için kullanılacak maksimum dizi uzunluğu. - complex_human_instruction (
list[str], varsayılancomplex_human_instruction) —complex_human_instructionboş değilse, işlev istem için karmaşık Human talimatını kullanır.
İsteği metin kodlayıcı gizli durumlarına kodlar.
SanaPAGPipeline
sınıf diffusers.SanaPAGPipeline
< source >( tokenizer: GemmaTokenizertext_encoder: Gemma2PreTrainedModelvae: AutoencoderDCtransformer: SanaTransformer2DModelscheduler: FlowMatchEulerDiscreteSchedulerpag_applied_layers: str | list[str] = 'transformer_blocks.0' )
Sana kullanılarak metinden görüntüye üretim için pipeline. Bu pipeline, Perturbed Attention Guidance (PAG) kullanımını destekler.
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str = ''num_inference_steps: int = 20timesteps: list = Nonesigmas: list = Noneguidance_scale: float = 4.5num_images_per_prompt: int | None = 1height: int = 1024width: int = 1024eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueclean_caption: bool = Falseuse_resolution_binning: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 300complex_human_instruction: list = ["Given a user prompt, generate an 'Enhanced prompt' that provides detailed visual descriptions suitable for image generation. Evaluate the level of detail in the user prompt:", '- If the prompt is simple, focus on adding specifics about colors, shapes, sizes, textures, and spatial relationships to create vivid and concrete scenes.', '- If the prompt is already detailed, refine and enhance the existing details slightly without overcomplicating.', 'Here are examples of how to transform or refine prompts:', '- User Prompt: A cat sleeping -> Enhanced: A small, fluffy white cat curled up in a round shape, sleeping peacefully on a warm sunny windowsill, surrounded by pots of blooming red flowers.', '- User Prompt: A busy city street -> Enhanced: A bustling city street scene at dusk, featuring glowing street lamps, a diverse crowd of people in colorful clothing, and a double-decker bus passing by towering glass skyscrapers.', 'Please generate only the enhanced description for the prompt below and avoid including any additional commentary or evaluations:', 'User Prompt: ']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ImagePipelineOutput or tuple
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerineprompt_embedsgeçirilmelidir. - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerinenegative_prompt_embedsparametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yaniguidance_scaledeğeri1'den küçükse) yok sayılır. - num_inference_steps (
int, isteğe bağlı, varsayılan 20) — 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], isteğe bağlı) —timestepsargümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel zaman adımları.set_timestepsyönteminde. Tanımlanmamışsa,num_inference_stepsgeçirildiğinde varsayılan davranış kullanılacaktır. Azalan sırada olmalıdır. - sigmas (
list[float], isteğe bağlı) —set_timestepsyöntemlerindesigmasargümanını destekleyen zamanlayıcılarla gürültü azaltma sürecinde kullanılacak özel sigmalar. Tanımlanmamışsa,num_inference_stepsgeçirildiğinde varsayılan davranış kullanılır. - guidance_scale (
float, isteğe bağlı, varsayılan 4.5) — Classifier-Free Diffusion Guidance'de tanımlandığı gibi yönlendirme ölçeği.guidance_scale, Imagen Paper'daki 2. denkleminw'si olarak tanımlanır. Yönlendirme ölçeği,guidance_scale > 1olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği,promptmetniyle yakından ilişkili görsellerin üretilmesini teşvik eder, genellikle daha düşük görsel kalitesi pahasına. - num_images_per_prompt (
int, isteğe bağlı, varsayılan 1) — Her istem için oluşturulacak görsel sayısı. - height (
int, isteğe bağlı, varsayılan: self.unet.config.sample_size) — Oluşturulan görüntünün piksel cinsinden yüksekliği. - width (
int, isteğe bağlı, varsayılan: self.unet.config.sample_size) — Oluşturulan görüntünün piksel cinsinden genişliği. - eta (
float, isteğe bağlı, varsayılan 0.0) — DDIM makalesindeki eta (η) parametresine karşılık gelir: https://huggingface.co/papers/2010.02502. Yalnızca schedulers.DDIMScheduler için geçerlidir, diğerlerinde yok sayılır. - generator (
torch.Generatorveyalist[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için bir veya torch üreteci listesi. - latents (
torch.Tensor, isteğe bağlı) — Gaussian dağılımdan örneklenmiş, gürültülü ve önceden oluşturulmuş latents; görüntü üretimi için girdi olarak kullanılabilir. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgelegeneratorkullanılarak örneklemeye dayalı bir latents tensörü oluşturulur. - prompt_embeds (
torch.Tensor, isteğe bağlı) — Ö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ğerleripromptgirdi argümanından oluşturulur. - prompt_attention_mask (
torch.Tensor, isteğe bağlı) — Metin gömme (embedding) için önceden oluşturulmuş dikkat maskesi. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. PixArt-Sigma için bu negatif istem "" olmalıdır. Sağlanmazsa, negative_prompt_embeds,negative_promptgirdi argümanından oluşturulur. - negative_prompt_attention_mask (
torch.Tensor, isteğe bağlı) — Negatif metin gömme verileri için önceden oluşturulmuş dikkat maskesi. - 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.Imageveyanp.array. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~pipelines.stable_diffusion.IFPipelineOutputdöndürülüp döndürülmemesi. - clean_caption (
bool, isteğe bağlı, varsayılanTrue) — Gömleştirmeler oluşturulmadan önce açıklamanın temizlenip temizlenmeyeceğini belirtir. Bunun içinbeautifulsoup4veftfypaketlerinin yüklü olması gerekir. Bağımlılıklar yüklü değilse, gömleştirmeler ham istemden oluşturulur. - use_resolution_binning (
bool, varsayılanTrue) —Trueolarak ayarlanırsa, istenen yükseklik ve genişlik önceASPECT_RATIO_1024_BINkullanılarak en yakın çözümlere eşlenir. Oluşturulan latentler görüntülere çözümlendikten sonra, istenen çözünürlüğe yeniden boyutlandırılır. 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: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargs,callback_on_step_end_tensor_inputstarafından belirtilen tüm tensörlerin listesini içerir. - callback_on_step_end_tensor_inputs (
list, isteğe bağlı) —callback_on_step_endişlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler,callback_kwargsargümanı olarak geçirilir. Yalnızca pipeline sınıfınızın._callback_tensor_inputsözniteliğinde listelenen değişkenleri dahil edebilirsiniz. - max_sequence_length (
int, varsayılan 300) —promptile kullanılacak maksimum dizi uzunluğu. - complex_human_instruction (
list[str], isteğe bağlı) — Karmaşık insan dikkati için talimatlar: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55. - pag_scale (
float, isteğe bağlı, varsayılan 3.0) — Bozulmuş dikkat yönlendirmesi için ölçekleme faktörü. 0.0 olarak ayarlanırsa, bozulmuş dikkat yönlendirmesi kullanılmaz. - pag_adaptive_scale (
float, isteğe bağlı, varsayılan 0.0) — Bozulmuş dikkat yönlendirmesi için uyarlama ölçek faktörü. 0.0 olarak ayarlanırsapag_scalekullanılır.
Dönüş değeri
ImagePipelineOutput veya tuple
return_dict True ise ImagePipelineOutput döndürülür, aksi halde ilk öğesi üretilen görüntülerin listesinden oluşan bir tuple döndürülür
Üretim için pipeline çağrıldığında tetiklenen işlev.
Örnekler:
>>> import torch
>>> from diffusers import SanaPAGPipeline
>>> pipe = SanaPAGPipeline.from_pretrained(
... "Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers",
... pag_applied_layers=["transformer_blocks.8"],
... torch_dtype=torch.float32,
... )
>>> pipe.to("cuda")
>>> pipe.text_encoder.to(torch.bfloat16)
>>> pipe.transformer = pipe.transformer.to(torch.bfloat16)
>>> image = pipe(prompt='a cyberpunk cat with a neon sign that says "Sana"')[0]
>>> image[0].save("output.png")encode_prompt
< source >( prompt: str | list[str]do_classifier_free_guidance: bool = Truenegative_prompt: str = ''num_images_per_prompt: int = 1device: typing.Optional[torch.device] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneclean_caption: bool = Falsemax_sequence_length: int = 300complex_human_instruction: list[str] | None = None )
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — kodlanacak prompt - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem. Tanımlanmazsa, bunun yerinenegative_prompt_embedsdeğeri geçirilmelidir. Yönlendirme kullanılmadığında yok sayılır (yaniguidance_scale,1'den küçükse yok sayılır). PixArt-Alpha için bu değer "" olmalıdır. - do_classifier_free_guidance (
bool, isteğe bağlı, varsayılanTrue) — classifier free guidance kullanılacak mı - num_images_per_prompt (
int, isteğe bağlı, varsayılan 1) — her prompt için oluşturulacak görsel sayısı - device — (
torch.device, isteğe bağlı): Sonuç olarak elde edilen gömme vektörlerinin yerleştirileceği torch cihazı - prompt_embeds (
torch.Tensor, isteğe bağlı) — Ö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ğerleripromptgirdi argümanından oluşturulur. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Sana için, "" dizisinin gömme değerleri olmalıdır. - clean_caption (
bool, varsayılanFalse) —Trueise, fonksiyon kodlamadan önce sağlanan başlığı ön işler ve temizler. - max_sequence_length (
int, varsayılan 300) — İstem için kullanılacak maksimum dizi uzunluğu. - complex_human_instruction (
list[str], varsayılancomplex_human_instruction) —complex_human_instructionboş değilse, işlev istem için karmaşık Human talimatını kullanır.
İsteği metin kodlayıcı gizli durumlarına kodlar.
SanaPipelineOutput
sınıf diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Parametreler
Sana pipeline'ları için çıktı sınıfı.