# FlowMatchEulerDiscreteScheduler

`FlowMatchEulerDiscreteScheduler` didasarkan pada sampling flow-matching yang diperkenalkan dalam [Stable Diffusion 3](https://huggingface.co/papers/2403.03206).

## FlowMatchEulerDiscreteScheduler[[diffusers.FlowMatchEulerDiscreteScheduler]]

#### diffusers.FlowMatchEulerDiscreteScheduler[[diffusers.FlowMatchEulerDiscreteScheduler]]

```python
diffusers.FlowMatchEulerDiscreteScheduler(num_train_timesteps: int = 1000, shift: float = 1.0, use_dynamic_shifting: bool = False, base_shift: float | None = 0.5, max_shift: float | None = 1.15, base_image_seq_len: int = 256, max_image_seq_len: int = 4096, invert_sigmas: bool = False, shift_terminal: float = None, use_karras_sigmas: bool = False, use_exponential_sigmas: bool = False, use_beta_sigmas: bool = False, time_shift_type: typing.Literal['exponential', 'linear'] = 'exponential', stochastic_sampling: bool = False)
```

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

**Parameter:**

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

shift (`float`, defaultnya 1.0) : Nilai pergeseran untuk jadwal timestep.

use_dynamic_shifting (`bool`, defaultnya False) : Apakah akan menerapkan pergeseran timestep secara langsung berdasarkan resolusi gambar.

base_shift (`float`, default 0.5) : Nilai untuk menstabilkan generasi gambar. Meningkatkan `base_shift` mengurangi variasi dan gambar menjadi lebih konsisten dengan output yang diinginkan.

max_shift (`float`, defaultnya 1.15) : Perubahan nilai yang diizinkan untuk vektor laten. Meningkatkan `max_shift` mendorong variasi lebih banyak dan gambar mungkin menjadi lebih berlebihan atau bergaya.

base_image_seq_len (`int`, defaultnya 256) : Panjang sekuens gambar dasar.

max_image_seq_len (`int`, defaultnya 4096) : Panjang maksimum urutan gambar.

invert_sigmas (`bool`, defaultnya False) : Apakah akan membalikkan sigmas.

shift_terminal (`float`, defaultnya None) : Nilai akhir dari jadwal timestep yang digeser.

use_karras_sigmas (`bool`, defaultnya False) : Apakah akan menggunakan Karras sigmas untuk ukuran langkah dalam jadwal noise selama sampling.

use_exponential_sigmas (`bool`, defaultnya False) : Apakah akan menggunakan sigma eksponensial untuk ukuran langkah dalam jadwal noise selama sampling.

use_beta_sigmas (`bool`, defaultnya False) : Apakah akan menggunakan beta sigmas untuk ukuran langkah dalam jadwal noise selama sampling.

time_shift_type (`str`, defaultnya "exponential") : Jenis pergeseran langkah waktu yang bergantung pada resolusi dinamis yang akan diterapkan. Bisa berupa "exponential" atau "linear".

stochastic_sampling (`bool`, defaultnya False) : Apakah akan menggunakan sampling stokastik.

Scheduler Euler.

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.

#### index_for_timestep[[diffusers.FlowMatchEulerDiscreteScheduler.index_for_timestep]]

```python
index_for_timestep(timestep: typing.Union[float, torch.FloatTensor], schedule_timesteps: typing.Optional[torch.FloatTensor] = None)
```

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

**Parameter:**

timestep (`float` atau `torch.FloatTensor`) : timestep untuk mencari indeksnya.

schedule_timesteps (`torch.FloatTensor`, *opsional*) : Langkah-langkah jadwal untuk divalidasi. Jika `None`, langkah-langkah jadwal dari scheduler digunakan.

**Mengembalikan:** `int`

Indeks dari timestep.

Dapatkan indeks untuk timestep yang diberikan.

#### scale_noise[[diffusers.FlowMatchEulerDiscreteScheduler.scale_noise]]

```python
scale_noise(sample: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], noise: typing.Optional[torch.FloatTensor] = None)
```

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

**Parameter:**

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

timestep (`torch.FloatTensor`) : Langkah waktu saat ini dalam rantai difusi.

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

**Mengembalikan:** `torch.FloatTensor`

Contoh input yang diskalakan.

Proses maju dalam flow-matching

#### set_begin_index[[diffusers.FlowMatchEulerDiscreteScheduler.set_begin_index]]

```python
set_begin_index(begin_index: int = 0)
```

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

**Parameter:**

begin_index (`int`, defaultnya `0`) : Indeks awal untuk scheduler.

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

#### set_shift[[diffusers.FlowMatchEulerDiscreteScheduler.set_shift]]

```python
set_shift(shift: float)
```

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

**Parameter:**

shift (`float`) : Nilai pergeseran yang akan disetel.

Menetapkan nilai pergeseran untuk penjadwal.

#### set_timesteps[[diffusers.FlowMatchEulerDiscreteScheduler.set_timesteps]]

```python
set_timesteps(num_inference_steps: int | None = None, device: typing.Union[str, torch.device] = None, sigmas: list[float] | None = None, mu: float | None = None, timesteps: list[float] | None = None)
```

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

**Parameter:**

num_inference_steps (`int`, *opsional*) : 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`, timestep tidak dipindahkan.

sigmas (`list[float]`, *opsional*) : Nilai kustom untuk sigma yang akan digunakan untuk setiap langkah difusi. Jika `None`, sigma dihitung secara otomatis.

mu (`float`, *opsional*) : Menentukan jumlah pergeseran yang diterapkan pada sigmas saat melakukan pergeseran langkah waktu yang bergantung pada resolusi.

timesteps (`list[float]`, *opsional*) : Nilai kustom untuk timesteps yang akan digunakan untuk setiap langkah difusi. Jika `None`, timesteps dihitung secara otomatis.

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

#### langkah[[diffusers.FlowMatchEulerDiscreteScheduler.step]]

```python
step(model_output: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], sample: FloatTensor, s_churn: float = 0.0, s_tmin: float = 0.0, s_tmax: float = inf, s_noise: float = 1.0, generator: typing.Optional[torch.Generator] = None, per_token_timesteps: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```

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

**Parameter:**

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

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

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

s_churn (`float`) --

s_tmin  (`float`) --

s_tmax (`float`) --

s_noise (`float`, defaultnya 1.0) : Faktor penskalaan untuk noise yang ditambahkan ke sampel.

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

per_token_timesteps (`torch.Tensor`, *opsional*) : Timesteps untuk setiap token dalam sampel.

return_dict (`bool`, defaultnya `True`) : Apakah akan mengembalikan `FlowMatchEulerDiscreteSchedulerOutput` atau tuple.

**Mengembalikan:** `FlowMatchEulerDiscreteSchedulerOutput` atau `tuple`

Jika `True`, `FlowMatchEulerDiscreteSchedulerOutput` yang dikembalikan, selain itu sebuah tuple yang 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).

#### stretch_shift_to_terminal[[diffusers.FlowMatchEulerDiscreteScheduler.stretch_shift_to_terminal]]

```python
stretch_shift_to_terminal(t: Tensor)
```

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

**Parameter:**

t (`torch.Tensor`) : Tensor berisi timestep yang akan diregangkan dan digeser.

**Mengembalikan:** `torch.Tensor`

Tensor dari timestep yang disesuaikan sehingga nilai akhirnya sama dengan `self.config.shift_terminal`.

Melakukan peregangan dan pergeseran pada jadwal timestep untuk memastikan bahwa jadwal tersebut berakhir pada nilai konfigurasi `shift_terminal` yang telah diatur.

Referensi: https://github.com/Lightricks/LTX-Video/blob/a01a171f8fe3d99dce2728d60a73fecf4d4238ae/ltx_video/schedulers/rf.py#L51

#### time_shift[[diffusers.FlowMatchEulerDiscreteScheduler.time_shift]]

```python
time_shift(mu: float, sigma: float, t: Tensor)
```

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

**Parameter:**

mu (`float`) : Parameter mu untuk pergeseran waktu.

sigma (`float`) : Parameter sigma untuk pergeseran waktu.

t (`torch.Tensor`) : Langkah-langkah waktu (timesteps) input.

**Mengembalikan:** `torch.Tensor`

Langkah-langkah waktu yang digeser.

Terapkan pergeseran waktu ke sigmas.

