Diffusers documentation
PNDMScheduler
PNDMScheduler
PNDMScheduler, или псевдочисленные методы для диффузионных моделей, использует более продвинутые техники интегрирования ОДУ, такие как метод Рунге-Кутты и линейный многошаговый метод. Исходная реализация доступна по адресу crowsonkb/k-diffusion.
PNDMScheduler
класс diffusers.PNDMScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneskip_prk_steps: bool = Falseset_alpha_to_one: bool = Falseprediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0 )
Параметры
- num_train_timesteps (
int, по умолчанию1000) — Количество шагов диффузии для обучения модели. - beta_start (
float, по умолчанию0.0001) — Начальное значениеbetaдля вывода. - beta_end (
float, по умолчанию0.02) — Конечное значениеbeta. - beta_schedule (
"linear","scaled_linear"или"squaredcos_cap_v2", по умолчанию"linear") — Расписание бета, отображающее диапазон значений бета в последовательность бета для шагов модели. - trained_betas (
np.ndarray, необязательный) — Передайте массив betas непосредственно в конструктор, чтобы обойтиbeta_startиbeta_end. - skip_prk_steps (
bool, по умолчаниюFalse) — Позволяет планировщику пропускать шаги метода Рунге–Кутты, которые, согласно оригинальной статье, необходимы перед шагами PLMS. - set_alpha_to_one (
bool, по умолчаниюFalse) — Каждый шаг диффузии использует значение произведения альф на этом шаге и на предыдущем. Для последнего шага предыдущего альфа нет. Если этот параметр установлен вTrue, произведение предыдущей альфы фиксируется в1, иначе используется значение альфы на шаге 0. - prediction_type (
"epsilon"или"v_prediction", по умолчанию"epsilon") — Тип предсказания функции планировщика; может бытьepsilon(предсказывает шум диффузионного процесса) илиv_prediction(см. раздел 2.4 статьи Imagen Video). - timestep_spacing (
"linspace","leading", or"trailing", 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. - steps_offset (
int, по умолчанию0) — Смещение, добавляемое к шагам инференса, как требуется некоторыми семействами моделей.
PNDMScheduler использует псевдочисленные методы для диффузионных моделей, такие как метод Рунге-Кутты и линейный многошаговый метод.
Эта модель наследуется от SchedulerMixin и ConfigMixin. Общую документацию по методам, которые библиотека реализует для всех планировщиков (например, загрузка и сохранение), см. в документации суперкласса.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Добавьте шум к исходным образцам в соответствии с величиной шума на каждом шаге (это процесс прямой диффузии).
scale_model_input
< source >( sample: Tensor*args**kwargs ) → torch.Tensor
Обеспечивает совместимость с планировщиками, которым необходимо масштабировать входную модель денуазинга в зависимости от текущего шага.
set_timesteps
< source >( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )
Устанавливает дискретные временные шаги, используемые для цепочки диффузии (выполняется перед инференсом).
шаг
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
Параметры
- model_output (
torch.Tensor) — Прямой вывод из обученной диффузионной модели. - timestep (
int) — Текущий дискретный шаг в цепочке диффузии. - sample (
torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии. - return_dict (
bool, по умолчаниюTrue) — Определяет, возвращать ли 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. Эта функция распространяет процесс диффузии от выходов обученной модели (чаще всего — предсказанного шума) и вызывает step_prk() или step_plms() в зависимости от внутренней переменной counter.
step_plms
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
Параметры
- model_output (
torch.Tensor) — Прямой вывод из обученной диффузионной модели. - timestep (
int) — Текущий дискретный шаг в цепочке диффузии. - sample (
torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии. - return_dict (
bool, по умолчаниюTrue) — Определяет, возвращать ли объект SchedulerOutput или кортеж.
Возвращает
SchedulerOutput или tuple
If return_dict is True, SchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
Предскажите образец из предыдущего шага времени, инвертируя SDE. Эта функция распространяет образец с помощью линейного многошагового метода. Она выполняет несколько проходов вперёд для приближённого вычисления решения.
step_prk
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
Параметры
- model_output (
torch.Tensor) — Прямой вывод из обученной диффузионной модели. - timestep (
int) — Текущий дискретный шаг в цепочке диффузии. - sample (
torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии. - return_dict (
bool, по умолчаниюTrue) — Определяет, возвращать ли объект SchedulerOutput или кортеж.
Возвращает
SchedulerOutput или tuple
If return_dict is True, SchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
Предскажите образец из предыдущего шага времени, обращая SDE. Эта функция распространяет образец с помощью метода Рунге-Кутты. Она выполняет четыре прямых прохода для приближения решения дифференциального уравнения.
SchedulerOutput
класс diffusers.schedulers.scheduling_utils.SchedulerOutput
< source >( prev_sample: Tensor )
Базовый класс для результата функции step планировщика.