Diffusers documentation

EDMDPMSolverMultistepScheduler

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