Diffusers documentation

CMStochasticIterativeScheduler

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

CMStochasticIterativeScheduler

Consistency Models oleh Yang Song, Prafulla Dhariwal, Mark Chen, dan Ilya Sutskever memperkenalkan penjadwal multistep dan onestep (Algorithm 1) yang mampu menghasilkan sampel yang baik dalam satu langkah atau sejumlah kecil langkah.

Abstrak dari makalah tersebut adalah:

Model difusi telah mendorong kemajuan signifikan di bidang generasi gambar, audio, dan video, tetapi mereka bergantung pada proses sampling iteratif yang menyebabkan generasi lambat. Untuk mengatasi keterbatasan ini, kami mengusulkan model konsistensi, sebuah keluarga model baru yang menghasilkan sampel berkualitas tinggi dengan memetakan noise langsung ke data. Mereka mendukung generasi satu langkah yang cepat secara desain, sambil tetap memungkinkan sampling multi-langkah untuk menukar komputasi dengan kualitas sampel. Mereka juga mendukung pengeditan data zero-shot, seperti inpainting gambar, pewarnaan, dan super-resolusi, tanpa memerlukan pelatihan eksplisit pada tugas-tugas tersebut. Model konsistensi dapat dilatih baik dengan mendistilasi model difusi yang sudah terlatih, maupun sebagai model generatif mandiri sepenuhnya. Melalui eksperimen yang luas, kami menunjukkan bahwa mereka melampaui teknik distilasi yang ada untuk model difusi dalam sampling satu langkah dan beberapa langkah, mencapai FID state-of-the-art baru sebesar 3,55 pada CIFAR-10 dan 6,20 pada ImageNet 64x64 untuk generasi satu langkah. Ketika dilatih secara terpisah, model konsistensi menjadi keluarga model generatif baru yang dapat melampaui model generatif satu langkah, non-adversarial yang ada pada benchmark standar seperti CIFAR-10, ImageNet 64x64, dan LSUN 256x256.

Kodebase asli dapat ditemukan di openai/consistency_models.

CMStochasticIterativeScheduler

kelas diffusers.CMStochasticIterativeScheduler

< >

( num_train_timesteps: int = 40sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5s_noise: float = 1.0rho: float = 7.0clip_denoised: bool = True )

Parameter

  • num_train_timesteps (int, defaultnya 40) — Jumlah langkah difusi untuk melatih model.
  • sigma_min (float, defaultnya 0.002) — Magnitudo noise minimum dalam jadwal sigma. Defaultnya 0.002 dari implementasi asli.
  • sigma_max (float, defaultnya 80.0) — Magnitudo noise maksimum dalam jadwal sigma. Defaultnya 80.0 dari implementasi asli.
  • sigma_data (float, defaultnya 0.5) — Standar deviasi dari distribusi data pada paper EDM. Defaultnya 0.5 dari implementasi asli.
  • s_noise (float, defaultnya 1.0) — Jumlah noise tambahan untuk mengompensasi hilangnya detail selama sampling. Rentang yang wajar adalah [1.000, 1.011]. Defaultnya 1.0 dari implementasi asli.
  • rho (float, defaultnya 7.0) — Parameter untuk menghitung jadwal sigma Karras dari makalah EDM. Defaultnya 7.0 dari implementasi asli.
  • clip_denoised (bool, defaultnya True) — Apakah akan memotong (clip) output denoised ke (-1, 1).
  • timesteps (list atau np.ndarray atau torch.Tensor, opsional) — Jadwal timestep eksplisit yang dapat ditentukan secara opsional. Timestep diharapkan berada dalam urutan menaik.

Sampling multistep dan onestep untuk model konsistensi.

Model ini mewarisi dari SchedulerMixin dan ConfigMixin. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan pustaka ini untuk semua scheduler, seperti pemuatan dan penyimpanan.

add_noise

< >

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

Parameter

  • original_samples (torch.Tensor) — Sampel asli yang akan ditambahkan dengan noise.
  • noise (torch.Tensor) — Tensor noise yang akan ditambahkan ke sampel asli.
  • timesteps (torch.Tensor) — Timesteps untuk menambahkan noise, yang menentukan tingkat noise dari jadwal.

Mengembalikan

torch.Tensor

Sampel berisik dengan tambahan noise yang diskalakan sesuai dengan jadwal timestep.

Tambahkan noise ke sampel asli sesuai dengan jadwal noise pada timestep yang ditentukan.

get_scalings

< >

( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]

Parameter

  • sigma (torch.Tensor) — Nilai sigma saat ini dalam jadwal noise.

Mengembalikan

tuple[torch.Tensor, torch.Tensor]

Tuple yang berisi c_skip (skala untuk sampel input) dan c_out (skala untuk output model).

Menghitung faktor penskalaan untuk output model konsistensi.

get_scalings_for_boundary_condition

< >

( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]

Parameter

  • sigma (torch.Tensor) — Sigma saat ini dalam jadwal sigma Karras.

Mengembalikan

tuple[torch.Tensor, torch.Tensor]

Tuple dua elemen di mana c_skip (yang menimbang sampel saat ini) adalah elemen pertama dan c_out (yang menimbang output model konsistensi) adalah elemen kedua.

Mendapatkan penskalaan yang digunakan dalam parameterisasi model konsistensi (dari Lampiran C makalah) untuk menegakkan kondisi batas.

> epsilon dalam persamaan untuk c_skip dan c_out diatur ke sigma_min.

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.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh input.
  • timestep (float atau torch.Tensor) — Langkah waktu saat ini dalam rantai difusi.

Mengembalikan

torch.Tensor

Contoh input yang diskalakan.

Menskala input model konsistensi dengan (sigma**2 + sigma_data**2) ** 0.5.

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] = Nonetimesteps: list[int] | None = None )

Parameter

  • num_inference_steps (int, opsional) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih.
  • device (str atau torch.device, opsional) — Perangkat tempat timesteps harus dipindahkan. Jika None, timesteps tidak dipindahkan.
  • timesteps (list[int], opsional) — Timesteps kustom yang digunakan untuk mendukung spasi arbitrer antar timesteps. Jika None, maka strategi spasi timestep default dengan spasi yang sama antar timesteps digunakan. Jika timesteps diberikan, num_inference_steps harus None.

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

sigma_to_t

< >

( sigmas: float | numpy.ndarray ) → np.ndarray

Parameter

  • sigmas (float atau np.ndarray) — Satu sigma Karras tunggal atau array dari sigma Karras.

Mengembalikan

np.ndarray

Array timestep input yang diskalakan.

Mendapatkan langkah waktu yang diskalakan dari sigma Karras untuk input ke model konsistensi.

langkah

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → CMStochasticIterativeSchedulerOutput or tuple

Parameter

  • model_output (torch.Tensor) — Output langsung dari model difusi yang dipelajari.
  • timestep (float atau torch.Tensor) — Langkah waktu 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.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan CMStochasticIterativeSchedulerOutput atau tuple.

Mengembalikan

CMStochasticIterativeSchedulerOutput atau tuple

Jika return_dict adalah True, CMStochasticIterativeSchedulerOutput dikembalikan, sebaliknya sebuah tuple 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).

CMStochasticIterativeSchedulerOutput

kelas diffusers.schedulers.scheduling_consistency_models.CMStochasticIterativeSchedulerOutput

< >

( prev_sample: Tensor )

Parameter

  • prev_sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) untuk gambar) — Contoh yang dihitung (x_{t-1}) dari langkah waktu sebelumnya. prev_sample harus digunakan sebagai input model berikutnya dalam loop denoising.

Kelas output untuk fungsi step penjadwal.

Update on GitHub