Diffusers documentation
MiniMaxH3Scheduler
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
< source >( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = None )
Parâmetros
- shift (
float, padrão12.0) — Deslocamento exponencial aplicado à grade de sigma,sigma' = s*sigma / (1 + (s-1)*sigma). Os checkpoints lançados usam12.0para latentes de vídeo e3.0para latentes de áudio. - stochastic_sampling (
bool, padrãoFalse) — 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 ossigmasexplícitos passados para set_timesteps() são uma grade base que o scheduler desloca, como sua gradelinspace, ou um agendamento finalizado tomado literalmente. Se não definido, significa literalmente com um aviso de depreciação; o padrão se tornaTruena 0.44.0.
Agendador Euler de fluxo retificado (eta = 0) com um deslocamento exponencial de sigma, conforme utilizado pelo MiniMax-H3.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor] ) → int
Mapeia um valor de timestep para seu índice na agenda.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: FloatTensor ) → torch.FloatTensor
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
< source >( begin_index: int = 0 )
Define o índice inicial para o agendador.
set_shift
< source >( shift: float )
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
< source >( 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 terminal0. Ignorado quandosigmasé fornecido. - device (
stroutorch.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]outorch.Tensor, opcional) — Uma grade explícita, estritamente decrescente e terminando em0.0. Comshift_provided_sigmas=True, é uma grade base em[0, 1]que passa pelo shift como a gradelinspace; 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
< source >( 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 notimestep. - timestep (
floatoutorch.FloatTensor) — O timestep atual, um dosself.timesteps(portanto,timestep == 1 - sigma). - sample (
torch.FloatTensor) — A amostra atualx_t. - generator (
torch.Generator, opcional) — O gerador do qual o novo ruído é extraído comstochastic_sampling; não utilizado caso contrário. - return_dict (
bool, padrãoTrue) — Se deve retornar umMiniMaxH3SchedulerOutputem 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.
MiniMaxH3SchedulerOutput
classe diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput
< source >( prev_sample: FloatTensor )
Classe de saída para a saída da função step do agendador.