# FlowMatchEulerDiscreteScheduler

`FlowMatchEulerDiscreteScheduler` основан на сэмплировании flow-matching, представленном в [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)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L48)

**Параметры:**

num_train_timesteps (`int`, по умолчанию 1000) : Количество шагов диффузии для обучения модели.

shift (`float`, по умолчанию 1.0) : Сдвиг для расписания временных шагов.

use_dynamic_shifting (`bool`, по умолчанию False) : Нужно ли применять сдвиг временных шагов на лету в зависимости от разрешения изображения.

base_shift (`float`, по умолчанию 0.5) : Значение для стабилизации генерации изображений. Увеличение `base_shift` снижает вариативность, и изображение становится более согласованным с желаемым результатом.

max_shift (`float`, по умолчанию 1.15) : Допустимое изменение значений для латентных векторов. Увеличение `max_shift` способствует большему разнообразию, а изображение может стать более преувеличенным или стилизованным.

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 (`str`, по умолчанию "exponential") : тип динамического сдвига шагов по времени, зависящего от разрешения. Допустимые значения: "exponential" или "linear".

stochastic_sampling (`bool`, по умолчанию False) : Использовать ли стохастическую выборку.

Планировщик Эйлера.

Эта модель наследуется от [SchedulerMixin](/docs/diffusers/main/ru/api/schedulers/overview#diffusers.SchedulerMixin) и [ConfigMixin](/docs/diffusers/main/ru/api/configuration#diffusers.ConfigMixin). Общие методы, которые библиотека реализует для всех планировщиков, такие как загрузка и сохранение, описаны в документации суперкласса.

#### 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)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L393)

**Параметры:**

timestep (`float` или `torch.FloatTensor`) : шаг времени, для которого нужно найти индекс.

schedule_timesteps (`torch.FloatTensor`, *optional*) : Шаги расписания, по которым выполняется проверка. Если `None`, используются шаги планировщика.

**Возвращает:** `int`

Индекс шага времени.

Получить индекс для указанного шага.

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

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

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L188)

**Параметры:**

sample (`torch.FloatTensor`) : Входной образец.

timestep (`torch.FloatTensor`) : Текущий шаг в цепочке диффузии.

noise (`torch.FloatTensor`) : Тензор шума.

**Возвращает:** `torch.FloatTensor`

Масштабированный входной образец.

Прямой процесс в flow-matching

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

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

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L168)

**Параметры:**

begin_index (`int`, по умолчанию `0`) : Начальный индекс для планировщика.

Устанавливает начальный индекс для планировщика. Эта функция должна выполняться из конвейера перед инференсом.

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

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

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L178)

**Параметры:**

shift (`float`) : Значение сдвига, которое нужно установить.

Устанавливает значение сдвига для планировщика.

#### 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)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L283)

**Параметры:**

num_inference_steps (`int`, *необязательный*) : Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели.

device (`str` или `torch.device`, *необязательный*) : Устройство, на которое следует переместить шаги. Если `None`, шаги не перемещаются.

sigmas (`list[float]`, *optional*) : Пользовательские значения сигм, используемые для каждого шага диффузии. Если `None`, сигмы вычисляются автоматически.

mu (`float`, *optional*) : Определяет величину сдвига, применяемую к сигмам при выполнении сдвига временных шагов, зависящего от разрешения.

timesteps (`list[float]`, *optional*) : Пользовательские значения для временных шагов, используемые на каждом шаге диффузии. Если `None`, временные шаги вычисляются автоматически.

Устанавливает дискретные временные шаги, используемые для цепочки диффузии (выполняется перед инференсом).

#### шаг[[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)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L432)

**Параметры:**

model_output (`torch.FloatTensor`) : Прямой вывод из обученной диффузионной модели.

timestep (`float`) : Текущий дискретный шаг времени в цепочке диффузии.

sample (`torch.FloatTensor`) : Текущая инстанция сэмпла, созданная процессом диффузии.

s_churn (`float`) --

s_tmin  (`float`) --

s_tmax (`float`) --

s_noise (`float`, по умолчанию 1.0) : Коэффициент масштабирования шума, добавляемого к образцу.

generator (`torch.Generator`, *необязательный*) : генератор случайных чисел.

per_token_timesteps (`torch.Tensor`, *необязательный*) : Шаги времени для каждого токена в образце.

return_dict (`bool`, по умолчанию `True`) : Возвращать ли `FlowMatchEulerDiscreteSchedulerOutput` или кортеж.

**Возвращает:** `FlowMatchEulerDiscreteSchedulerOutput` или `tuple`

Если `True`, возвращается `FlowMatchEulerDiscreteSchedulerOutput`, иначе возвращается кортеж, первым элементом которого является тензор выборки.

Предскажите образец из предыдущего шага времени, обращая SDE. Эта функция распространяет процесс диффузии от выходов обученной модели (чаще всего — предсказанного шума).

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

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

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L262)

**Параметры:**

t (`torch.Tensor`) : тензор временных шагов, которые нужно растянуть и сдвинуть.

**Возвращает:** `torch.Tensor`

Тензор скорректированных шагов, у которого последнее значение равно `self.config.shift_terminal`.

Растягивает и сдвигает расписание временных шагов, чтобы обеспечить его завершение на заданном значении конфигурации `shift_terminal`.

Ссылка: 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)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L241)

**Параметры:**

mu (`float`) : Параметр mu для сдвига времени.

sigma (`float`) : Параметр sigma для сдвига времени.

t (`torch.Tensor`) : Входные временные шаги.

**Возвращает:** `torch.Tensor`

Сдвинутые по времени шаги.

Примените сдвиг по времени к сигмам.

