Diffusers documentation
MiniMaxH3Scheduler
MiniMaxH3Scheduler
MiniMaxH3Scheduler es el planificador Euler de flujo rectificado (eta = 0) con un desplazamiento exponencial de sigma utilizado por MiniMax-H3, sigma' = s * sigma / (1 + (s - 1) * sigma).
Los pipelines de MiniMax-H3 registran dos de ellos, porque los latentes de video y de audio siguen dos agendas diferentes dentro de una sola llamada al transformer por paso: scheduler lleva la agenda de video (shift=12.0 en los puntos de control publicados) y audio_scheduler la de audio (shift=3.0).
MiniMaxH3Scheduler
clase diffusers.MiniMaxH3Scheduler
< source >( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = None )
Parámetros
- shift (
float, valor predeterminado12.0) — Desplazamiento exponencial aplicado a la cuadrícula de sigma,sigma' = s*sigma / (1 + (s-1)*sigma). Los puntos de control publicados utilizan12.0para los latentes de video y3.0para los latentes de audio. - stochastic_sampling (
bool, por defectoFalse) — Sustituye la mezcla de Euler por una actualización de re-ruído: predice la muestra limpia y luego la vuelve a ruidar hasta la siguiente sigma con ruido nuevo. Los adaptadores de pocos pasos de Pika H3 Flex se entrenaron para esta actualización; los puntos de control base no. - shift_provided_sigmas (
bool, opcional) — Indica si lossigmasexplícitos pasados a set_timesteps() son una cuadrícula base que el programador desplaza, como su cuadrículalinspace, o un programa terminado que se toma tal cual. Si no se establece, se toma tal cual con una advertencia de obsolescencia; el valor predeterminado seráTrueen 0.44.0.
Planificador Euler de flujo rectificado (eta = 0) con un desplazamiento exponencial de sigma, tal como lo utiliza MiniMax-H3.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor] ) → int
Mapea un valor de paso de tiempo a su índice en la programación.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: FloatTensor ) → torch.FloatTensor
Proceso de avance de flujo rectificado, según la convención de t de MiniMax-H3: x_t = t*x_0 + (1 - t)*noise.
MiniMax-H3 utiliza esto para añadir ruido a sus anclas de condicionamiento, donde t es el nivel noise_aug y no una entrada del programa, por lo que timestep se toma tal cual y no se busca en self.timesteps.
set_begin_index
< source >( begin_index: int = 0 )
Establece el índice inicial del programador.
set_shift
< source >( shift: float )
Anula el desplazamiento de sigma configurado; llámalo antes de set_timesteps().
MiniMax-H3 expone esto por solicitud como flow_shift (vídeo) / audio_flow_shift (audio).
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 puntos de la cuadrícula de sigma, incluido el terminal0. Se ignora cuando se proporcionasigmas. - device (
strotorch.device, opcional) — Dispositivo al que se mueven los tensores de la programación. La cuadrícula en sí siempre se construye en CPU en float32 para que la programación no dependa del acelerador. - sigmas (
list[float]otorch.Tensor, opcional) — Una cuadrícula explícita, estrictamente decreciente y que termina en0.0. Conshift_provided_sigmas=True, es una cuadrícula base en[0, 1]que pasa por el desplazamiento igual que la cuadrículalinspace; de lo contrario, se utiliza tal cual (valor predeterminado obsoleto).
Construir la programación de sigma / timestep.
La cuadrícula es linspace(1, 0, num_inference_steps) pasada a través del desplazamiento exponencial, con los duplicados consecutivos colapsados, o los sigmas explícitos, desplazados también cuando se establece shift_provided_sigmas. El 0 terminal ya forma parte de la cuadrícula: el desplazamiento mapea 0 exactamente a 0, por lo que la programación mantiene num_inference_steps sigmas y dirige num_inference_steps - 1 evaluaciones del modelo, expuestas como self.timesteps = 1 - sigmas[:-1].
paso
< 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) — La predicción de velocidad del transformer entimestep. - timestep (
floatotorch.FloatTensor) — El paso de tiempo actual, uno deself.timesteps(por lo quetimestep == 1 - sigma). - sample (
torch.FloatTensor) — La muestra actualx_t. - generator (
torch.Generator, opcional) — El generador del que se extrae el ruido nuevo constochastic_sampling; no se utiliza en caso contrario. - return_dict (
bool, por defectoTrue) — Si se debe devolver unMiniMaxH3SchedulerOutputen lugar de una tupla simple.
Devuelve
MiniMaxH3SchedulerOutput o tuple
la muestra para el siguiente paso.
Realiza un paso de Euler (eta = 0) o un paso de re-ruido con stochastic_sampling.
La salida del modelo es una velocidad data-ward, por lo que la estimación desruidada es x0 = x_t + (1 - t) * v — fíjate en el +,
que es lo contrario de la convención habitual de flow-match. La actualización es entonces la mezcla x_next = r*x_t + (1 - r)*x0 con r = sigma_next / sigma, evaluada en float32 para muestras de media precisión. Con stochastic_sampling la
actualización es x_next = (1 - sigma_next) * x0 + sigma_next * noise con ruido nuevo de generator, todo
en float32, de modo que el último paso (sigma_next = 0) devuelve x0.
MiniMaxH3SchedulerOutput
clase diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput
< source >( prev_sample: FloatTensor )
Clase de salida para la función step del programador.