Diffusers documentation

PNDMScheduler

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

PNDMScheduler

PNDMScheduler, atau metode numerik semu untuk model difusi, menggunakan teknik integrasi ODE yang lebih canggih seperti Runge-Kutta dan metode multi-langkah linear. Implementasi aslinya dapat ditemukan di crowsonkb/k-diffusion.

PNDMScheduler

kelas diffusers.PNDMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneskip_prk_steps: bool = Falseset_alpha_to_one: bool = Falseprediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0 )

Parameter

  • num_train_timesteps (int, defaultnya 1000) — Jumlah langkah difusi untuk melatih model.
  • beta_start (float, defaultnya 0.0001) — Nilai beta awal untuk inferensi.
  • beta_end (float, defaultnya 0.02) — Nilai beta akhir.
  • beta_schedule ("linear", "scaled_linear", atau "squaredcos_cap_v2", defaultnya "linear") — Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkahkan model.
  • trained_betas (np.ndarray, opsional) — Lewati beta_start dan beta_end dengan meneruskan array betas langsung ke konstruktor.
  • skip_prk_steps (bool, defaultnya False) — Memungkinkan scheduler untuk melewati langkah-langkah Runge-Kutta yang didefinisikan dalam paper asli sebagai prasyarat sebelum langkah-langkah PLMS.
  • set_alpha_to_one (bool, default False) — Setiap langkah difusi menggunakan nilai produk alfa pada langkah tersebut dan 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.
  • prediction_type ("epsilon" atau "v_prediction", default "epsilon") — Jenis prediksi dari fungsi scheduler; dapat berupa epsilon (memprediksi noise dari proses difusi) atau v_prediction (lihat bagian 2.4 dari paper Imagen Video).
  • timestep_spacing ("linspace", "leading", atau "trailing", defaultnya "leading") — Cara timestep harus diskalakan. Lihat Tabel 2 dari Common Diffusion Noise Schedules and Sample Steps are Flawed untuk informasi lebih lanjut.
  • steps_offset (int, defaultnya 0) — Offset yang ditambahkan ke langkah inferensi, sesuai kebutuhan beberapa keluarga model.

PNDMScheduler menggunakan metode numerik pseudo untuk model difusi seperti Runge-Kutta dan metode multi-langkah linear.

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

scale_model_input

< >

( sample: Tensor*args**kwargs ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh input.

Mengembalikan

torch.Tensor

Contoh input yang diskalakan.

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

set_timesteps

< >

( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )

Parameter

  • num_inference_steps (int) — 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.

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

langkah

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput 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.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan SchedulerOutput atau tuple.

Mengembalikan

SchedulerOutput atau tuple

If return_dict is True, SchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

Prediksi sampel dari timestep sebelumnya dengan membalik SDE. Fungsi ini menyebarkan proses difusi dari output model yang dipelajari (paling sering berupa noise yang diprediksi), dan memanggil step_prk() atau step_plms() tergantung pada variabel internal counter.

step_plms

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput 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.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan SchedulerOutput atau tuple.

Mengembalikan

SchedulerOutput atau tuple

If return_dict is True, SchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

Prediksikan sampel dari langkah waktu sebelumnya dengan membalikkan SDE. Fungsi ini menyebarkan sampel dengan metode multistep linear. Fungsi ini melakukan satu kali forward pass beberapa kali untuk mengaproksimasi solusi.

step_prk

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput 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.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan SchedulerOutput atau tuple.

Mengembalikan

SchedulerOutput atau tuple

If return_dict is True, SchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

Prediksikan sampel dari langkah waktu sebelumnya dengan membalikkan SDE. Fungsi ini menyebarkan sampel dengan metode Runge-Kutta. Fungsi ini melakukan empat langkah maju untuk mengaproksimasi solusi dari persamaan diferensial.

SchedulerOutput

kelas diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( 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 dasar untuk keluaran dari fungsi step sebuah scheduler.

Update on GitHub