Diffusers documentation

MiniMaxH3Scheduler

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

MiniMaxH3Scheduler

MiniMaxH3Scheduler — это планировщик rectified-flow Euler (eta = 0) с экспоненциальным сдвигом сигмы, используемый в MiniMax-H3: sigma' = s * sigma / (1 + (s - 1) * sigma).

Пайплайны MiniMax-H3 регистрируют два из них, поскольку латенты видео и аудио следуют по двум разным расписаниям внутри одного вызова трансформера на каждом шаге: scheduler несёт расписание для видео (shift=12.0 в выпущенных чекпоинтах), а audio_scheduler — для аудио (shift=3.0).

MiniMaxH3Scheduler

класс diffusers.MiniMaxH3Scheduler

< >

( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = None )

Параметры

  • shift (float, по умолчанию 12.0) — Экспоненциальный сдвиг, применяемый к сетке сигм, sigma' = s*sigma / (1 + (s-1)*sigma). В опубликованных чекпоинтах для латентов видео используется значение 12.0, а для латентов аудио — 3.0.
  • stochastic_sampling (bool, по умолчанию False) — Заменяет смешивание Эйлера обновлением с повторным шумом: предсказывает чистый образец, затем добавляет к нему новый шум до следующего сигмы. Адаптеры Pika H3 Flex для малых шагов обучались именно для этого обновления; базовые контрольные точки — нет.
  • shift_provided_sigmas (bool, необязательный) — Определяет, являются ли явно переданные в set_timesteps() sigmas базовой сеткой, которую планировщик сдвигает (аналогично его сетке linspace), или готовым расписанием, используемым без изменений. Если параметр не задан, значения применяются без изменений, но выводится предупреждение о предстоящем устаревании; начиная с версии 0.44.0 значением по умолчанию станет True.

Euler-планировщик rectified-flow (eta = 0) с экспоненциальным сдвигом сигмы, как используется в MiniMax-H3.

index_for_timestep

< >

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

Параметры

  • timestep (float или torch.Tensor) — Значение, взятое из self.timesteps. Расписание строго возрастает по t, поэтому совпадение единственно.

Возвращает

int

Индекс timestep.

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

scale_noise

< >

( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: FloatTensor ) → torch.FloatTensor

Параметры

  • sample (torch.FloatTensor) — Чистая выборка x_0.
  • timestep (float или torch.FloatTensor) — Целевое время в диапазоне [0, 1]; значение 1 возвращает sample без изменений.
  • noise (torch.FloatTensor) — Шум, который нужно смешать.

Возвращает

torch.FloatTensor

Образец с шумом.

Прямой процесс rectified-flow в конвенции t для MiniMax-H3: x_t = t*x_0 + (1 - t)*noise.

MiniMax-H3 использует это для добавления шума к своим опорным точкам условий, где t — это уровень noise_aug, а не запись расписания, поэтому timestep берётся как есть и не ищется в self.timesteps.

set_begin_index

< >

( begin_index: int = 0 )

Параметры

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

Устанавливает начальный индекс для планировщика.

set_shift

< >

( shift: float )

Параметры

  • shift (float) — Экспоненциальный сдвиг, используемый для следующего расписания.

Переопределяет настроенный сдвиг сигмы; вызывается перед set_timesteps().

MiniMax-H3 предоставляет этот параметр для каждого запроса как flow_shift (видео) / audio_flow_shift (аудио).

set_timesteps

< >

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

Параметры

  • num_inference_steps (int, необязательный) — Количество точек сетки сигм, включая конечную 0. Игнорируется, если задано sigmas.
  • device (str или torch.device, необязательный) — Устройство, на которое переносятся тензоры расписания. Сама сетка всегда строится на CPU в float32, чтобы расписание не зависело от ускорителя.
  • sigmas (list[float] или torch.Tensor, необязательный) — Явная сетка, строго убывающая и заканчивающаяся значением 0.0. При shift_provided_sigmas=True это базовая сетка в диапазоне [0, 1], которая проходит через сдвиг так же, как сетка linspace; в противном случае она используется как есть (устаревшее значение по умолчанию).

Постройте расписание сигма / временных шагов.

Сетка linspace(1, 0, num_inference_steps) проходит через экспоненциальный сдвиг, при этом последовательные дубликаты схлопываются, либо используется явная sigmas, которая также сдвигается, если задан shift_provided_sigmas. Конечное значение 0 уже входит в состав сетки — сдвиг отображает 0 точно в 0 — поэтому расписание содержит num_inference_steps сигм и управляет num_inference_steps - 1 оценками модели, которые представлены как self.timesteps = 1 - sigmas[:-1].

шаг

< >

( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → MiniMaxH3SchedulerOutput or tuple

Параметры

  • model_output (torch.FloatTensor) — Прогноз скорости трансформера на шаге timestep.
  • timestep (float или torch.FloatTensor) — Текущий шаг, один из self.timesteps (то есть timestep == 1 - sigma).
  • sample (torch.FloatTensor) — Текущая выборка x_t.
  • generator (torch.Generator, необязательный) — Генератор, из которого извлекается новый шум при stochastic_sampling; в остальных случаях не используется.
  • return_dict (bool, по умолчанию True) — Определяет, следует ли возвращать MiniMaxH3SchedulerOutput вместо обычного кортежа.

Возвращает

MiniMaxH3SchedulerOutput или tuple

пример для следующего шага.

Сделайте один шаг Эйлера (eta = 0) или один шаг повторного шумления с stochastic_sampling.

Вывод модели представляет собой скорость в пространстве данных, поэтому оценка после удаления шума равна x0 = x_t + (1 - t) * v — обратите внимание на знак +, который противоположен общепринятой конвенции flow-match. Далее обновление вычисляется как смешивание x_next = r*x_t + (1 - r)*x0, где r = sigma_next / sigma, при этом для образцов с половинной точностью вычисления выполняются в float32. При использовании stochastic_sampling обновление имеет вид x_next = (1 - sigma_next) * x0 + sigma_next * noise с новым шумом из generator, всё в float32, так что на последнем шаге (sigma_next = 0) возвращается x0.

MiniMaxH3SchedulerOutput

класс diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput

< >

( prev_sample: FloatTensor )

Параметры

  • prev_sample (torch.FloatTensor) — Вычисленная выборка x_{t+1} для следующего шага цикла денойзинга.

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

Update on GitHub