# CogVideoXDDIMScheduler

`CogVideoXDDIMScheduler` основан на [Denoising Diffusion Implicit Models](https://huggingface.co/papers/2010.02502) и предназначен специально для моделей CogVideoX.

## CogVideoXDDIMScheduler[[diffusers.CogVideoXDDIMScheduler]]

#### diffusers.CogVideoXDDIMScheduler[[diffusers.CogVideoXDDIMScheduler]]

```python
diffusers.CogVideoXDDIMScheduler(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['linspace', 'leading', 'trailing'] = 'leading', rescale_betas_zero_snr: bool = False, snr_shift_scale: float = 3.0)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L133)

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

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

beta_start (`float`, по умолчанию 0.00085) : начальное значение `beta` для вывода.

beta_end (`float`, по умолчанию 0.0120) : Итоговое значение `beta`.

beta_schedule (`str`, по умолчанию `"scaled_linear"`) : Расписание бета, отображающее диапазон значений бета в последовательность бета для шагов модели. Выберите одно из значений: `linear`, `scaled_linear` или `squaredcos_cap_v2`.

trained_betas (`np.ndarray`, *необязательный*) : Передайте массив бета непосредственно в конструктор, чтобы обойти `beta_start` и `beta_end`.

clip_sample (`bool`, по умолчанию `True`) : Обрезает предсказанную выборку для обеспечения численной стабильности.

clip_sample_range (`float`, по умолчанию 1.0) : Максимальная величина для обрезки выборок. Действительно только при `clip_sample=True`.

set_alpha_to_one (`bool`, по умолчанию `True`) : Каждый шаг диффузии использует значение произведения альф на этом шаге и на предыдущем. Для последнего шага предыдущего альфа не существует. Если этот параметр установлен в `True`, произведение предыдущего альфа фиксируется в `1`, в противном случае используется значение альфа на шаге 0.

steps_offset (`int`, по умолчанию 0) : Смещение, добавляемое к шагам инференса, как требуется некоторыми семействами моделей.

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`, по умолчанию `False`) : Использовать ли метод «динамического порога». Этот метод не подходит для моделей диффузии в латентном пространстве, таких как Stable Diffusion.

dynamic_thresholding_ratio (`float`, по умолчанию 0.995) : Коэффициент для метода динамического порогового значения. Действительно только при `thresholding=True`.

sample_max_value (`float`, по умолчанию 1.0) : Пороговое значение для динамического порогового отсечения. Действительно только при `thresholding=True`.

timestep_spacing (`str`, defaults to `"leading"`) : The way the timesteps should be scaled. Refer to Table 2 of the [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) for more information.

rescale_betas_zero_snr (`bool`, по умолчанию `False`) : Нужно ли перемасштабировать беты для нулевого конечного SNR. Это позволяет модели генерировать очень яркие и тёмные образцы, а не ограничиваться образцами со средней яркостью. Непосредственно связано с [`--offset_noise`](https://github.com/huggingface/diffusers/blob/74fd735eb073eb1d774b1ab4154a0876eb82f055/examples/dreambooth/train_dreambooth.py#L506).

snr_shift_scale (`float`, по умолчанию 3.0) : Масштаб сдвига для SNR.

`DDIMScheduler` расширяет процедуру денойзинга, предложенную в вероятностных моделях диффузионного денойзинга (DDPM), с помощью немарковского управления.

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

#### add_noise[[diffusers.CogVideoXDDIMScheduler.add_noise]]

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

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L428)

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

original_samples (`torch.Tensor`) : исходные образцы, к которым будет добавлен шум.

noise (`torch.Tensor`) : Шум, который нужно добавить к образцам.

timesteps (`torch.IntTensor`) : Шаги, указывающие уровень шума для каждого примера.

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

Шумные образцы.

Добавьте шум к исходным образцам в соответствии с величиной шума на каждом шаге (это процесс прямой диффузии).

#### get_velocity[[diffusers.CogVideoXDDIMScheduler.get_velocity]]

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

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L471)

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

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

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

timesteps (`torch.IntTensor`) : Шаги для вычисления скорости.

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

Вычисленная скорость.

Вычислите предсказание скорости из выборки и шума согласно формуле скорости.

#### scale_model_input[[diffusers.CogVideoXDDIMScheduler.scale_model_input]]

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

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L260)

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

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

timestep (`int`, *необязательный*) : Текущий шаг в цепочке диффузии.

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

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

Обеспечивает совместимость с планировщиками, которым необходимо масштабировать входную модель денуазинга в зависимости от текущего шага.

#### set_timesteps[[diffusers.CogVideoXDDIMScheduler.set_timesteps]]

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

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L277)

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

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

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

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

#### шаг[[diffusers.CogVideoXDDIMScheduler.step]]

```python
step(model_output: Tensor, timestep: 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 = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_ddim_cogvideox.py#L328)

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

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

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

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

eta (`float`) : Вес шума для добавляемого шума на шаге диффузии.

use_clipped_model_output (`bool`, по умолчанию `False`) : Если `True`, вычисляет «скорректированный» `model_output` из обрезанного предсказанного исходного образца. Это необходимо, так как предсказанный исходный образец обрезается до [-1, 1], когда `self.config.clip_sample` равно `True`. Если обрезка не выполнялась, «скорректированный» `model_output` совпадал бы с переданным на вход, и `use_clipped_model_output` не оказывает влияния.

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

variance_noise (`torch.Tensor`) : Альтернатива генерации шума с помощью `generator` путём прямого предоставления шума для дисперсии. Полезно для методов, таких как `CycleDiffusion`.

return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли [DDIMSchedulerOutput](/docs/diffusers/v0.43.0/ru/api/schedulers/ddim#diffusers.schedulers.scheduling_ddim.DDIMSchedulerOutput) или `tuple`.

**Возвращает:** [DDIMSchedulerOutput](/docs/diffusers/v0.43.0/ru/api/schedulers/ddim#diffusers.schedulers.scheduling_ddim.DDIMSchedulerOutput) или `tuple`

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

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

