Diffusers documentation
SANA-Sprint
SANA-Sprint
SANA-Sprint: One-Step Diffusion with Continuous-Time Consistency Distillation dari NVIDIA, MIT HAN Lab, dan Hugging Face oleh Junsong Chen, Shuchen Xue, Yuyang Zhao, Jincheng Yu, Sayak Paul, Junyu Chen, Han Cai, Enze Xie, Song Han
Abstrak dari makalah tersebut adalah:
Paper ini memperkenalkan SANA-Sprint, sebuah model difusi yang efisien untuk generasi teks-ke-gambar (T2I) ultra-cepat. SANA-Sprint dibangun di atas model fondasi yang telah dilatih sebelumnya dan ditingkatkan dengan distilasi hibrida, yang secara drastis mengurangi langkah inferensi dari 20 menjadi 1-4. Kami memperkenalkan tiga inovasi utama: (1) Kami mengusulkan pendekatan tanpa pelatihan (training-free) yang mengubah model flow-matching yang telah dilatih sebelumnya untuk distilasi konsistensi waktu-continuous (sCM), menghilangkan biaya pelatihan dari awal dan mencapai efisiensi pelatihan yang tinggi. Strategi distilasi hibrida kami menggabungkan sCM dengan distilasi adversarial laten (LADD): sCM memastikan keselarasan dengan model guru, sementara LADD meningkatkan fidelitas generasi satu langkah. (2) SANA-Sprint adalah model adaptif-langkah terpadu yang mencapai generasi berkualitas tinggi dalam 1-4 langkah, menghilangkan pelatihan spesifik-langkah dan meningkatkan efisiensi. (3) Kami mengintegrasikan ControlNet dengan SANA-Sprint untuk generasi gambar interaktif real-time, memungkinkan umpan balik visual instan untuk interaksi pengguna. SANA-Sprint menetapkan frontier Pareto baru dalam tradeoff kecepatan-kualitas, mencapai kinerja state-of-the-art dengan 7.59 FID dan 0.74 GenEval hanya dalam 1 langkah — melampaui FLUX-schnell (7.94 FID / 0.71 GenEval) sekaligus 10× lebih cepat (0,1s vs 1,1s pada H100). Model ini juga mencapai latensi 0,1s (T2I) dan 0,25s (ControlNet) untuk gambar 1024×1024 pada H100, serta 0,31s (T2I) pada RTX 4090, menunjukkan efisiensi luar biasa dan potensinya untuk aplikasi konsumen yang didukung AI (AIPC). Kode dan model yang telah dilatih sebelumnya akan diopen-source.
Pipeline ini disumbangkan oleh lawrence-cj, shuchen Xue dan Enze Xie. Basis kode asli dapat ditemukan di sini. Bobot asli dapat ditemukan di bawah hf.co/Efficient-Large-Model.
Model yang tersedia:
| Model | dtype yang direkomendasikan |
|---|---|
Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers | torch.bfloat16 |
Efficient-Large-Model/Sana_Sprint_0.6B_1024px_diffusers | torch.bfloat16 |
Lihat koleksi ini untuk informasi lebih lanjut.
Catatan: dtype yang direkomendasikan tersebut adalah untuk bobot transformer. Encoder teks harus tetap dalam torch.bfloat16 dan bobot VAE harus tetap dalam torch.bfloat16 atau torch.float32 agar model dapat berfungsi dengan benar. Silakan lihat contoh inferensi di bawah untuk melihat cara memuat model dengan dtype yang direkomendasikan.
Kuantisasi
Quantization membantu mengurangi kebutuhan memori untuk model yang sangat besar dengan menyimpan bobot model dalam tipe data presisi yang lebih rendah. Namun, quantization dapat memiliki dampak yang bervariasi terhadap kualitas video tergantung pada model video yang digunakan.
Lihat ringkasan Kuantisasi untuk mempelajari lebih lanjut tentang backend kuantisasi yang didukung dan memilih backend kuantisasi yang mendukung kasus penggunaan Anda. Contoh di bawah ini menunjukkan cara memuat SanaSprintPipeline yang dikuantisasi untuk inferensi dengan bitsandbytes.
import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, SanaTransformer2DModel, SanaSprintPipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, AutoModel
quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = AutoModel.from_pretrained(
"Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers",
subfolder="text_encoder",
quantization_config=quant_config,
dtype=torch.bfloat16,
)
quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = SanaTransformer2DModel.from_pretrained(
"Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers",
subfolder="transformer",
quantization_config=quant_config,
dtype=torch.bfloat16,
)
pipeline = SanaSprintPipeline.from_pretrained(
"Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers",
text_encoder=text_encoder_8bit,
transformer=transformer_8bit,
dtype=torch.bfloat16,
device_map="balanced",
)
prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt).images[0]
image.save("sana.png")Mengatur max_timesteps
Pengguna dapat menyesuaikan nilai max_timesteps untuk bereksperimen dengan kualitas visual dari output yang dihasilkan. Nilai max_timesteps default diperoleh melalui proses pencarian pada saat inferensi. Untuk detail lebih lanjut, lihat makalahnya.
Gambar ke Gambar
SanaSprintImg2ImgPipeline adalah pipeline untuk generasi gambar-ke-gambar. Pipeline ini menerima gambar input dan prompt, lalu menghasilkan gambar baru berdasarkan gambar input dan prompt tersebut.
import torch
from diffusers import SanaSprintImg2ImgPipeline
from diffusers.utils.loading_utils import load_image
image = load_image(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png"
)
pipe = SanaSprintImg2ImgPipeline.from_pretrained(
"Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers",
dtype=torch.bfloat16)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = pipe(
prompt="a cute pink bear",
image=image,
strength=0.5,
height=832,
width=480
).images[0]
image.save("output.png")SanaSprintPipeline
kelas diffusers.SanaSprintPipeline
< source >( tokenizer: GemmaTokenizertext_encoder: Gemma2PreTrainedModelvae: AutoencoderDCtransformer: SanaTransformer2DModelscheduler: DPMSolverMultistepScheduler )
Pipeline untuk generasi teks-ke-gambar menggunakan SANA-Sprint.
__call__
< source >( prompt: str | list[str] = Nonenum_inference_steps: int = 2timesteps: list = Nonemax_timesteps: float = 1.5708intermediate_timesteps: float = 1.3guidance_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] = 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
Parameter
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - num_inference_steps (
int, opsional, default 20) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. - max_timesteps (
float, opsional, default 1.57080) — Nilai timestep maksimum yang digunakan dalam penjadwal SCM. - intermediate_timesteps (
float, opsional, default 1.3) — Nilai timestep antara yang digunakan dalam penjadwal SCM (hanya digunakan ketika num_inference_steps=2). - timesteps (
list[int], opsional) — Timesteps kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumentimestepsdi metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsdilewatkan akan digunakan. Harus dalam urutan menurun. - guidance_scale (
float, opsional, bernilai default 4,5) — Skala panduan tertanam diaktifkan dengan mengaturguidance_scale> 1. Nilaiguidance_scaleyang lebih tinggi mendorong model untuk menghasilkan gambar yang lebih selaras denganpromptdengan mengorbankan kualitas gambar yang lebih rendah.Model yang telah melalui distilasi panduan (guidance-distilled) mengaproksimasi true classifer-free guidance untuk
guidance_scale> 1. Lihat makalah untuk mempelajari lebih lanjut. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - height (
int, opsional, defaultnya self.unet.config.sample_size) — Tinggi gambar yang dihasilkan dalam piksel. - width (
int, opsional, defaultnya self.unet.config.sample_size) — Lebar gambar yang dihasilkan dalam piksel. - eta (
float, opsional, default 0.0) — Bersesuaian dengan parameter eta (η) dalam paper DDIM: https://huggingface.co/papers/2010.02502. Hanya berlaku untuk schedulers.DDIMScheduler, akan diabaikan untuk yang lain. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya, diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - prompt_attention_mask (
torch.Tensor, opsional) — Mask attention yang telah dibuat sebelumnya untuk embedding teks. - output_type (
str, opsional, defaultnya"pil") — Format output dari generate image. Pilih antara PIL:PIL.Image.Imageataunp.array. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan~pipelines.stable_diffusion.IFPipelineOutputalih-alih tuple biasa. - attention_kwargs —
Kamus kwargs yang jika ditentukan akan diteruskan ke
AttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor. - clean_caption (
bool, opsional, defaultTrue) — Apakah caption akan dibersihkan sebelum membuat embeddings. Memerlukanbeautifulsoup4danftfyuntuk diinstal. Jika dependensi tidak diinstal, embeddings akan dibuat dari prompt mentah. - use_resolution_binning (
booldefaultnyaTrue) — Jika diset keTrue, tinggi dan lebar yang diminta pertama kali dipetakan ke resolusi terdekat menggunakanASPECT_RATIO_1024_BIN. Setelah latents yang dihasilkan didekode menjadi gambar, ukuran gambar dikembalikan ke resolusi yang diminta. Berguna untuk menghasilkan gambar yang tidak persegi. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda. - max_sequence_length (
intdefaultnya300) — Panjang maksimum urutan yang digunakan denganprompt. - complex_human_instruction (
list[str], opsional) — Instruksi untuk perhatian manusia yang kompleks: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55.
Mengembalikan
SanaPipelineOutput atau tuple
Jika return_dict adalah True, SanaPipelineOutput dikembalikan,
sebaliknya sebuah tuple dikembalikan di mana elemen pertama adalah daftar dengan gambar yang dihasilkan
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import SanaSprintPipeline
>>> pipe = SanaSprintPipeline.from_pretrained(
... "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> image = pipe(prompt="a tiny astronaut hatching from an egg on the moon")[0]
>>> image[0].save("output.png")encode_prompt
< source >( prompt: str | list[str]num_images_per_prompt: int = 1device: typing.Optional[torch.device] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Noneclean_caption: bool = Falsemax_sequence_length: int = 300complex_human_instruction: list[str] | None = Nonelora_scale: float | None = None )
Parameter
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - num_images_per_prompt (
int, opsional, default 1) — jumlah gambar yang harus dihasilkan per prompt - device — (
torch.device, opsional): perangkat torch untuk menempatkan embedding hasil - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - clean_caption (
bool, defaultnyaFalse) — JikaTrue, fungsi akan memproses pra dan membersihkan caption yang diberikan sebelum encoding. - max_sequence_length (
int, defaultnya 300) — Panjang maksimum urutan yang digunakan untuk prompt. - complex_human_instruction (
list[str], defaultnyacomplex_human_instruction) — Jikacomplex_human_instructiontidak kosong, fungsi akan menggunakan instruksi Human yang kompleks untuk prompt.
Mengkodekan prompt menjadi hidden states dari text encoder.
SanaSprintImg2ImgPipeline
kelas diffusers.SanaSprintImg2ImgPipeline
< source >( tokenizer: GemmaTokenizertext_encoder: Gemma2PreTrainedModelvae: AutoencoderDCtransformer: SanaTransformer2DModelscheduler: DPMSolverMultistepScheduler )
Pipeline untuk generasi teks-ke-gambar menggunakan SANA-Sprint.
__call__
< source >( prompt: str | list[str] = Nonenum_inference_steps: int = 2timesteps: list = Nonemax_timesteps: float = 1.5708intermediate_timesteps: float = 1.3guidance_scale: float = 4.5image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.6num_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] = 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
Parameter
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - num_inference_steps (
int, opsional, default 20) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. - max_timesteps (
float, opsional, default 1.57080) — Nilai timestep maksimum yang digunakan dalam penjadwal SCM. - intermediate_timesteps (
float, opsional, default 1.3) — Nilai timestep antara yang digunakan dalam penjadwal SCM (hanya digunakan ketika num_inference_steps=2). - timesteps (
list[int], opsional) — Timesteps kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumentimestepsdi metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsdilewatkan akan digunakan. Harus dalam urutan menurun. - guidance_scale (
float, opsional, default 4.5) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance.guidance_scaledidefinisikan sebagaiwdari persamaan 2. pada Imagen Paper. Skala panduan diaktifkan dengan mengaturguidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait denganpromptteks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image], ataulist[np.ndarray]) —Image, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Dapat juga menerima latents gambar sebagaiimage, tetapi jika latents diberikan secara langsung, ia tidak akan di-encode ulang. - strength (
float, opsional, default 0.6) — Menunjukkan sejauh manaimagereferensi akan ditransformasi. Nilainya harus antara 0 dan 1.imagedigunakan sebagai titik awal dan semakin tinggistrength, semakin banyak noise yang ditambahkan. Jumlah langkah denoising bergantung pada jumlah noise yang awalnya ditambahkan. Ketikastrengthbernilai 1, noise yang ditambahkan maksimal dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalamnum_inference_steps. Nilai 1 pada dasarnya mengabaikanimage. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - height (
int, opsional, defaultnya self.unet.config.sample_size) — Tinggi gambar yang dihasilkan dalam piksel. - width (
int, opsional, defaultnya self.unet.config.sample_size) — Lebar gambar yang dihasilkan dalam piksel. - eta (
float, opsional, default 0.0) — Bersesuaian dengan parameter eta (η) dalam paper DDIM: https://arxiv.org/abs/2010.02502. Hanya berlaku untuk schedulers.DDIMScheduler, akan diabaikan untuk yang lain. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya, diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - prompt_attention_mask (
torch.Tensor, opsional) — Mask attention yang telah dibuat sebelumnya untuk embedding teks. - output_type (
str, opsional, defaultnya"pil") — Format output dari generate image. Pilih antara PIL:PIL.Image.Imageataunp.array. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan~pipelines.stable_diffusion.IFPipelineOutputalih-alih tuple biasa. - attention_kwargs —
Kamus kwargs yang jika ditentukan akan diteruskan ke
AttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor. - clean_caption (
bool, opsional, defaultTrue) — Apakah caption akan dibersihkan sebelum membuat embeddings. Memerlukanbeautifulsoup4danftfyuntuk diinstal. Jika dependensi tidak diinstal, embeddings akan dibuat dari prompt mentah. - use_resolution_binning (
booldefaultnyaTrue) — Jika diset keTrue, tinggi dan lebar yang diminta pertama kali dipetakan ke resolusi terdekat menggunakanASPECT_RATIO_1024_BIN. Setelah latents yang dihasilkan didekode menjadi gambar, ukuran gambar dikembalikan ke resolusi yang diminta. Berguna untuk menghasilkan gambar yang tidak persegi. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda. - max_sequence_length (
intdefaultnya300) — Panjang maksimum urutan yang digunakan denganprompt. - complex_human_instruction (
list[str], opsional) — Instruksi untuk perhatian manusia yang kompleks: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55.
Mengembalikan
SanaPipelineOutput atau tuple
Jika return_dict adalah True, SanaPipelineOutput dikembalikan,
sebaliknya sebuah tuple dikembalikan di mana elemen pertama adalah daftar dengan gambar yang dihasilkan
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import SanaSprintImg2ImgPipeline
>>> from diffusers.utils.loading_utils import load_image
>>> pipe = SanaSprintImg2ImgPipeline.from_pretrained(
... "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png"
... )
>>> image = pipe(prompt="a cute pink bear", image=image, strength=0.5, height=832, width=480).images[0]
>>> image[0].save("output.png")encode_prompt
< source >( prompt: str | list[str]num_images_per_prompt: int = 1device: typing.Optional[torch.device] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Noneclean_caption: bool = Falsemax_sequence_length: int = 300complex_human_instruction: list[str] | None = Nonelora_scale: float | None = None )
Parameter
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - num_images_per_prompt (
int, opsional, default 1) — jumlah gambar yang harus dihasilkan per prompt - device — (
torch.device, opsional): perangkat torch untuk menempatkan embedding hasil - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - clean_caption (
bool, defaultnyaFalse) — JikaTrue, fungsi akan memproses pra dan membersihkan caption yang diberikan sebelum encoding. - max_sequence_length (
int, defaultnya 300) — Panjang maksimum urutan yang digunakan untuk prompt. - complex_human_instruction (
list[str], defaultnyacomplex_human_instruction) — Jikacomplex_human_instructiontidak kosong, fungsi akan menggunakan instruksi Human yang kompleks untuk prompt.
Mengkodekan prompt menjadi hidden states dari text encoder.
SanaPipelineOutput
kelas diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Kelas output untuk pipeline Sana.