Buckets:
FlowMapEulerDiscreteScheduler
FlowMapEulerDiscreteScheduler est un échantillonneur de type Euler conçu pour les modèles de diffusion distillés par flow-map. Les modèles flow-map apprennent des transitions sur des intervalles arbitraires $\mathbf{z}_t \to \mathbf{z}_r$, plutôt que la correspondance fixe $\mathbf{z}_t \to \mathbf{z}_0$ des modèles de cohérence. Les deux extrémités de la étape sont fournies par l'appelant, ce qui permet un échantillonnage à nombre de pas arbitraire : un seul point de contrôle distillé peut être évalué avec 1, 2, 4, 8, 16... NFE sans réentraînement.
Le planificateur a été introduit dans AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation et est fourni avec les intégrations AnyFlowPipeline et AnyFlowFARPipeline, mais il n'est pas spécifique à AnyFlow — tout point de contrôle distillé par carte de flux peut l'utiliser.
FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler(num_train_timesteps: int = 1000, shift: float = 1.0)
Paramètres :
num_train_timesteps (int, par défaut 1000) : Le nombre d'étapes de diffusion utilisées pour entraîner le modèle de carte de flux sous-jacent.
shift (float, valeur par défaut 1.0) : Décalage multiplicatif appliqué à l'échelle des pas de temps lors de l'inférence. shift=1.0 correspond à l'identité ; les valeurs supérieures à 1.0 déplacent l'échelle vers un débruitage plus important aux étapes ultérieures (par exemple, shift=5 correspond à la valeur par défaut de Wan2.1).
Échantillonneur de type Euler pour les modèles de diffusion distillés par carte de flux.
Les modèles Flow-map apprennent des transitions sur des intervalles arbitraires plutôt que la correspondance fixe des modèles de cohérence, si bien qu'un point de contrôle distillé unique peut être évalué avec 1, 2, 4, 8, ... NFE sans réentraînement. La méthode step fait avancer l'échantillon de timestep à r_timestep le long de la vitesse prédite.
Introduit dans AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation par Yuchao Gu, Guian Fang et al.
Ce planificateur hérite de [SchedulerMixin] et de [ConfigMixin]. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les planificateurs (chargement, sauvegarde, etc.).
apply_shift[[diffusers.FlowMapEulerDiscreteScheduler.apply_shift]]
apply_shift(sigmas: Tensor)
Appliquer la transformation de décalage configurée à un tenseur sigma.
index_for_timestep[[diffusers.FlowMapEulerDiscreteScheduler.index_for_timestep]]
index_for_timestep(timestep: typing.Union[float, torch.FloatTensor])
Retourne l'index de timestep sur le planning actuel, ou None s'il est hors planning.
La recherche est effectuée par rapport à self.timesteps avec une petite tolérance fp. Elle sert à récupérer le sigma correspondant sans supposer la relation linéaire timesteps = sigmas * num_train_timesteps — de cette façon, un calendrier personnalisé (par exemple un décalage non linéaire, des timesteps définis manuellement) est toujours résolu correctement.
scale_model_input[[diffusers.FlowMapEulerDiscreteScheduler.scale_model_input]]
scale_model_input(sample: Tensor, *args, **kwargs)
Mise à l'échelle d'identité sans effet. Fournie pour la compatibilité de l'API avec d'autres planificateurs Diffusers.
scale_noise[[diffusers.FlowMapEulerDiscreteScheduler.scale_noise]]
scale_noise(sample: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], noise: typing.Optional[torch.FloatTensor] = None)
Interpoler linéairement sample vers noise en fonction de la valeur normalisée de timestep.
set_begin_index[[diffusers.FlowMapEulerDiscreteScheduler.set_begin_index]]
set_begin_index(begin_index: int = 0)
Définit l'index de début pour le planificateur. Les pipelines qui démarrent en cours de planification (par exemple image-to-image) appellent cette fonction entre set_timesteps et la première step pour ancrer le déroulement.
set_timesteps[[diffusers.FlowMapEulerDiscreteScheduler.set_timesteps]]
set_timesteps(num_inference_steps: typing.Optional[int] = None, device: typing.Union[str, torch.device] = None, sigmas: typing.Optional[typing.List[float]] = None, timesteps: typing.Optional[typing.List[float]] = None)
Paramètres :
num_inference_steps (int, optionnel) : Nombre d'étapes d'inférence. Si None, il faut passer sigmas ou timesteps.
device (str ou torch.device, facultatif) : Appareil cible pour self.sigmas / self.timesteps.
sigmas (List[float], facultatif) : Plan de sigma personnalisé de longueur num_inference_steps. Le sigma terminal 0 est ajouté automatiquement. Le shift configuré est appliqué par-dessus.
timesteps (List[float], facultatif) : Planification personnalisée des pas de temps de longueur num_inference_steps, dans les mêmes unités que self.timesteps (c'est-à-dire mise à l'échelle par num_train_timesteps). Convertie en sigmas en interne. Si sigmas et timesteps sont tous les deux fournis, leurs longueurs doivent correspondre.
Construire le calendrier des pas de temps d'inférence.
Gère en interne self.sigmas de longueur num_inference_steps + 1 (le décalage configuré appliqué par défaut à un linspace allant de 1.0 à 0.0) ; self.timesteps expose les num_inference_steps premiers sigmas mis à l'échelle par num_train_timesteps — c'est-à-dire un timestep par étape d'inférence, ce qui correspond à FlowMatchEulerDiscreteScheduler. Le sigma final (0) est l'extrémité r implicite de la dernière étape et est ajouté automatiquement lorsque sigmas / timesteps sont fournis par l'utilisateur.
étape[[diffusers.FlowMapEulerDiscreteScheduler.step]]
step(model_output: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], sample: FloatTensor, r_timestep: typing.Union[float, torch.FloatTensor, NoneType] = None, return_dict: bool = True)
Paramètres :
model_output (torch.Tensor) : Sortie directe du modèle flow-map (vitesse moyenne prédite).
timestep (float ou torch.Tensor) : Pas de temps source t dans les mêmes unités que self.timesteps.
sample (torch.Tensor) : Échantillon actuel .
r_timestep (float ou torch.Tensor, facultatif) : Pas de temps cible r. Par défaut, il s'agit du pas de temps suivant dans le planning lorsque la valeur est None ; passez une valeur explicite pour un échantillonnage à pas arbitraire. r_timestep == timestep est une opération sans effet.
return_dict (bool, par défaut True) : Indique s'il faut retourner un [FlowMapEulerDiscreteSchedulerOutput] (par défaut) ou un simple tuple.
Retourne : [FlowMapEulerDiscreteSchedulerOutput] ou tuple
Lorsque return_dict=True, renvoie un [FlowMapEulerDiscreteSchedulerOutput] dont prev_sample est . Sinon, renvoie un 1-tuple (prev_sample,).
Faites avancer sample de timestep à r_timestep en utilisant la vitesse prédite par le modèle.
Contrairement à un planificateur Euler standard, les deux extrémités de l'intervalle peuvent être fournies par l'appelant, ce qui permet un échantillonnage à nombre de pas arbitraire : un seul appel au modèle peut passer de t à toute cible r choisie (y compris r=0 pour une génération en une seule étape). Lorsque r_timestep est omis, il prend par défaut la prochaine étape du planificateur (correspondant à la sémantique de FlowMatchEulerDiscreteScheduler).
En interne, les sigmas source et cible sont récupérés en indexant self.sigmas via index_for_timestep plutôt qu’en divisant les timesteps d’entrée par num_train_timesteps, de sorte que tout planning dont la relation timestep / sigma est non linéaire (par exemple un décalage personnalisé) reste correct. Pour un r_timestep hors planning, le planificateur revient à r_timestep / num_train_timesteps afin que l’échantillonnage à n’importe quel pas en dehors du planning reste pris en charge.
Xet Storage Details
- Size:
- 9.67 kB
- Xet hash:
- 6e28f6d2b5325fd44fb20da3f481fec83bddf8bb968594d13e8b2a1c65cfa1fc
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.