Diffusers documentation

EDMEulerScheduler

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

EDMEulerScheduler

Formulasi Karras dari penjadwal Euler (Algoritma 2) dari makalah Elucidating the Design Space of Diffusion-Based Generative Models oleh Karras dkk. Ini adalah penjadwal cepat yang sering kali dapat menghasilkan keluaran yang baik dalam 20-30 langkah. Penjadwal ini didasarkan pada implementasi k-diffusion asli oleh Katherine Crowson.

EDMEulerScheduler

kelas diffusers.EDMEulerScheduler

< >

( sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras'num_train_timesteps: int = 1000prediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'rho: float = 7.0final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

Parameter

  • sigma_min (float, opsional, default 0.002) — Magnitudo noise minimum dalam jadwal sigma. Nilai ini diatur ke 0.002 dalam paper EDM [1]; rentang yang wajar adalah [0, 10].
  • sigma_max (float, opsional, default 80.0) — Magnitudo noise maksimum dalam jadwal sigma. Nilai ini diatur ke 80.0 dalam paper EDM [1]; rentang yang wajar adalah [0.2, 80.0].
  • sigma_data (float, opsional, default 0.5) — Standar deviasi dari distribusi data. Nilai ini diatur ke 0,5 dalam paper EDM [1].
  • sigma_schedule (Literal["karras", "exponential"], opsional, defaultnya "karras") — Jadwal sigma untuk menghitung sigmas. Secara default, kami menggunakan jadwal yang diperkenalkan dalam paper EDM (https://huggingface.co/papers/2206.00364). Jadwal "exponential" diintegrasikan ke dalam model ini: https://huggingface.co/stabilityai/cosxl.
  • num_train_timesteps (int, opsional, default 1000) — Jumlah langkah difusi untuk melatih model.
  • prediction_type (Literal["epsilon", "v_prediction"], opsional, default "epsilon") — Jenis prediksi dari fungsi scheduler. "epsilon" memprediksi noise dari proses difusi, dan "v_prediction" (lihat bagian 2.4 dari paper Imagen Video).
  • rho (float, opsional, defaultnya 7.0) — Parameter rho yang digunakan untuk menghitung jadwal sigma Karras, yang diset ke 7.0 dalam paper EDM [1].
  • final_sigmas_type (Literal["zero", "sigma_min"], opsional, defaultnya "zero") — Nilai sigma akhir untuk jadwal noise selama proses sampling. Jika "sigma_min", sigma akhir sama dengan sigma terakhir dalam jadwal pelatihan. Jika "zero", sigma akhir diatur ke 0.

Menerapkan penjadwal Euler dalam formulasi EDM seperti yang disajikan dalam Karras et al. 2022 [1].

[1] Karras, Tero, dkk. “Elucidating the Design Space of Diffusion-Based Generative Models.” https://huggingface.co/papers/2206.00364

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.

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.

precondition_inputs

< >

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

Parameter

  • sample (torch.Tensor) — Tensor sampel input untuk preconditioning.
  • sigma (float atau torch.Tensor) — Nilai sigma (tingkat noise) saat ini.

Mengembalikan

torch.Tensor

Contoh input yang diskalakan.

Lakukan pra-kondisi pada sampel input dengan menskalakannya sesuai dengan formulasi EDM.

precondition_noise

< >

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

Parameter

  • sigma (float atau torch.Tensor) — Nilai sigma (level noise) yang akan diprecondition.

Mengembalikan

torch.Tensor

Nilai noise preconditioned yang dihitung sebagai 0.25 * log(sigma).

Prakondisikan tingkat noise dengan menerapkan transformasi logaritmik.

precondition_outputs

< >

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

Parameter

  • sample (torch.Tensor) — Tensor sampel input.
  • model_output (torch.Tensor) — Output langsung dari model difusi yang dipelajari.
  • sigma (float atau torch.Tensor) — Nilai sigma (tingkat noise) saat ini.

Mengembalikan

torch.Tensor

Contoh yang telah dinoised yang dihitung dengan menggabungkan koneksi lompatan dan penskalaan output.

Prakondisikan keluaran model sesuai dengan formulasi EDM.

scale_model_input

< >

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

Parameter

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

Mengembalikan

torch.Tensor

Contoh input yang diskalakan.

Skalakan input model denoising agar sesuai dengan algoritma Euler. Menjamin interoperabilitas dengan scheduler yang memerlukan penskalaan 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 = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = 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.
  • sigmas (torch.Tensor | list[float], opsional) — Sigmas kustom untuk digunakan dalam proses denoising. Jika tidak didefinisikan, perilaku default saat num_inference_steps diteruskan akan digunakan.

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

langkah

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = Truepred_original_sample: typing.Optional[torch.Tensor] = None ) → EDMEulerSchedulerOutput or tuple

Parameter

  • model_output (torch.Tensor) — Output langsung dari model difusi yang dipelajari.
  • timestep (float atau torch.Tensor) — Langkah waktu diskret saat ini dalam rantai difusi.
  • sample (torch.Tensor) — Instans saat ini dari sampel yang dibuat oleh proses difusi.
  • s_churn (float, opsional, default 0.0) — Jumlah stokastisitas yang ditambahkan pada setiap langkah. Nilai yang lebih tinggi menambahkan lebih banyak noise.
  • s_tmin (float, opsional, default 0.0) — Ambang batas sigma minimum di bawahnya tidak ada noise yang ditambahkan.
  • s_tmax (float, opsional, defaultnya float("inf")) — Ambang batas sigma maksimum di atasnya tidak ada noise yang ditambahkan.
  • s_noise (float, opsional, default 1.0) — Faktor penskalaan untuk noise yang ditambahkan ke sampel.
  • generator (torch.Generator, opsional) — Generator angka acak untuk reproduktibilitas.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan EDMEulerSchedulerOutput atau tuple.
  • pred_original_sample (torch.Tensor, opsional) — Contoh denoised yang diprediksi dari langkah sebelumnya. Jika disediakan, perhitungan ulang dilewati.

Mengembalikan

EDMEulerSchedulerOutput atau tuple

Jika return_dict adalah True, sebuah EDMEulerSchedulerOutput akan dikembalikan, selain itu sebuah tuple akan dikembalikan di mana elemen pertama adalah tensor sampel sebelumnya dan elemen kedua adalah tensor sampel asli yang diprediksi.

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

EDMEulerSchedulerOutput

kelas diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )

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.
  • pred_original_sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) untuk gambar) — Sampel denoised yang diprediksi (x_{0}) berdasarkan output model dari timestep saat ini. pred_original_sample dapat digunakan untuk pratinjau progres atau untuk guidance.

Kelas output untuk output fungsi step penjadwal.

Update on GitHub