Diffusers documentation

Многошаговый планировщик для модели латентной консистентности

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

and get access to the augmented documentation experience

to get started

Многошаговый планировщик для модели латентной консистентности

Обзор

Многошаговый и одношаговый планировщик (алгоритм 3), представленный вместе с моделями латентной согласованности в статье Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference авторов Simian Luo, Yiqin Tan, Longbo Huang, Jian Li и Hang Zhao. Этот планировщик должен уметь генерировать качественные образцы из LatentConsistencyModelPipeline за 1–8 шагов.

LCMScheduler

класс diffusers.LCMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'scaled_linear'trained_betas: numpy.ndarray | list[float] | None = Noneoriginal_inference_steps: int = 50clip_sample: bool = Falseclip_sample_range: float = 1.0set_alpha_to_one: bool = Truesteps_offset: int = 0prediction_type: str = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0timestep_spacing: str = 'leading'timestep_scaling: float = 10.0rescale_betas_zero_snr: bool = False )

Параметры

  • num_train_timesteps (int, по умолчанию 1000) — Количество шагов диффузии для обучения модели.
  • beta_start (float, по умолчанию 0.00085) — Начальное значение beta для вывода.
  • beta_end (float, по умолчанию 0.012) — Конечное значение beta.
  • beta_schedule (str, по умолчанию "scaled_linear") — Расписание бета, отображение диапазона бета в последовательность бета для шагов модели. Выберите одно из значений: linear, scaled_linear или squaredcos_cap_v2.
  • trained_betas (np.ndarray или list[float], необязательный) — Передайте массив betas непосредственно в конструктор, чтобы обойти beta_start и beta_end.
  • original_inference_steps (int, по умолчанию 50) — Количество шагов инференса по умолчанию, используемое для создания линейно распределённого расписания временных шагов, из которого в итоге мы берём num_inference_steps равномерно распределённых временных шагов для формирования итогового расписания.
  • clip_sample (bool, по умолчанию False) — Обрезает предсказанную выборку для численной стабильности.
  • 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") — 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).
  • 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 for more information.
  • timestep_scaling (float, по умолчанию 10.0) — коэффициент, на который умножаются шаги времени при вычислении граничных условий модели согласованности c_skip и c_out. Увеличение этого значения снижает ошибку аппроксимации (хотя при значении по умолчанию 10.0 ошибка аппроксимации уже достаточно мала).
  • rescale_betas_zero_snr (bool, по умолчанию False) — Определяет, следует ли перемасштабировать беты для нулевого конечного SNR. Это позволяет модели генерировать очень яркие и тёмкие образцы, а не ограничиваться образцами со средней яркостью. Непосредственно связано с --offset_noise.

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

Эта модель наследуется от SchedulerMixin и ConfigMixin. ~ConfigMixin отвечает за сохранение всех атрибутов конфигурации, передаваемых в функцию __init__ планировщика, например num_train_timesteps. К ним можно обратиться через scheduler.config.num_train_timesteps. SchedulerMixin предоставляет общие функции загрузки и сохранения с помощью функций SchedulerMixin.save_pretrained() и from_pretrained().

add_noise

< >

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

Параметры

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

Возвращает

torch.Tensor

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

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

get_scalings_for_boundary_condition_discrete

< >

( timestep: int ) → tuple[float, float]

Параметры

  • timestep (int) — Дискретный шаг времени, для которого вычисляются масштабные коэффициенты.

Возвращает

tuple[float, float]

Кортеж, содержащий c_skip (масштабирование для входного примера) и c_out (масштабирование для предсказанного обезшумленного примера).

Вычисляет масштабы граничных условий (c_skip и c_out) для заданного дискретного шага времени, как это используется в модели Latent Consistency Model.

get_velocity

< >

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

Параметры

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

Возвращает

torch.Tensor

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

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

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).

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

previous_timestep

< >

( timestep ) → int or torch.Tensor

Параметры

  • timestep (int) — Текущий шаг.

Возвращает

int или torch.Tensor

Предыдущий шаг по времени.

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

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Параметры

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

Возвращает

torch.Tensor

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

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

set_begin_index

< >

( begin_index: int = 0 )

Параметры

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

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

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = Noneoriginal_inference_steps: int | None = Nonetimesteps: list[int] | None = Nonestrength: float = 1.0 ) → None

Параметры

  • num_inference_steps (int, необязательный) — Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели. Если используется, timesteps должно быть None.
  • device (str или torch.device, необязательный) — Устройство, на которое следует переместить шаги. Если None, шаги не перемещаются.
  • original_inference_steps (int, необязательный) — Исходное количество шагов инференса, которое будет использовано для создания линейно распределённого расписания временных шагов (отличного от стандартной реализации diffusers). Затем из этого расписания будут взяты num_inference_steps временных шагов, равномерно распределённых по индексам, и они будут использованы в качестве итогового расписания временных шагов. Если значение не задано, по умолчанию используется атрибут original_inference_steps.
  • timesteps (list[int], необязательный) — Пользовательские шаги (timesteps), используемые для поддержки произвольного интервала между ними. Если None, используется стандартная стратегия равномерного распределения шагов по расписанию обучения/дистилляции. Если передан timesteps, num_inference_steps должен быть None.
  • strength (float, по умолчанию 1.0) — Коэффициент силы, используемый для генерации частичного расписания временных шагов (например, для image-to-image). Значение 1.0 использует полное расписание.

Возвращает

None

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

шаг

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → LCMSchedulerOutput or tuple

Параметры

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

Возвращает

LCMSchedulerOutput или tuple

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

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

Update on GitHub