Diffusers documentation

EDMDPMSolverMultistepScheduler

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

EDMDPMSolverMultistepScheduler

EDMDPMSolverMultistepScheduler — это формулировка Карраса для DPMSolverMultistepScheduler, многошагового планировщика из статей DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps и DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models авторов Cheng Lu, Yuhao Zhou, Fan Bao, Jianfei Chen, Chongxuan Li и Jun Zhu.

DPMSolver (и улучшенная версия DPMSolver++) — это быстрый специализированный решатель высокого порядка для диффузионных ОДУ с гарантией порядка сходимости. На практике сэмплирование с помощью DPMSolver всего за 20 шагов позволяет получать образцы высокого качества, а при 10 шагах качество остаётся достаточно хорошим.

EDMDPMSolverMultistepScheduler

класс diffusers.EDMDPMSolverMultistepScheduler

< >

( sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras'num_train_timesteps: int = 1000prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon'rho: float = 7.0solver_order: int = 2thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0algorithm_type: typing.Literal['dpmsolver++', 'sde-dpmsolver++'] = 'dpmsolver++'solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint'lower_order_final: bool = Trueeuler_at_final: bool = Falsefinal_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

Параметры

  • sigma_min (float, необязательный, по умолчанию 0.002) — Минимальная величина шума в расписании сигм. В статье EDM [1] это значение было установлено в 0.002; разумный диапазон — [0, 10].
  • sigma_max (float, необязательный, по умолчанию 80.0) — Максимальная величина шума в расписании сигм. В статье EDM [1] это значение было установлено в 80.0; разумный диапазон — [0.2, 80.0].
  • sigma_data (float, необязательный, по умолчанию 0.5) — Стандартное отклонение распределения данных. В статье EDM [1] это значение установлено равным 0.5.
  • sigma_schedule (str, необязательный, по умолчанию karras) — Расписание сигм для вычисления sigmas. По умолчанию используется расписание, предложенное в статье EDM (https://huggingface.co/papers/2206.00364). Другое допустимое значение — “exponential”. Экспоненциальное расписание было включено в эту модель: https://huggingface.co/stabilityai/cosxl.
  • num_train_timesteps (int, по умолчанию 1000) — Количество шагов диффузии для обучения модели.
  • 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 paper).
  • rho (float, необязательный, по умолчанию 7.0) — Параметр rho в расписании сигм Karras. В статье EDM [1] он был установлен в 7.0.
  • solver_order (int, по умолчанию 2) — порядок DPMSolver, который может быть 1 или 2 или 3. Рекомендуется использовать solver_order=2 для управляемого сэмплирования, а solver_order=3 — для безусловного сэмплирования.
  • thresholding (bool, по умолчанию False) — Использовать ли метод «динамического порогового значения». Этот метод не подходит для моделей диффузии в латентном пространстве, таких как Stable Diffusion.
  • dynamic_thresholding_ratio (float, по умолчанию 0.995) — Коэффициент для метода динамического порогового значения. Действительно только при thresholding=True.
  • sample_max_value (float, по умолчанию 1.0) — Пороговое значение для динамического порогового срабатывания. Действительно только при thresholding=True и algorithm_type="dpmsolver++".
  • algorithm_type (str, по умолчанию dpmsolver++) — Тип алгоритма для решателя; может быть dpmsolver++ или sde-dpmsolver++. Тип dpmsolver++ реализует алгоритмы из статьи DPMSolver++. Рекомендуется использовать dpmsolver++ или sde-dpmsolver++ с solver_order=2 для направленного сэмплирования, как в Stable Diffusion.
  • solver_type (str, по умолчанию midpoint) — Тип решателя для решателя второго порядка; может быть midpoint или heun. Тип решателя незначительно влияет на качество выборки, особенно при малом числе шагов. Рекомендуется использовать решатели midpoint.
  • lower_order_final (bool, по умолчанию True) — Использовать ли решатели низшего порядка на последних шагах. Действительно только для < 15 шагов инференса. Это может стабилизировать сэмплирование DPMSolver для шагов < 15, особенно для шагов <= 10.
  • euler_at_final (bool, по умолчанию False) — Использовать ли метод Эйлера на последнем шаге. Это компромисс между численной стабильностью и детализацией. Это может стабилизировать сэмплинг SDE-варианта DPMSolver при малом количестве шагов инференса, но иногда приводит к размыванию.
  • final_sigmas_type (str, по умолчанию "zero") — Значение финального sigma для расписания шума в процессе сэмплирования. Если "sigma_min", финальное sigma совпадает с последним sigma в расписании обучения. Если zero, финальное sigma устанавливается в 0.

Реализует DPMSolverMultistepScheduler в формулировке EDM, представленной в работе Karras et al. 2022 [1]. EDMDPMSolverMultistepScheduler — это быстрый специализированный решатель высокого порядка для диффузионных ОДУ.

[1] Karras, Tero, et al. «Elucidating the Design Space of Diffusion-Based Generative Models». https://huggingface.co/papers/2206.00364

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

add_noise

< >

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

Параметры

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

Возвращает

torch.Tensor

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

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

convert_model_output

< >

( model_output: Tensorsample: Tensor ) → torch.Tensor

Параметры

  • model_output (torch.Tensor) — Прямой вывод из обученной диффузионной модели.
  • sample (torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии.

Возвращает

torch.Tensor

Вывод сконвертированной модели.

Преобразуйте выход модели в соответствующий тип, необходимый для алгоритма DPMSolver/DPMSolver++. DPM-Solver предназначен для дискретизации интеграла модели предсказания шума, а DPM-Solver++ — для дискретизации интеграла модели предсказания данных.

> Алгоритм и тип модели разделены. Вы можете использовать как DPMSolver, так и DPMSolver++ для моделей, предсказывающих шум, и моделей, предсказывающих данные.

dpm_solver_first_order_update

< >

( model_output: Tensorsample: Tensornoise: typing.Optional[torch.Tensor] = None ) → torch.Tensor

Параметры

  • model_output (torch.Tensor) — Прямой вывод из обученной диффузионной модели.
  • sample (torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии.
  • noise (torch.Tensor, необязательный) — Тензор шума, который нужно добавить к исходным образцам.

Возвращает

torch.Tensor

Тензор выборки на предыдущем шаге.

Один шаг для DPMSolver первого порядка (эквивалентен DDIM).

index_for_timestep

< >

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

Параметры

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

Возвращает

int

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

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

multistep_dpm_solver_second_order_update

< >

( model_output_list: typing.List[torch.Tensor]sample: Tensornoise: typing.Optional[torch.Tensor] = None ) → torch.Tensor

Параметры

  • model_output_list (list[torch.Tensor]) — Прямые выходы обученной диффузионной модели для текущего и последующих шагов.
  • sample (torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии.
  • noise (torch.Tensor, необязательный) — Тензор шума, который нужно добавить к исходным образцам.

Возвращает

torch.Tensor

Тензор выборки на предыдущем шаге.

Один шаг для двухшагового метода DPMSolver второго порядка.

multistep_dpm_solver_third_order_update

< >

( model_output_list: list[torch.Tensor]sample: Tensor ) → torch.Tensor

Параметры

  • model_output_list (list[torch.Tensor]) — Прямые выходы обученной диффузионной модели для текущего и последующих шагов.
  • sample (torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии.

Возвращает

torch.Tensor

Тензор выборки на предыдущем шаге.

Один шаг для многошагового DPMSolver третьего порядка.

precondition_inputs

< >

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

Параметры

  • sample (torch.Tensor) — Входной тензор выборки для предварительной обработки.
  • sigma (float или torch.Tensor) — Текущее значение сигмы (уровня шума).

Возвращает

torch.Tensor

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

Предварительно обработайте входной образец, масштабируя его в соответствии с формулировкой EDM.

precondition_noise

< >

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

Параметры

  • sigma (float или torch.Tensor) — Значение сигмы (уровня шума) для предварительной обработки.

Возвращает

torch.Tensor

Значение предобусловленного шума, вычисленное как 0.25 * log(sigma).

Предварительно обработайте уровень шума, применив логарифмическое преобразование.

precondition_outputs

< >

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

Параметры

  • sample (torch.Tensor) — Входной тензор выборки.
  • model_output (torch.Tensor) — Прямой вывод из обученной диффузионной модели.
  • sigma (float или torch.Tensor) — Текущее значение сигмы (уровня шума).

Возвращает

torch.Tensor

Образец после шумоподавления, вычисленный путём объединения skip-соединения и масштабирования вывода.

Предварительно обрабатывайте выходные модели в соответствии с формулировкой EDM.

scale_model_input

< >

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

Параметры

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

Возвращает

torch.Tensor

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

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

set_begin_index

< >

( begin_index: int = 0 )

Параметры

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

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

set_timesteps

< >

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

Параметры

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

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

шаг

< >

( model_output: Tensortimestep: typing.Union[int, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple

Параметры

  • model_output (torch.Tensor) — Прямой вывод из обученной диффузионной модели.
  • timestep (int) — Текущий дискретный шаг в цепочке диффузии.
  • sample (torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии.
  • generator (torch.Generator, необязательный) — Генератор случайных чисел.
  • return_dict (bool) — Возвращать ли SchedulerOutput или tuple.

Возвращает

SchedulerOutput или tuple

If return_dict is True, SchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

Предскажите образец из предыдущего шага времени, инвертируя SDE. Эта функция распространяет образец с помощью многошагового DPMSolver.

SchedulerOutput

класс diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

Параметры

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

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

Update on GitHub