Diffusers documentation
MiniMaxH3Scheduler
MiniMaxH3Scheduler
MiniMaxH3Scheduler est le planificateur Euler de flux rectifié (eta = 0) avec un décalage exponentiel de sigma utilisé par MiniMax-H3, sigma' = s * sigma / (1 + (s - 1) * sigma).
Les pipelines MiniMax-H3 enregistrent deux d’entre eux, car les latents vidéo et audio suivent deux calendriers distincts au sein d’un seul appel au transformateur par étape : scheduler porte le calendrier vidéo (shift=12.0 dans les points de contrôle publiés) et audio_scheduler le calendrier audio (shift=3.0).
MiniMaxH3Scheduler
classe diffusers.MiniMaxH3Scheduler
< source >( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = None )
Paramètres
- shift (
float, par défaut12.0) — Décalage exponentiel appliqué à la grille des sigmas,sigma' = s*sigma / (1 + (s-1)*sigma). Les points de contrôle publiés utilisent12.0pour les latents vidéo et3.0pour les latents audio. - stochastic_sampling (
bool, par défautFalse) — Remplace le mélange d’Euler par une mise à jour de re-bruitage : prédit l’échantillon propre, puis le re-bruit jusqu’au sigma suivant avec du bruit frais. Les adaptateurs Pika H3 Flex à peu d’étapes ont été entraînés pour cette mise à jour ; ce n’est pas le cas des points de contrôle de base. - shift_provided_sigmas (
bool, facultatif) — Indique si lessigmasexplicites passés à set_timesteps() constituent une grille de base que le planificateur décale, comme sa grillelinspace, ou un calendrier final utilisé tel quel. Si non défini, le calendrier est utilisé tel quel avec un avertissement de dépréciation ; la valeur par défaut devientTruedans la version 0.44.0.
Planificateur Euler de flux rectifié (eta = 0) avec un décalage exponentiel de sigma, tel que utilisé par MiniMax-H3.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor] ) → int
Associer une valeur de pas de temps à son index dans le calendrier.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: FloatTensor ) → torch.FloatTensor
Processus avant du flux rectifié, selon la convention t de MiniMax-H3 : x_t = t*x_0 + (1 - t)*noise.
MiniMax-H3 utilise cela pour ajouter du bruit à ses ancres de conditionnement, où t est le niveau noise_aug et non une entrée du planning, de sorte que timestep est pris à la lettre et n'est pas recherché dans self.timesteps.
set_begin_index
< source >( begin_index: int = 0 )
Définit l'index de début pour le planificateur.
set_shift
< source >( shift: float )
Remplace le décalage sigma configuré ; à appeler avant set_timesteps().
MiniMax-H3 expose cette valeur par requête sous la forme de flow_shift (vidéo) / 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 )
Paramètres
- num_inference_steps (
int, facultatif) — Nombre de points de la grille de sigma, le terminal0inclus. Ignoré lorsquesigmasest fourni. - device (
stroutorch.device, facultatif) — Appareil sur lequel les tenseurs du planning sont déplacés. La grille elle-même est toujours construite sur CPU en float32 afin que le planning ne dépende pas de l'accélérateur. - sigmas (
list[float]outorch.Tensor, facultatif) — Une grille explicite, strictement décroissante et se terminant à0.0. Avecshift_provided_sigmas=True, il s’agit d’une grille de base dans[0, 1]qui subit le décalage comme la grillelinspace; sinon, elle est utilisée telle quelle (défaut obsolète).
Construire le calendrier sigma / timestep.
La grille est linspace(1, 0, num_inference_steps) passée à travers le décalage exponentiel, avec les doublons consécutifs fusionnés, ou les sigmas explicites, décalés également lorsque shift_provided_sigmas est défini. Le 0 terminal fait déjà partie de la grille — le décalage mappe 0 exactement sur 0 — de sorte que le planning contient num_inference_steps sigmas et pilote num_inference_steps - 1 évaluations du modèle, exposées sous la forme self.timesteps = 1 - sigmas[:-1].
étape
< source >( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → MiniMaxH3SchedulerOutput or tuple
Paramètres
- model_output (
torch.FloatTensor) — Prédiction de la vitesse du transformer à l'instanttimestep. - timestep (
floatoutorch.FloatTensor) — L'étape temporelle actuelle, l'une des valeurs deself.timesteps(donctimestep == 1 - sigma). - sample (
torch.FloatTensor) — L'échantillon actuelx_t. - generator (
torch.Generator, facultatif) — Le générateur à partir duquel le bruit frais est tiré avecstochastic_sampling; inutilisé dans le cas contraire. - return_dict (
bool, par défautTrue) — Indique s'il faut retourner unMiniMaxH3SchedulerOutputplutôt qu'un simple tuple.
Retourne
MiniMaxH3SchedulerOutput ou tuple
l'échantillon pour l'étape suivante.
Effectuez une étape d'Euler (eta = 0) ou une étape de re-bruitage avec stochastic_sampling.
La sortie du modèle est une vitesse orientée vers les données, de sorte que l'estimation débruitée est x0 = x_t + (1 - t) * v — notez le +,
contrairement à la convention habituelle de flow-match. La mise à jour est ensuite le mélange x_next = r*x_t + (1 - r)*x0 avec r = sigma_next / sigma, évalué en float32 pour les échantillons en demi-précision. Avec stochastic_sampling, la
mise à jour est x_next = (1 - sigma_next) * x0 + sigma_next * noise avec du bruit frais issu de generator, le tout
en float32, de sorte que la dernière étape (sigma_next = 0) renvoie x0.
MiniMaxH3SchedulerOutput
classe diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput
< source >( prev_sample: FloatTensor )
Classe de sortie pour la sortie de la fonction step du planificateur.