Diffusers documentation

MiniMaxH3Scheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMaxH3Scheduler

MiniMaxH3Scheduler é o scheduler Euler de fluxo retificado (eta = 0) com um deslocamento exponencial de sigma usado por MiniMax-H3, sigma' = s * sigma / (1 + (s - 1) * sigma).

Os pipelines do MiniMax-H3 registram dois deles, porque os latentes de vídeo e de áudio seguem dois agendamentos diferentes dentro de uma única chamada do transformer por passo: scheduler carrega o agendamento de vídeo (shift=12.0 nos checkpoints liberados) e audio_scheduler o de áudio (shift=3.0).

MiniMaxH3Scheduler

classe diffusers.MiniMaxH3Scheduler

< >

( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = Noneeuler_update_form: str = 'blend' )

Parâmetros

  • shift (float, padrão 12.0) — Deslocamento exponencial aplicado à grade de sigma, sigma' = s*sigma / (1 + (s-1)*sigma). Os checkpoints lançados usam 12.0 para latentes de vídeo e 3.0 para latentes de áudio.
  • stochastic_sampling (bool, padrão False) — Substitui a mistura de Euler por uma atualização de re-ruído: prevê a amostra limpa e, em seguida, aplica re-ruído até o próximo sigma com ruído novo. Os adaptadores de poucas etapas do Pika H3 Flex foram treinados para essa atualização; os checkpoints base não foram.
  • shift_provided_sigmas (bool, opcional) — Se os sigmas explícitos passados para set_timesteps() são uma grade base que o scheduler desloca, como sua grade linspace, ou um agendamento finalizado tomado literalmente. Se não definido, significa literalmente com um aviso de depreciação; o padrão se torna True na 0.44.0.
  • euler_update_form (str, padrão "blend") — Como a atualização de Euler é avaliada. "blend" é a mistura x_t / x0 x_next = r*x_t + (1 - r)*x0; "velocity" é x_next = x_t + (sigma - sigma_next) * v, em float32. São a mesma atualização e diferem apenas no arredondamento em float32; o MiniMax-H3-Image foi destilado com a forma de velocidade.

Agendador Euler de fluxo retificado (eta = 0) com um deslocamento exponencial de sigma, conforme utilizado pelo MiniMax-H3.

index_for_timestep

< >

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

Parâmetros

  • timestep (float ou torch.Tensor) — Um valor obtido de self.timesteps. O agendamento é estritamente crescente em t, portanto a correspondência é única.

Retorna

int

O índice de timestep.

Mapeia um valor de timestep para seu índice na agenda.

scale_noise

< >

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

Parâmetros

  • sample (torch.FloatTensor) — A amostra limpa x_0.
  • timestep (float ou torch.FloatTensor) — O tempo alvo em [0, 1]; 1 retorna sample inalterado.
  • noise (torch.FloatTensor) — O ruído a ser misturado.

Retorna

torch.FloatTensor

A amostra com ruído.

Processo de propagação do fluxo retificado, na convenção de t do MiniMax-H3: x_t = t*x_0 + (1 - t)*noise.

MiniMax-H3 usa isso para adicionar ruído às suas âncoras de condicionamento, onde t é o nível noise_aug em vez de uma entrada do agendamento, portanto timestep é tomado pelo valor de face e não é consultado em self.timesteps.

set_begin_index

< >

( begin_index: int = 0 )

Parâmetros

  • begin_index (int, padrão 0) — O índice inicial do agendador.

Define o índice inicial para o agendador.

set_shift

< >

( shift: float )

Parâmetros

  • shift (float) — O deslocamento exponencial a ser usado para o próximo agendamento.

Substitui o deslocamento de sigma configurado; chame antes de set_timesteps().

MiniMax-H3 expõe isso por solicitação como flow_shift (vídeo) / audio_flow_shift (áudio).

set_timesteps

< >

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

Parâmetros

  • num_inference_steps (int, opcional) — Número de pontos da grade de sigma, incluindo o terminal 0. Ignorado quando sigmas é fornecido.
  • device (str ou torch.device, opcional) — Dispositivo para o qual os tensores do agendamento são movidos. A própria grade é sempre construída na CPU em float32, de modo que o agendamento não dependa do acelerador.
  • sigmas (list[float] ou torch.Tensor, opcional) — Uma grade explícita, estritamente decrescente e terminando em 0.0. Com shift_provided_sigmas=True, é uma grade base em [0, 1] que passa pelo shift como a grade linspace; caso contrário, é usada literalmente (padrão obsoleto).

Construa o agendamento de sigma / timestep.

A grade é linspace(1, 0, num_inference_steps) submetida ao deslocamento exponencial, com duplicados consecutivos colapsados, ou os sigmas explícitos, também deslocados quando shift_provided_sigmas está definido. O terminal 0 já faz parte da grade — o deslocamento mapeia 0 exatamente para 0 — de modo que o agendamento mantém num_inference_steps sigmas e dirige num_inference_steps - 1 avaliações do modelo, expostas como self.timesteps = 1 - sigmas[:-1].

etapa

< >

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

Parâmetros

  • model_output (torch.FloatTensor) — A previsão de velocidade do transformer no timestep.
  • timestep (float ou torch.FloatTensor) — O timestep atual, um dos self.timesteps (portanto, timestep == 1 - sigma).
  • sample (torch.FloatTensor) — A amostra atual x_t.
  • generator (torch.Generator, opcional) — O gerador do qual o novo ruído é extraído com stochastic_sampling; não utilizado caso contrário.
  • return_dict (bool, padrão True) — Se deve retornar um MiniMaxH3SchedulerOutput em vez de uma tupla simples.

Retorna

MiniMaxH3SchedulerOutput ou tuple

a amostra para a próxima etapa.

Faça um passo de Euler (eta = 0) ou um passo de re-ruído com stochastic_sampling.

A saída do modelo é uma velocidade em direção aos dados, portanto a estimativa desruída é x0 = x_t + (1 - t) * v — observe o +, o oposto da convenção usual de flow-match. A atualização é então a mistura x_next = r*x_t + (1 - r)*x0 com r = sigma_next / sigma, avaliada em float32 para amostras de meia precisão. Com stochastic_sampling, a atualização é x_next = (1 - sigma_next) * x0 + sigma_next * noise com ruído novo de generator, tudo em float32, de modo que o último passo (sigma_next = 0) retorna x0. Com euler_update_form="velocity", a mesma atualização de Euler é avaliada como x_next = x_t + (sigma - sigma_next) * v em float32.

MiniMaxH3SchedulerOutput

classe diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput

< >

( prev_sample: FloatTensor )

Parâmetros

  • prev_sample (torch.FloatTensor) — Amostra calculada x_{t+1} para o próximo passo do loop de desruidamento.

Classe de saída para a saída da função step do agendador.

Update on GitHub