Diffusers documentation

EulerDiscreteScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

EulerDiscreteScheduler

Планировщик Эйлера (алгоритм 2) описан в статье Elucidating the Design Space of Diffusion-Based Generative Models авторов Karras et al. Это быстрый планировщик, который часто позволяет получать качественные результаты за 20–30 шагов. Планировщик основан на исходной реализации k-diffusion, созданной Katherine Crowson.

EulerDiscreteScheduler

класс diffusers.EulerDiscreteScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'interpolation_type: str = 'linear'use_karras_sigmas: bool | None = Falseuse_exponential_sigmas: bool | None = Falseuse_beta_sigmas: bool | None = Falsesigma_min: float | None = Nonesigma_max: float | None = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete'steps_offset: int = 0rescale_betas_zero_snr: bool = Falsefinal_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

Параметры

  • num_train_timesteps (int, по умолчанию 1000) — Количество шагов диффузии для обучения модели.
  • beta_start (float, по умолчанию 0.0001) — Начальное значение beta для вывода.
  • beta_end (float, по умолчанию 0.02) — Конечное значение beta.
  • beta_schedule (Literal["linear", "scaled_linear", "squaredcos_cap_v2"], по умолчанию "linear") — Расписание бета, отображающее диапазон значений бета в последовательность бета для шагов модели. Выберите одно из значений: "linear", "scaled_linear" или "squaredcos_cap_v2".
  • trained_betas (np.ndarray, необязательный) — Передайте массив betas непосредственно в конструктор, чтобы обойти beta_start и beta_end.
  • prediction_type (Literal["epsilon", "sample", "v_prediction"], 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 paper).
  • interpolation_type (Literal["linear", "log_linear"], по умолчанию "linear", необязательный) — Тип интерполяции для вычисления промежуточных сигм на шагах денойзинга планировщика. Должен быть одним из "linear" или "log_linear".
  • use_karras_sigmas (bool, необязательный, по умолчанию False) — Использовать ли Karras sigmas для определения размеров шагов в расписании шума в процессе выборки. Если True, значения сигм определяются согласно последовательности уровней шума {σi}.
  • use_exponential_sigmas (bool, необязательный, по умолчанию False) — Использовать ли экспоненциальные сигмы для размеров шагов в расписании шума во время процесса выборки.
  • use_beta_sigmas (bool, optional, defaults to False) — Whether to use beta sigmas for step sizes in the noise schedule during the sampling process. Refer to Beta Sampling is All You Need for more information.
  • sigma_min (float, необязательный) — Минимальное значение сигмы для расписания шума. Если не указано, по умолчанию используется последняя сигма в расписании.
  • sigma_max (float, необязательный) — Максимальное значение сигмы для расписания шума. Если не указано, по умолчанию используется первая сигма в расписании.
  • timestep_spacing (Literal["linspace", "leading", "trailing"], defaults to "linspace") — The way the timesteps should be scaled. Refer to Table 2 of the Common Diffusion Noise Schedules and Sample Steps are Flawed for more information.
  • timestep_type (Literal["discrete", "continuous"], по умолчанию "discrete") — Тип используемых временных шагов. Может быть "discrete" или "continuous".
  • steps_offset (int, по умолчанию 0) — Смещение, добавляемое к шагам инференса, как требуется некоторыми семействами моделей.
  • rescale_betas_zero_snr (bool, по умолчанию False) — Определяет, следует ли перемасштабировать беты для нулевого конечного SNR. Это позволяет модели генерировать очень яркие и тёмкие образцы, а не ограничиваться образцами со средней яркостью. Непосредственно связано с --offset_noise.
  • final_sigmas_type (Literal["zero", "sigma_min"], по умолчанию "zero") — Значение финального sigma для расписания шума в процессе сэмплирования. Если указано "sigma_min", финальное sigma совпадает с последним sigma в расписании обучения. Если указано "zero", финальное sigma устанавливается в 0.

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

Эта модель наследуется от SchedulerMixin и ConfigMixin. Общую документацию по методам, которые библиотека реализует для всех планировщиков (например, загрузка и сохранение), см. в документации суперкласса.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

Параметры

  • original_samples (torch.Tensor) — Исходные образцы, к которым будет добавлен шум.
  • noise (torch.Tensor) — Тензор шума, который нужно добавить к исходным образцам.
  • timesteps (torch.Tensor) — Шаги, на которых добавляется шум, определяющие уровень шума по расписанию.

Возвращает

torch.Tensor

Шумовые образцы с добавленным шумом, масштабированным в соответствии с расписанием шагов времени.

Добавьте шум к исходным образцам в соответствии с расписанием шума на указанных временных шагах.

get_velocity

< >

( sample: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

Параметры

  • sample (torch.Tensor) — Входной образец, для которого вычисляется скорость.
  • noise (torch.Tensor) — Тензор шума, соответствующий образцу.
  • timesteps (torch.Tensor) — Шаги, на которых вычисляется скорость.

Возвращает

torch.Tensor

Предсказание скорости, вычисляемое как sqrt(alpha_prod) * noise - sqrt(1 - alpha_prod) * sample.

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

Этот метод реализует предсказание скорости, используемое в моделях v-prediction, которые предсказывают линейную комбинацию выборки и шума.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

Параметры

  • timestep (float или torch.Tensor) — Значение шага, которое нужно найти в расписании.
  • schedule_timesteps (torch.Tensor, необязательный) — Расписание временных шагов, в котором выполняется поиск. Если None, используется self.timesteps.

Возвращает

int

Индекс шага времени в расписании. Для самого первого шага возвращает второй индекс, если существует несколько совпадений, чтобы избежать пропуска сигмы при начале с середины расписания (например, для image-to-image).

Найдите индекс заданного шага времени в расписании шагов времени.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

Параметры

  • sample (torch.Tensor) — Входной образец, подлежащий масштабированию.
  • timestep (float или torch.Tensor) — Текущий шаг в цепочке диффузии.

Возвращает

torch.Tensor

Масштабированный входной образец, делённый на (sigma**2 + 1) ** 0.5.

Обеспечивает совместимость с планировщиками, которым необходимо масштабировать входную данные модели денуазинга в зависимости от текущего шага. Масштабирует входные данные модели денуазинга с помощью (sigma**2 + 1) ** 0.5 для соответствия алгоритму Euler.

set_begin_index

< >

( begin_index: int = 0 )

Параметры

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

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

set_timesteps

< >

( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = Nonesigmas: list[float] | None = None )

Параметры

  • num_inference_steps (int, необязательный) — Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели. Если None, необходимо указать timesteps или sigmas.
  • device (str или torch.device, необязательный) — Устройство, на которое следует переместить шаги. Если None, шаги не перемещаются.
  • timesteps (list[int], необязательный) — Пользовательские шаги (timesteps) для поддержки произвольного расписания. Если None, шаги будут сгенерированы на основе атрибута timestep_spacing. Если передан timesteps, num_inference_steps и sigmas должны быть None, а атрибут timestep_spacing будет проигнорирован.
  • sigmas (list[float], необязательный) — Пользовательские сигмы, используемые для поддержки произвольного расписания шагов. Если None, шаги и сигмы будут сгенерированы на основе соответствующих атрибутов планировщика. Если переданы sigmas, num_inference_steps и timesteps должны быть None, а шаги будут сгенерированы на основе пользовательского расписания сигм.

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

шаг

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → EulerDiscreteSchedulerOutput or tuple

Параметры

  • model_output (torch.Tensor) — Прямой вывод из обученной диффузионной модели.
  • timestep (float или torch.Tensor) — Текущий дискретный шаг в цепочке диффузии.
  • sample (torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии.
  • s_churn (float, необязательный, по умолчанию 0.0) — Параметр стохастичности, управляющий количеством шума, добавляемого во время выборки. Большие значения увеличивают случайность.
  • s_tmin (float, необязательный, по умолчанию 0.0) — Минимальный порог шага для применения стохастичности. Шум добавляется только к шагам, превышающим это значение.
  • s_tmax (float, необязательный, по умолчанию inf) — Максимальный порог шага для применения стохастичности. Шум добавляется только к шагам, значения которых меньше этого порога.
  • s_noise (float, необязательный, по умолчанию 1.0) — Коэффициент масштабирования шума, добавляемого к образцу.
  • generator (torch.Generator, необязательный) — Генератор случайных чисел для воспроизводимой выборки.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, возвращать ли объект EulerDiscreteSchedulerOutput или кортеж.

Возвращает

EulerDiscreteSchedulerOutput или tuple

Если return_dict равно True, возвращается EulerDiscreteSchedulerOutput, иначе возвращается кортеж, где первый элемент — это тензор выборки, а второй — предсказанная исходная выборка.

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

EulerDiscreteSchedulerOutput

класс diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )

Параметры

  • prev_sample (torch.Tensor формы (batch_size, num_channels, height, width) для изображений) — Вычисленная выборка (x_{t-1}) предыдущего шага. prev_sample следует использовать как следующий вход модели в цикле шумоподавления.
  • pred_original_sample (torch.Tensor формы (batch_size, num_channels, height, width) для изображений) — Прогнозируемый денойзированный образец (x_{0}) на основе вывода модели на текущем шаге времени. pred_original_sample можно использовать для предпросмотра прогресса или для направленного генерирования.

Класс результата для вывода функции step планировщика.

Update on GitHub