Diffusers documentation

Latent Consistency Model Multistep Scheduler

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

Latent Consistency Model Multistep Scheduler

Ikhtisar

Scheduler multistep dan onestep (Algoritma 3) yang diperkenalkan bersama model konsistensi laten dalam makalah Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference oleh Simian Luo, Yiqin Tan, Longbo Huang, Jian Li, dan Hang Zhao. Scheduler ini seharusnya mampu menghasilkan sampel yang baik dari LatentConsistencyModelPipeline dalam 1-8 langkah.

LCMScheduler

kelas diffusers.LCMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'scaled_linear'trained_betas: numpy.ndarray | list[float] | None = Noneoriginal_inference_steps: int = 50clip_sample: bool = Falseclip_sample_range: float = 1.0set_alpha_to_one: bool = Truesteps_offset: int = 0prediction_type: str = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0timestep_spacing: str = 'leading'timestep_scaling: float = 10.0rescale_betas_zero_snr: bool = False )

Parameter

  • num_train_timesteps (int, defaultnya 1000) — Jumlah langkah difusi untuk melatih model.
  • beta_start (float, defaultnya 0.00085) — Nilai beta awal untuk inferensi.
  • beta_end (float, defaultnya 0.012) — Nilai beta akhir.
  • beta_schedule (str, defaultnya "scaled_linear") — Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkahkan model. Pilih dari linear, scaled_linear, atau squaredcos_cap_v2.
  • trained_betas (np.ndarray atau list[float], opsional) — Lewati beta_start dan beta_end dengan meneruskan array betas langsung ke konstruktor.
  • original_inference_steps (int, defaultnya 50) — Jumlah langkah inferensi default yang digunakan untuk menghasilkan jadwal timestep yang tersebar secara linear, yang kemudian akan diambil num_inference_steps timestep yang tersebar merata untuk membentuk jadwal timestep akhir.
  • clip_sample (bool, defaultnya False) — Memotong sampel yang diprediksi untuk stabilitas numerik.
  • clip_sample_range (float, defaultnya 1.0) — Magnitudo maksimum untuk pemotongan sampel. Hanya valid ketika clip_sample=True.
  • set_alpha_to_one (bool, defaultnya True) — Setiap langkah difusi menggunakan nilai produk alfa pada langkah tersebut dan pada langkah sebelumnya. Untuk langkah terakhir, tidak ada alfa sebelumnya. Ketika opsi ini True, produk alfa sebelumnya ditetapkan ke 1, selain itu menggunakan nilai alfa pada langkah 0.
  • steps_offset (int, defaultnya 0) — Offset yang ditambahkan ke langkah inferensi, sesuai kebutuhan beberapa keluarga model.
  • prediction_type (str, defaults to "epsilon") — Prediction type of the scheduler function; can be epsilon (predicts the noise of the diffusion process), sample (directly predicts the noisy sample) or v_prediction` (see section 2.4 of Imagen Video paper).
  • thresholding (bool, defaultnya False) — Apakah akan menggunakan metode “dynamic thresholding”. Metode ini tidak cocok untuk model difusi ruang laten seperti Stable Diffusion.
  • dynamic_thresholding_ratio (float, defaultnya 0.995) — Rasio untuk metode thresholding dinamis. Hanya valid ketika thresholding=True.
  • sample_max_value (float, defaultnya 1.0) — Nilai ambang untuk thresholding dinamis. Hanya valid ketika thresholding=True.
  • timestep_spacing (str, defaultnya "leading") — Cara timestep harus diskalakan. Lihat Tabel 2 dari Common Diffusion Noise Schedules and Sample Steps are Flawed untuk informasi lebih lanjut.
  • timestep_scaling (float, defaultnya 10.0) — Faktor yang akan dikalikan dengan timestep saat menghitung kondisi batas model konsistensi c_skip dan c_out. Meningkatkan nilai ini akan mengurangi error aproksimasi (meskipun error aproksimasi pada nilai default 10.0 sudah cukup kecil).
  • rescale_betas_zero_snr (bool, defaultnya False) — Apakah akan menskalakan ulang betas agar memiliki SNR terminal nol. Hal ini memungkinkan model untuk menghasilkan sampel yang sangat terang dan gelap, alih-alih membatasi pada sampel dengan kecerahan sedang. Terkait secara longgar dengan --offset_noise.

LCMScheduler memperluas prosedur denoising yang diperkenalkan dalam denoising diffusion probabilistic models (DDPMs) dengan panduan non-Markovian.

Model ini mewarisi dari SchedulerMixin dan ConfigMixin. ~ConfigMixin menangani penyimpanan semua atribut konfigurasi yang diteruskan ke fungsi __init__ scheduler, seperti num_train_timesteps. Atribut tersebut dapat diakses melalui scheduler.config.num_train_timesteps. SchedulerMixin menyediakan fungsionalitas pemuatan dan penyimpanan umum melalui fungsi SchedulerMixin.save_pretrained() dan from_pretrained().

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Parameter

  • original_samples (torch.Tensor) — Sampel asli yang akan ditambahkan dengan noise.
  • noise (torch.Tensor) — Noise yang akan ditambahkan ke sampel.
  • timesteps (torch.IntTensor) — Timesteps yang menunjukkan tingkat noise untuk setiap sampel.

Mengembalikan

torch.Tensor

Sampel yang bising.

Tambahkan noise ke sampel asli sesuai dengan magnitudo noise pada setiap timestep (ini adalah proses difusi maju).

get_scalings_for_boundary_condition_discrete

< >

( timestep: int ) → tuple[float, float]

Parameter

  • timestep (int) — Langkah waktu diskret yang digunakan untuk menghitung penskalaan.

Mengembalikan

tuple[float, float]

Tuple yang berisi c_skip (skala untuk sampel input) dan c_out (skala untuk sampel denoised yang diprediksi).

Menghitung penskalaan kondisi batas (c_skip dan c_out) untuk langkah waktu diskret yang diberikan, sebagaimana digunakan dalam Latent Consistency Model.

get_velocity

< >

( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh input.
  • noise (torch.Tensor) — Tensor noise.
  • timesteps (torch.IntTensor) — Timesteps untuk komputasi kecepatan.

Mengembalikan

torch.Tensor

Kecepatan yang dihitung.

Hitung prediksi kecepatan dari sampel dan noise sesuai dengan rumus kecepatan.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

Parameter

  • timestep (float atau torch.Tensor) — Nilai timestep yang akan dicari dalam jadwal.
  • schedule_timesteps (torch.Tensor, opsional) — Jadwal timestep yang akan dicari. Jika None, gunakan self.timesteps.

Mengembalikan

int

Indeks timestep dalam jadwal. Untuk langkah pertama, mengembalikan indeks kedua jika ada beberapa kecocokan untuk menghindari pengabaian sigma saat memulai di tengah jadwal (misalnya, untuk image-to-image).

Cari indeks dari timestep tertentu dalam jadwal timestep.

previous_timestep

< >

( timestep ) → int or torch.Tensor

Parameter

  • timestep (int) — Timestep saat ini.

Mengembalikan

int atau torch.Tensor

Langkah waktu sebelumnya.

Hitung langkah waktu sebelumnya dalam rantai difusi.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh input.
  • timestep (int, opsional) — Timestep saat ini dalam rantai difusi.

Mengembalikan

torch.Tensor

Contoh input yang diskalakan.

Memastikan interoperabilitas dengan scheduler yang perlu menskalakan input model denoising berdasarkan timestep saat ini.

set_begin_index

< >

( begin_index: int = 0 )

Parameter

  • begin_index (int, defaultnya 0) — Indeks awal untuk scheduler.

Menetapkan indeks awal untuk penjadwal. Fungsi ini harus dijalankan dari pipeline sebelum inferensi.

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = Noneoriginal_inference_steps: int | None = Nonetimesteps: list[int] | None = Nonestrength: float = 1.0 ) → None

Parameter

  • num_inference_steps (int, opsional) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih. Jika digunakan, timesteps harus None.
  • device (str atau torch.device, opsional) — Perangkat tempat timesteps harus dipindahkan. Jika None, timesteps tidak dipindahkan.
  • original_inference_steps (int, opsional) — Jumlah langkah inferensi asli, yang akan digunakan untuk menghasilkan jadwal timestep yang tersebar secara linear (yang berbeda dari implementasi diffusers standar). Kami kemudian akan mengambil num_inference_steps timestep dari jadwal ini, yang tersebar merata dalam hal indeks, dan menggunakannya sebagai jadwal timestep akhir kami. Jika tidak diatur, ini akan secara default menggunakan atribut original_inference_steps.
  • timesteps (list[int], opsional) — Timesteps kustom yang digunakan untuk mendukung spasi arbitrer antar timesteps. Jika None, maka strategi spasi timestep default berupa spasi yang sama antar timesteps pada jadwal timestep pelatihan/distilasi akan digunakan. Jika timesteps diberikan, num_inference_steps harus None.
  • strength (float, defaultnya 1.0) — Faktor kekuatan yang digunakan untuk menghasilkan jadwal timestep parsial (misalnya untuk image-to-image). Nilai 1.0 menggunakan jadwal penuh.

Mengembalikan

None

Menetapkan langkah waktu diskrit yang digunakan untuk rantai difusi (untuk dijalankan sebelum inferensi).

langkah

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → LCMSchedulerOutput or tuple

Parameter

  • model_output (torch.Tensor) — Output langsung dari model difusi yang dipelajari.
  • timestep (int) — Timestep diskrit saat ini dalam rantai difusi.
  • sample (torch.Tensor) — Instans saat ini dari sampel yang dibuat oleh proses difusi.
  • generator (torch.Generator, opsional) — Generator angka acak untuk pengambilan sampel yang dapat direproduksi.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan LCMSchedulerOutput atau tuple.

Mengembalikan

LCMSchedulerOutput atau tuple

Jika return_dict adalah True, LCMSchedulerOutput akan dikembalikan, selain itu sebuah tuple akan dikembalikan di mana elemen pertama adalah tensor sampel.

Prediksi sampel dari langkah waktu sebelumnya dengan membalik SDE. Fungsi ini menyebarkan proses difusi dari keluaran model yang dipelajari (paling sering berupa noise yang diprediksi).

Update on GitHub