# CogVideoXDPMScheduler

`CogVideoXDPMScheduler` didasarkan pada [DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps](https://huggingface.co/papers/2206.00927) dan [DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models](https://huggingface.co/papers/2211.01095), khususnya untuk model CogVideoX.

## CogVideoXDPMScheduler[[diffusers.CogVideoXDPMScheduler]]

#### diffusers.CogVideoXDPMScheduler[[diffusers.CogVideoXDPMScheduler]]

```python
diffusers.CogVideoXDPMScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.00085, beta_end: float = 0.012, beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2'] = 'scaled_linear', trained_betas: numpy.ndarray | list[float] | None = None, clip_sample: bool = True, set_alpha_to_one: bool = True, steps_offset: int = 0, prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon', clip_sample_range: float = 1.0, sample_max_value: float = 1.0, timestep_spacing: typing.Literal['leading', 'linspace', 'trailing'] = 'leading', rescale_betas_zero_snr: bool = False, snr_shift_scale: float = 3.0)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpm_cogvideox.py#L134)

**Parameter:**

num_train_timesteps (`int`, defaultnya 1000) : Jumlah langkah difusi untuk melatih model.

beta_start (`float`, defaultnya 0.0001) : Nilai awal `beta` untuk inferensi.

beta_end (`float`, defaultnya 0.02) : Nilai `beta` akhir.

beta_schedule (`str`, defaultnya `"linear"`) : Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkah model. Pilih dari `linear`, `scaled_linear`, atau `squaredcos_cap_v2`.

trained_betas (`np.ndarray`, *opsional*) : Lewatkan `beta_start` dan `beta_end` dengan meneruskan array betas secara langsung ke konstruktor.

clip_sample (`bool`, defaultnya `True`) : Memotong sampel prediksi 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`, default 0) : Offset yang ditambahkan ke langkah inferensi, sesuai kebutuhan beberapa keluarga model.

prediction_type (`str`, defaults to `epsilon`, *optional*) : 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](https://huggingface.co/papers/2210.02303) 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 ambang batas dinamis. Hanya valid ketika `thresholding=True`.

sample_max_value (`float`, defaultnya 1.0) : Nilai ambang untuk pengambangan 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](https://huggingface.co/papers/2305.08891) untuk informasi lebih lanjut. Pilih dari `leading`, `linspace` atau `trailing`.

rescale_betas_zero_snr (`bool`, defaultnya `False`) : Apakah akan melakukan penskalaan 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`](https://github.com/huggingface/diffusers/blob/74fd735eb073eb1d774b1ab4154a0876eb82f055/examples/dreambooth/train_dreambooth.py#L506).

snr_shift_scale (`float`, default 3.0) : Skala pergeseran untuk SNR.

`DDIMScheduler` memperluas prosedur denoising yang diperkenalkan dalam denoising diffusion probabilistic models (DDPM) dengan panduan non-Markovian.

Model ini mewarisi dari [SchedulerMixin](/docs/diffusers/main/id/api/schedulers/overview#diffusers.SchedulerMixin) dan [ConfigMixin](/docs/diffusers/main/id/api/configuration#diffusers.ConfigMixin). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan pustaka ini untuk semua scheduler, seperti pemuatan dan penyimpanan.

#### add_noise[[diffusers.CogVideoXDPMScheduler.add_noise]]

```python
add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpm_cogvideox.py#L522)

**Parameter:**

original_samples (`torch.Tensor`) : Sampel asli yang akan ditambahkan dengan noise.

noise (`torch.Tensor`) : Kebisingan yang akan ditambahkan ke sampel.

timesteps (`torch.IntTensor`) : Langkah waktu 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_mult[[diffusers.CogVideoXDPMScheduler.get_mult]]

```python
get_mult(h: Tensor, r: Tensor, alpha_prod_t: Tensor, alpha_prod_t_prev: Tensor, alpha_prod_t_back: typing.Optional[torch.Tensor] = None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpm_cogvideox.py#L364)

**Parameter:**

h (`torch.Tensor`) : Perbedaan log-SNR.

r (`torch.Tensor`) : Rasio perbedaan log-SNR.

alpha_prod_t (`torch.Tensor`) : Produk kumulatif alfa pada langkah waktu saat ini.

alpha_prod_t_prev (`torch.Tensor`) : Produk kumulatif alfa pada langkah waktu sebelumnya.

alpha_prod_t_back (`torch.Tensor`, *opsional*) : Produk kumulatif dari alphas pada timestep sebelum timestep sebelumnya.

**Mengembalikan:** `tuple`

Tuple yang berisi pengali.

Hitung pengali untuk sampel sebelumnya dan sampel asli yang diprediksi.

#### get_variables[[diffusers.CogVideoXDPMScheduler.get_variables]]

```python
get_variables(alpha_prod_t: Tensor, alpha_prod_t_prev: Tensor, alpha_prod_t_back: typing.Optional[torch.Tensor] = None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpm_cogvideox.py#L331)

**Parameter:**

alpha_prod_t (`torch.Tensor`) : Produk kumulatif alfa pada langkah waktu saat ini.

alpha_prod_t_prev (`torch.Tensor`) : Produk kumulatif alfa pada langkah waktu sebelumnya.

alpha_prod_t_back (`torch.Tensor`, *opsional*) : Produk kumulatif dari alphas pada timestep sebelum timestep sebelumnya.

**Mengembalikan:** `tuple`

Tuple yang berisi variabel `h`, `r`, `lamb`, `lamb_next`.

Hitung variabel yang digunakan untuk DPM-Solver++ (2M) dengan merujuk pada implementasi aslinya.

#### get_velocity[[diffusers.CogVideoXDPMScheduler.get_velocity]]

```python
get_velocity(sample: Tensor, noise: Tensor, timesteps: IntTensor)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpm_cogvideox.py#L565)

**Parameter:**

sample (`torch.Tensor`) : Sampel input.

noise (`torch.Tensor`) : Tensor noise.

timesteps (`torch.IntTensor`) : Langkah waktu untuk komputasi kecepatan.

**Mengembalikan:** `torch.Tensor`

Kecepatan yang dihitung.

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

#### scale_model_input[[diffusers.CogVideoXDPMScheduler.scale_model_input]]

```python
scale_model_input(sample: Tensor, timestep: int | None = None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpm_cogvideox.py#L262)

**Parameter:**

sample (`torch.Tensor`) : Sampel input.

timestep (`int`, *opsional*) : Langkah waktu (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_timesteps[[diffusers.CogVideoXDPMScheduler.set_timesteps]]

```python
set_timesteps(num_inference_steps: int, device: typing.Union[str, torch.device, NoneType] = None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpm_cogvideox.py#L279)

**Parameter:**

num_inference_steps (`int`) : Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih sebelumnya.

device (`str` atau `torch.device`, *opsional*) : Perangkat tempat timestep harus dipindahkan. Jika `None` (default), timestep tidak dipindahkan.

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

#### langkah[[diffusers.CogVideoXDPMScheduler.step]]

```python
step(model_output: Tensor, old_pred_original_sample: Tensor, timestep: int, timestep_back: int, sample: Tensor, eta: float = 0.0, use_clipped_model_output: bool = False, generator: typing.Optional[torch.Generator] = None, variance_noise: typing.Optional[torch.Tensor] = None, return_dict: bool = False)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpm_cogvideox.py#L401)

**Parameter:**

model_output (`torch.Tensor`) : Output langsung dari model difusi yang telah dipelajari.

old_pred_original_sample (`torch.Tensor`) : Sampel asli yang diprediksi dari timestep sebelumnya.

timestep (`int`) : Langkah waktu diskret saat ini dalam rantai difusi.

timestep_back (`int`) : Langkah waktu untuk dilihat ke belakang.

sample (`torch.Tensor`) : Instans saat ini dari sampel yang dibuat oleh proses difusi.

eta (`float`) : Bobot noise untuk noise yang ditambahkan pada langkah difusi.

use_clipped_model_output (`bool`, defaultnya `False`) : Jika `True`, menghitung `model_output` yang "dikoreksi" dari sampel asli prediksi yang dipangkas. Hal ini diperlukan karena sampel asli prediksi dipangkas ke [-1, 1] ketika `self.config.clip_sample` bernilai `True`. Jika tidak ada pemangkasan yang terjadi, `model_output` yang "dikoreksi" akan sama dengan yang diberikan sebagai input dan `use_clipped_model_output` tidak memiliki efek.

generator (`torch.Generator`, *opsional*) : Generator angka acak.

variance_noise (`torch.Tensor`) : Alternatif untuk menghasilkan noise dengan `generator` dengan cara menyediakan noise untuk varians secara langsung. Berguna untuk metode seperti `CycleDiffusion`.

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [DDIMSchedulerOutput](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.schedulers.scheduling_ddim.DDIMSchedulerOutput) atau `tuple`.

**Mengembalikan:** [DDIMSchedulerOutput](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.schedulers.scheduling_ddim.DDIMSchedulerOutput) atau `tuple`

If return_dict is `True`, [DDIMSchedulerOutput](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.schedulers.scheduling_ddim.DDIMSchedulerOutput) is returned, otherwise a tuple is returned where the first element is the sample tensor.

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

