# Stable Cascade

Model ini dibangun di atas arsitektur [Würstchen](https://openreview.net/forum?id=gU58d5QeGv) dan perbedaan utamanya dengan model lain seperti Stable Diffusion adalah bahwa model ini bekerja di ruang laten yang jauh lebih kecil. Mengapa ini penting? Semakin kecil ruang latennya, semakin **cepat** Anda dapat menjalankan inferensi dan semakin **murah** biaya pelatihannya. Sekecil apa ruang latennya? Stable Diffusion menggunakan faktor kompresi 8, sehingga gambar 1024x1024 dienkod menjadi 128x128. Stable Cascade mencapai faktor kompresi 42, yang berarti dimungkinkan untuk mengenkod gambar 1024x1024 menjadi 24x24, sambil tetap mempertahankan rekonstruksi yang tajam. Model bersyarat teks kemudian dilatih di ruang laten yang sangat terkompresi tersebut. Versi sebelumnya dari arsitektur ini mencapai pengurangan biaya 16x dibandingkan Stable Diffusion 1.5.

Oleh karena itu, jenis model ini sangat cocok untuk penggunaan di mana efisiensi menjadi penting. Selain itu, semua ekstensi yang dikenal seperti finetuning, LoRA, ControlNet, IP-Adapter, LCM, dan lain-lain juga dapat dilakukan dengan metode ini.

Kodebase asli dapat ditemukan di [Stability-AI/StableCascade](https://github.com/Stability-AI/StableCascade).

## Ringkasan Model
Stable Cascade terdiri dari tiga model: Stage A, Stage B, dan Stage C, yang mewakili kaskade untuk menghasilkan gambar, sehingga dinamakan "Stable Cascade".

Stage A & B digunakan untuk mengompresi gambar, mirip dengan peran VAE dalam Stable Diffusion. Namun, dengan konfigurasi ini, kompresi gambar yang jauh lebih tinggi dapat dicapai. Sementara model Stable Diffusion menggunakan faktor kompresi spasial 8, yang mengenkod gambar dengan resolusi 1024 x 1024 menjadi 128 x 128, Stable Cascade mencapai faktor kompresi 42. Ini mengenkod gambar 1024 x 1024 menjadi 24 x 24, sambil tetap mampu mendekod gambar secara akurat. Hal ini membawa manfaat besar berupa biaya pelatihan dan inferensi yang lebih murah. Selain itu, Stage C bertanggung jawab untuk menghasilkan latents kecil 24 x 24 berdasarkan prompt teks.

Model Stage C beroperasi pada latents kecil 24 x 24 dan melakukan denoising pada latents yang dikondisikan oleh prompt teks. Model ini juga merupakan komponen terbesar dalam pipeline Cascade dan dimaksudkan untuk digunakan dengan `StableCascadePriorPipeline`

Model Stage B dan Stage A digunakan dengan `StableCascadeDecoderPipeline` dan bertanggung jawab untuk menghasilkan gambar akhir berdasarkan latents kecil berukuran 24 x 24.

> [!WARNING]
> Terdapat beberapa batasan pada tipe data yang dapat digunakan dengan model Stable Cascade. Checkpoint resmi untuk `StableCascadePriorPipeline` tidak mendukung tipe data `torch.float16`. Silakan gunakan `torch.bfloat16` sebagai gantinya.
>
> Untuk menggunakan tipe data `torch.bfloat16` dengan `StableCascadeDecoderPipeline`, Anda perlu menginstal PyTorch 2.2.0 atau lebih tinggi. Ini juga berarti bahwa penggunaan `StableCascadeCombinedPipeline` dengan `torch.bfloat16` memerlukan PyTorch 2.2.0 atau lebih tinggi, karena pipeline ini memanggil `StableCascadeDecoderPipeline` secara internal.
>
> Jika tidak memungkinkan untuk menginstal PyTorch 2.2.0 atau lebih tinggi di lingkungan Anda, `StableCascadeDecoderPipeline` dapat digunakan secara mandiri dengan tipe data `torch.float16`. Anda dapat mengunduh bobot varian presisi penuh atau `bf16` untuk pipeline tersebut dan mengubah bobot menjadi `torch.float16`.

## Contoh penggunaan

```python
import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", dtype=torch.float16)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings.to(torch.float16),
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")
```

## Menggunakan Versi Lite dari model Stage B dan Stage C

```python
import torch
from diffusers import (
    StableCascadeDecoderPipeline,
    StableCascadePriorPipeline,
    StableCascadeUNet,
)

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings,
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")
```

## Memuat checkpoint asli dengan `from_single_file`

Memuat checkpoint dalam format asli didukung melalui metode `from_single_file` di StableCascadeUNet.

```python
import torch
from diffusers import (
    StableCascadeDecoderPipeline,
    StableCascadePriorPipeline,
    StableCascadeUNet,
)

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior_unet = StableCascadeUNet.from_single_file(
    "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
    dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
    "https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
    dtype=torch.bfloat16
)

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, dtype=torch.bfloat16)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings,
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")
```

## Penggunaan

### Penggunaan Langsung

Model ini saat ini ditujukan untuk keperluan penelitian. Area dan tugas penelitian yang mungkin termasuk

- Penelitian tentang model generatif.
- Penyelenggaraan model secara aman yang berpotensi menghasilkan konten berbahaya.
- Mengeksplorasi dan memahami keterbatasan serta bias dari model generatif.
- Pembuatan karya seni dan penggunaannya dalam desain serta proses artistik lainnya.
- Aplikasi dalam alat pendidikan atau kreatif.

Penggunaan yang dikecualikan dijelaskan di bawah ini.

### Penggunaan di Luar Cakupan

Model ini tidak dilatih untuk menghasilkan representasi yang faktual atau benar tentang orang atau peristiwa, sehingga penggunaan model untuk menghasilkan konten semacam itu berada di luar cakupan kemampuan model ini. Model ini tidak boleh digunakan dengan cara apa pun yang melanggar [Kebijakan Penggunaan yang Dapat Diterima](https://stability.ai/use-policy) Stability AI.

## Keterbatasan dan Bias

### Keterbatasan
- Wajah dan manusia secara umum mungkin tidak dihasilkan dengan benar.
- Bagian autoencoding dari model bersifat lossy.

## StableCascadeCombinedPipeline[[diffusers.StableCascadeCombinedPipeline]]

#### diffusers.StableCascadeCombinedPipeline[[diffusers.StableCascadeCombinedPipeline]]

```python
diffusers.StableCascadeCombinedPipeline(tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, decoder: StableCascadeUNet, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, prior_prior: StableCascadeUNet, prior_text_encoder: CLIPTextModelWithProjection, prior_tokenizer: CLIPTokenizer, prior_scheduler: DDPMWuerstchenScheduler, prior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, prior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py#L46)

**Parameter:**

tokenizer (`CLIPTokenizer`) : tokenizer decoder yang akan digunakan untuk input teks.

text_encoder (`CLIPTextModelWithProjection`) : Dekoder pengkode teks yang akan digunakan untuk input teks.

decoder (`StableCascadeUNet`) : Model decoder yang akan digunakan untuk pipeline generasi gambar decoder.

scheduler (`DDPMWuerstchenScheduler`) : Penjadwal yang akan digunakan untuk pipeline generasi gambar decoder.

vqgan (`PaellaVQModel`) : Model VQGAN yang akan digunakan untuk pipeline generasi gambar decoder.

prior_prior (`StableCascadeUNet`) : Model prior yang akan digunakan untuk pipeline prior.

prior_text_encoder (`CLIPTextModelWithProjection`) : encoder teks sebelumnya yang akan digunakan untuk input teks.

prior_tokenizer (`CLIPTokenizer`) : tokenizer sebelumnya yang akan digunakan untuk input teks.

prior_scheduler (`DDPMWuerstchenScheduler`) : Penjadwal yang akan digunakan untuk pipeline prior.

prior_feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPImageProcessor)) : Model yang mengekstrak fitur dari gambar yang dihasilkan untuk digunakan sebagai input bagi `image_encoder`.

prior_image_encoder (`CLIPVisionModelWithProjection`) : Encoder gambar CLIP beku ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)).

Pipeline gabungan untuk generasi teks-ke-gambar menggunakan Stable Cascade.

Model ini mewarisi dari [DiffusionPipeline](/docs/diffusers/v0.43.0/id/api/pipelines/overview#diffusers.DiffusionPipeline). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua pipeline (seperti mengunduh atau menyimpan, menjalankan pada perangkat tertentu, dll.)

#### __call__[[diffusers.StableCascadeCombinedPipeline.__call__]]

```python
__call__(prompt: str | list[str] | None = None, images: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = None, height: int = 512, width: int = 512, prior_num_inference_steps: int = 60, prior_guidance_scale: float = 4.0, num_inference_steps: int = 12, decoder_guidance_scale: float = 0.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, prior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, prior_callback_on_step_end_tensor_inputs: list[str] = ['latents'], callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py#L159)

**Parameter:**

prompt (`str` atau `list[str]`) : Prompt atau prompt-prompt untuk memandu generasi gambar untuk prior dan decoder.

images (`torch.Tensor`, `PIL.Image.Image`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, *opsional*) : Gambar-gambar untuk memandu generasi gambar bagi prior.

negative_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Diabaikan saat tidak menggunakan panduan (yaitu, diabaikan jika `guidance_scale` kurang dari `1`).

prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks yang telah dibuat sebelumnya untuk prior. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input `prompt`.

prompt_embeds_pooled (`torch.Tensor`, *opsional*) : Embedding teks yang telah dibuat sebelumnya untuk prior. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input `prompt`.

negative_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang telah dibuat sebelumnya untuk prior. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input `negative_prompt`.

negative_prompt_embeds_pooled (`torch.Tensor`, *opsional*) : Embedding teks negatif yang telah dibuat sebelumnya untuk prior. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input `negative_prompt`.

num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt.

height (`int`, *opsional*, default 512) : Tinggi gambar yang dihasilkan dalam piksel.

width (`int`, *opsional*, defaultnya 512) : Lebar gambar yang dihasilkan dalam piksel.

prior_guidance_scale (`float`, *opsional*, default 4.0) : Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `prior_guidance_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Skala panduan diaktifkan dengan mengatur `prior_guidance_scale > 1`. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah.

prior_num_inference_steps (`int | dict[float, int]`, *opsional*, defaultnya 60) : Jumlah langkah denoising sebelumnya. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. Untuk penjadwalan timestep yang lebih spesifik, Anda dapat meneruskan `prior_timesteps` yang dikustomisasi

num_inference_steps (`int`, *opsional*, default 12) : Jumlah langkah denoising decoder. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. Untuk penjadwalan timestep yang lebih spesifik, Anda dapat meneruskan `timesteps` yang dikustomisasi

decoder_guidance_scale (`float`, *opsional*, default 0.0) : Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Skala panduan diaktifkan dengan mengatur `guidance_scale > 1`. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah.

generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) untuk membuat proses generasi menjadi deterministik.

latents (`torch.Tensor`, *opsional*) : Laten 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 laten akan dibuat dengan pengambilan sampel menggunakan `generator` acak yang diberikan.

output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari generate image. Pilih antara: `"pil"` (`PIL.Image.Image`), `"np"` (`np.array`) atau `"pt"` (`torch.Tensor`).

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [ImagePipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) alih-alih tuple biasa.

prior_callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`.

prior_callback_on_step_end_tensor_inputs (`list`, *opsional*) : Daftar input tensor untuk fungsi `prior_callback_on_step_end`. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen `callback_kwargs`. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut `._callback_tensor_inputs` dari kelas pipeline Anda.

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_kwargs` akan berisi daftar semua tensor sesuai yang ditentukan oleh `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opsional*) : Daftar input tensor untuk fungsi `callback_on_step_end`. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen `callback_kwargs`. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut `._callback_tensor_inputs` dari kelas pipeline Anda.

**Mengembalikan:**

[ImagePipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) atau `tuple` [ImagePipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) jika `return_dict` bernilai True, selain itu berupa `tuple`. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.

Fungsi yang dipanggil saat memanggil pipeline untuk generasi.

Contoh:
```py
>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline

>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
...     "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)
```

#### enable_model_cpu_offload[[diffusers.StableCascadeCombinedPipeline.enable_model_cpu_offload]]

```python
enable_model_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py#L131)

Me-offload semua model ke CPU menggunakan accelerate, mengurangi penggunaan memori dengan dampak kecil pada kinerja. Dibandingkan dengan `enable_sequential_cpu_offload`, metode ini memindahkan satu model utuh ke GPU pada saat metode `forward` model tersebut dipanggil, dan model tetap berada di GPU hingga model berikutnya dijalankan. Penghematan memori lebih rendah dibandingkan dengan `enable_sequential_cpu_offload`, tetapi kinerjanya jauh lebih baik karena eksekusi iteratif dari `unet`.

#### enable_sequential_cpu_offload[[diffusers.StableCascadeCombinedPipeline.enable_sequential_cpu_offload]]

```python
enable_sequential_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py#L141)

Membongkar semua model (`unet`, `text_encoder`, `vae`, dan state dicts `safety checker`) ke CPU menggunakan 🤗 Accelerate, sehingga penggunaan memori berkurang secara signifikan. Model dipindahkan ke `torch.device('meta')` dan dimuat ke GPU hanya ketika metode `forward` dari submodul spesifiknya dipanggil. Pembongkaran terjadi berdasarkan submodul. Penghematan memori lebih tinggi daripada menggunakan `enable_model_cpu_offload`, tetapi performanya lebih rendah.

## StableCascadePriorPipeline[[diffusers.StableCascadePriorPipeline]]

#### diffusers.StableCascadePriorPipeline[[diffusers.StableCascadePriorPipeline]]

```python
diffusers.StableCascadePriorPipeline(tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, prior: StableCascadeUNet, scheduler: DDPMWuerstchenScheduler, resolution_multiple: float = 42.67, feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py#L80)

**Parameter:**

prior (`StableCascadeUNet`) : Stable Cascade prior untuk memperkirakan embedding gambar dari embedding teks dan/atau gambar.

text_encoder (`CLIPTextModelWithProjection`) : Text-encoder beku ([laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k)).

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPImageProcessor)) : Model yang mengekstrak fitur dari gambar yang dihasilkan untuk digunakan sebagai input bagi `image_encoder`.

image_encoder (`CLIPVisionModelWithProjection`) : Encoder gambar CLIP beku ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)).

tokenizer (`CLIPTokenizer`) : Tokenizer dari kelas [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

scheduler (`DDPMWuerstchenScheduler`) : Penjadwal yang digunakan bersama `prior` untuk menghasilkan embedding gambar.

resolution_multiple ('float', *opsional*, default 42.67) : Resolusi default untuk beberapa gambar yang dihasilkan.

Pipeline untuk menghasilkan prior gambar untuk Stable Cascade.

Model ini mewarisi dari [DiffusionPipeline](/docs/diffusers/v0.43.0/id/api/pipelines/overview#diffusers.DiffusionPipeline). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua pipeline (seperti mengunduh atau menyimpan, menjalankan pada perangkat tertentu, dll.)

#### __call__[[diffusers.StableCascadePriorPipeline.__call__]]

```python
__call__(prompt: str | list[str] | None = None, images: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = None, height: int = 1024, width: int = 1024, num_inference_steps: int = 20, timesteps: list[float] = None, guidance_scale: float = 4.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, image_embeds: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pt', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py#L375)

**Parameter:**

prompt (`str` atau `list[str]`) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar.

images (`torch.Tensor`, `PIL.Image.Image`, `list[torch.Tensor]` atau `list[PIL.Image.Image]`, *opsional*) : Gambar referensi yang digunakan untuk mengondisikan generasi prior. Ketika diberikan, embedding gambar diturunkan dari gambar tersebut dan digabungkan dengan prompt teks.

height (`int`, *opsional*, default 1024) : Tinggi gambar yang dihasilkan dalam piksel.

width (`int`, *opsional*, default 1024) : Lebar gambar yang dihasilkan dalam piksel.

num_inference_steps (`int`, *opsional*, defaultnya 60) : Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.

timesteps (`list[float]`, *opsional*) : Timesteps kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumen `timesteps` di metode `set_timesteps` mereka. Jika tidak didefinisikan, perilaku default saat `num_inference_steps` diteruskan akan digunakan. Harus dalam urutan menurun.

guidance_scale (`float`, *opsional*, default 8.0) : Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `decoder_guidance_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Skala panduan diaktifkan dengan mengatur `decoder_guidance_scale > 1`. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah.

negative_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak boleh memandu generasi gambar. Diabaikan saat tidak menggunakan panduan (yaitu, diabaikan jika `decoder_guidance_scale` kurang dari `1`).

prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input `prompt`.

prompt_embeds_pooled (`torch.Tensor`, *opsional*) : Pooled text embeddings yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* pembobotan prompt. Jika tidak disediakan, pooled text embeddings akan dihasilkan dari argumen input `prompt`.

negative_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input `negative_prompt`.

negative_prompt_embeds_pooled (`torch.Tensor`, *opsional*) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds_pooled akan dihasilkan dari argumen input `negative_prompt`.

image_embeds (`torch.Tensor`, *opsional*) : Embedding gambar yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input gambar, *misalnya* penimbangan prompt. Jika tidak disediakan, embedding gambar akan dihasilkan dari argumen input `image` jika ada.

num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt.

generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) untuk membuat proses generasi menjadi deterministik.

latents (`torch.Tensor`, *opsional*) : Laten 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 laten akan dibuat dengan pengambilan sampel menggunakan `generator` acak yang diberikan.

output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari generate image. Pilih antara: `"pil"` (`PIL.Image.Image`), `"np"` (`np.array`) atau `"pt"` (`torch.Tensor`).

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [ImagePipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) alih-alih tuple biasa.

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_kwargs` akan berisi daftar semua tensor sesuai yang ditentukan oleh `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opsional*) : Daftar input tensor untuk fungsi `callback_on_step_end`. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen `callback_kwargs`. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut `._callback_tensor_inputs` dari kelas pipeline Anda.

**Mengembalikan:**

`StableCascadePriorPipelineOutput` atau `tuple` `StableCascadePriorPipelineOutput` jika `return_dict` bernilai True, selain itu berupa `tuple`. Saat mengembalikan tuple, elemen pertama adalah daftar berisi embedding gambar yang dihasilkan.

Fungsi yang dipanggil saat memanggil pipeline untuk generasi.

Contoh:
```py
>>> import torch
>>> from diffusers import StableCascadePriorPipeline

>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
...     "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
```

## StableCascadePriorPipelineOutput[[diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput]]

#### diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput[[diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput]]

```python
diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput(image_embeddings: typing.Union[torch.Tensor, numpy.ndarray], prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray], prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray], negative_prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray], negative_prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray])
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py#L60)

**Parameter:**

image_embeddings (`torch.Tensor` atau `np.ndarray`) : Embedding gambar sebelumnya untuk prompt teks

prompt_embeds (`torch.Tensor`) : Embedding teks untuk prompt.

negative_prompt_embeds (`torch.Tensor`) : Embedding teks untuk prompt negatif.

Kelas output untuk WuerstchenPriorPipeline.

## StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]]

#### diffusers.StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]]

```python
diffusers.StableCascadeDecoderPipeline(decoder: StableCascadeUNet, tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, latent_dim_scale: float = 10.67)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py#L60)

**Parameter:**

tokenizer (`CLIPTokenizer`) : Tokenizer CLIP.

text_encoder (`CLIPTextModelWithProjection`) : Pengkode teks CLIP.

decoder (`StableCascadeUNet`) : unet decoder Stable Cascade.

vqgan (`PaellaVQModel`) : Model VQGAN.

scheduler (`DDPMWuerstchenScheduler`) : Penjadwal yang digunakan bersama `prior` untuk menghasilkan embedding gambar.

latent_dim_scale (float, `optional`, default 10.67) : Pengali untuk menentukan ukuran ruang laten VQ dari embedding gambar. Jika embedding gambar memiliki tinggi=24 dan lebar=24, bentuk laten VQ harus tinggi=int(24*10.67)=256 dan lebar=int(24*10.67)=256 agar sesuai dengan kondisi pelatihan.

Pipeline untuk menghasilkan gambar dari model Stable Cascade.

Model ini mewarisi dari [DiffusionPipeline](/docs/diffusers/v0.43.0/id/api/pipelines/overview#diffusers.DiffusionPipeline). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua pipeline (seperti mengunduh atau menyimpan, menjalankan pada perangkat tertentu, dll.)

#### __call__[[diffusers.StableCascadeDecoderPipeline.__call__]]

```python
__call__(image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]], prompt: str | list[str] = None, num_inference_steps: int = 10, guidance_scale: float = 0.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py#L306)

**Parameter:**

image_embeddings (`torch.Tensor` atau `list[torch.Tensor]`) : Image Embeddings yang diekstrak dari gambar atau dihasilkan oleh Prior Model.

prompt (`str` atau `list[str]`) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar.

num_inference_steps (`int`, *opsional*, default 12) : Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.

guidance_scale (`float`, *opsional*, default 0.0) : Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `decoder_guidance_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Skala panduan diaktifkan dengan mengatur `decoder_guidance_scale > 1`. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah.

negative_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak boleh memandu generasi gambar. Diabaikan saat tidak menggunakan panduan (yaitu, diabaikan jika `decoder_guidance_scale` kurang dari `1`).

prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input `prompt`.

prompt_embeds_pooled (`torch.Tensor`, *opsional*) : Pooled text embeddings yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* pembobotan prompt. Jika tidak disediakan, pooled text embeddings akan dihasilkan dari argumen input `prompt`.

negative_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input `negative_prompt`.

negative_prompt_embeds_pooled (`torch.Tensor`, *opsional*) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds_pooled akan dihasilkan dari argumen input `negative_prompt`.

num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt.

generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) untuk membuat proses generasi menjadi deterministik.

latents (`torch.Tensor`, *opsional*) : Laten 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 laten akan dibuat dengan pengambilan sampel menggunakan `generator` acak yang diberikan.

output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari generate image. Pilih antara: `"pil"` (`PIL.Image.Image`), `"np"` (`np.array`) atau `"pt"` (`torch.Tensor`).

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [ImagePipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) alih-alih tuple biasa.

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_kwargs` akan berisi daftar semua tensor sesuai yang ditentukan oleh `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opsional*) : Daftar input tensor untuk fungsi `callback_on_step_end`. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen `callback_kwargs`. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut `._callback_tensor_inputs` dari kelas pipeline Anda.

**Mengembalikan:**

[ImagePipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) atau `tuple` [ImagePipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) jika `return_dict` bernilai True, selain itu berupa `tuple`. Saat mengembalikan tuple, elemen pertama adalah daftar berisi embedding gambar yang dihasilkan.

Fungsi yang dipanggil saat memanggil pipeline untuk generasi.

Contoh:
```py
>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline

>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
...     "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
...     "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")

>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)
```

