Diffusers documentation

SanaPipeline

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

SanaPipeline

LoRA MPS

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_diffuserstorch.bfloat16
Efficient-Large-Model/Sana_1600M_1024px_diffuserstorch.float16
Efficient-Large-Model/Sana_1600M_1024px_MultiLing_diffuserstorch.float16
Efficient-Large-Model/Sana_1600M_512px_diffuserstorch.float16
Efficient-Large-Model/Sana_1600M_512px_MultiLing_diffuserstorch.float16
Efficient-Large-Model/Sana_600M_1024px_diffuserstorch.float16
Efficient-Large-Model/Sana_600M_512px_diffuserstorch.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 variant argümanını iletmenizden emin olun. Önerilen dtype'ı torch.float16 olan modeller için bunu "fp16" olarak, önerilen dtype'ı torch.bfloat16 olan modeller için ise "bf16" olarak ayarlayın. Varsayılan olarak, iki katı disk depolama alanı kullanan torch.float32 ağırlıkları indirilir. Ayrıca, dtype argümanını belirleyerek torch.float32 ağı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

< >

( tokenizer: GemmaTokenizertext_encoder: Gemma2PreTrainedModelvae: AutoencoderDCtransformer: SanaTransformer2DModelscheduler: DPMSolverMultistepScheduler )

Sana kullanarak metinden görüntüye üretim hattı.

__call__

< >

( 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 (str veya list[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine prompt_embeds geçirilmelidir.
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'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ı) — timesteps argümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel zaman adımları. set_timesteps yönteminde. Tanımlanmamışsa, num_inference_steps geçirildiğinde varsayılan davranış kullanılacaktır. Azalan sırada olmalıdır.
  • sigmas (list[float], isteğe bağlı) — set_timesteps yöntemlerinde sigmas argümanını destekleyen zamanlayıcılarla gürültü azaltma sürecinde kullanılacak özel sigmalar. Tanımlanmamışsa, num_inference_steps geç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. denklemin w'si olarak tanımlanır. Yönlendirme ölçeği, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, prompt metniyle 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.Generator veya list[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 rastgele generator kullanı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ğerleri prompt girdi 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_prompt girdi 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.Image veya np.array.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine ~pipelines.stable_diffusion.IFPipelineOutput döndürülüp döndürülmemesi.
  • attention_kwargs — Belirtilirse, diffusers.models.attention_processor içindeki self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
  • clean_caption (bool, isteğe bağlı, varsayılan True) — Gömleştirmeler oluşturulmadan önce açıklamanın temizlenip temizlenmeyeceğini belirtir. Bunun için beautifulsoup4 ve ftfy paketlerinin yüklü olması gerekir. Bağımlılıklar yüklü değilse, gömleştirmeler ham istemden oluşturulur.
  • use_resolution_binning (bool, varsayılan True) — True olarak ayarlanırsa, istenen yükseklik ve genişlik önce ASPECT_RATIO_1024_BIN kullanı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_inputs tarafından belirtilen tüm tensörlerin listesini içerir.
  • callback_on_step_end_tensor_inputs (list, isteğe bağlı) — 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 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) — prompt ile 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

< >

( 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 (str veya list[str], isteğe bağlı) — kodlanacak prompt
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem. Tanımlanmazsa, bunun yerine negative_prompt_embeds değeri geçirilmelidir. Yönlendirme kullanılmadığında yok sayılır (yani guidance_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ılan True) — 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ğerleri prompt girdi 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ılan False) — True ise, 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ılan complex_human_instruction) — complex_human_instruction boş 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

< >

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

< >

( 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 (str veya list[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine prompt_embeds geçirilmelidir.
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'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ı) — timesteps argümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel zaman adımları. set_timesteps yönteminde. Tanımlanmamışsa, num_inference_steps geçirildiğinde varsayılan davranış kullanılacaktır. Azalan sırada olmalıdır.
  • sigmas (list[float], isteğe bağlı) — set_timesteps yöntemlerinde sigmas argümanını destekleyen zamanlayıcılarla gürültü azaltma sürecinde kullanılacak özel sigmalar. Tanımlanmamışsa, num_inference_steps geç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. denklemin w'si olarak tanımlanır. Yönlendirme ölçeği, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, prompt metniyle 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.Generator veya list[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 rastgele generator kullanı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ğerleri prompt girdi 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_prompt girdi 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.Image veya np.array.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine ~pipelines.stable_diffusion.IFPipelineOutput döndürülüp döndürülmemesi.
  • clean_caption (bool, isteğe bağlı, varsayılan True) — Gömleştirmeler oluşturulmadan önce açıklamanın temizlenip temizlenmeyeceğini belirtir. Bunun için beautifulsoup4 ve ftfy paketlerinin yüklü olması gerekir. Bağımlılıklar yüklü değilse, gömleştirmeler ham istemden oluşturulur.
  • use_resolution_binning (bool, varsayılan True) — True olarak ayarlanırsa, istenen yükseklik ve genişlik önce ASPECT_RATIO_1024_BIN kullanı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_inputs tarafından belirtilen tüm tensörlerin listesini içerir.
  • callback_on_step_end_tensor_inputs (list, isteğe bağlı) — 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 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) — prompt ile 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ırsa pag_scale kullanı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

< >

( 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 (str veya list[str], isteğe bağlı) — kodlanacak prompt
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem. Tanımlanmazsa, bunun yerine negative_prompt_embeds değeri geçirilmelidir. Yönlendirme kullanılmadığında yok sayılır (yani guidance_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ılan True) — 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ğerleri prompt girdi 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ılan False) — True ise, 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ılan complex_human_instruction) — complex_human_instruction boş 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

< >

( 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.

Sana pipeline'ları için çıktı sınıfı.

Update on GitHub