Diffusers documentation

PNDMScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PNDMScheduler

PNDMScheduler, ou méthodes numériques pseudo pour les modèles de diffusion, utilise des techniques d’intégration d’EDO plus avancées, telles que Runge-Kutta et la méthode linéaire à pas multiples. L’implémentation originale est disponible sur crowsonkb/k-diffusion.

PNDMScheduler

classe diffusers.PNDMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneskip_prk_steps: bool = Falseset_alpha_to_one: bool = Falseprediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0 )

Paramètres

  • num_train_timesteps (int, par défaut 1000) — Le nombre d'étapes de diffusion pour entraîner le modèle.
  • beta_start (float, par défaut 0.0001) — La valeur de départ de beta pour l'inférence.
  • beta_end (float, par défaut 0.02) — La valeur finale de beta.
  • beta_schedule ("linear", "scaled_linear" ou "squaredcos_cap_v2", par défaut "linear") — Le planning des bêtas, une correspondance entre une plage de bêtas et une séquence de bêtas pour faire avancer le modèle.
  • trained_betas (np.ndarray, facultatif) — Transmettez un tableau de betas directement au constructeur pour contourner beta_start et beta_end.
  • skip_prk_steps (bool, par défaut False) — Permet au planificateur d’ignorer les étapes de Runge-Kutta définies dans l’article original comme étant nécessaires avant les étapes PLMS.
  • set_alpha_to_one (bool, par défaut False) — Chaque étape de diffusion utilise la valeur du produit des alphas à cette étape et à l’étape précédente. Pour l’étape finale, il n’y a pas d’alpha précédent. Si cette option est True, le produit de l’alpha précédent est fixé à 1, sinon il utilise la valeur de l’alpha à l’étape 0.
  • prediction_type ("epsilon" ou "v_prediction", par défaut "epsilon") — Type de prédiction de la fonction du planificateur ; peut être epsilon (prédit le bruit du processus de diffusion) ou v_prediction (voir la section 2.4 de l’article Imagen Video).
  • timestep_spacing ("linspace", "leading" ou "trailing", par défaut "leading") — La manière dont les timesteps doivent être mis à l'échelle. Reportez-vous au tableau 2 de Common Diffusion Noise Schedules and Sample Steps are Flawed pour plus d'informations.
  • steps_offset (int, par défaut 0) — Un décalage ajouté aux étapes d'inférence, tel que requis par certaines familles de modèles.

PNDMScheduler utilise des méthodes numériques pseudo-numériques pour les modèles de diffusion, telles que Runge-Kutta et la méthode linéaire multi-étapes.

Ce modèle hérite de SchedulerMixin et ConfigMixin. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les planificateurs, telles que le chargement et l'enregistrement.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Paramètres

  • original_samples (torch.Tensor) — Les échantillons originaux auxquels du bruit sera ajouté.
  • noise (torch.Tensor) — Le bruit à ajouter aux échantillons.
  • timesteps (torch.IntTensor) — Les timesteps indiquant le niveau de bruit pour chaque échantillon.

Retourne

torch.Tensor

Les échantillons bruités.

Ajoutez du bruit aux échantillons d'origine en fonction de l'amplitude du bruit à chaque pas de temps (il s'agit du processus de diffusion avant).

scale_model_input

< >

( sample: Tensor*args**kwargs ) → torch.Tensor

Paramètres

  • sample (torch.Tensor) — L'échantillon d'entrée.

Retourne

torch.Tensor

Un échantillon d'entrée mis à l'échelle.

Assure l'interchangeabilité avec les planificateurs qui doivent mettre à l'échelle l'entrée du modèle de débruitage en fonction de l'étape temporelle actuelle.

set_timesteps

< >

( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )

Paramètres

  • num_inference_steps (int) — Le nombre d'étapes de diffusion utilisées lors de la génération d'échantillons avec un modèle pré-entraîné.
  • device (str ou torch.device, facultatif) — L'appareil vers lequel les timesteps doivent être déplacés. Si None, les timesteps ne sont pas déplacés.

Définit les pas de temps discrets utilisés pour la chaîne de diffusion (à exécuter avant l'inférence).

étape

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple

Paramètres

  • model_output (torch.Tensor) — La sortie directe du modèle de diffusion appris.
  • timestep (int) — L'étape discrète actuelle dans la chaîne de diffusion.
  • sample (torch.Tensor) — Une instance actuelle d'un échantillon créé par le processus de diffusion.
  • return_dict (bool, par défaut True) — Indique s'il faut retourner un SchedulerOutput ou un tuple.

Retourne

SchedulerOutput ou tuple

Si return_dict est True, SchedulerOutput est renvoyé, sinon un tuple est renvoyé dont le premier élément est le tenseur d'échantillon.

Prédit l'échantillon de l'étape temporelle précédente en inversant l'EDS. Cette fonction propage le processus de diffusion à partir des sorties du modèle appris (le plus souvent le bruit prédit) et appelle step_prk() ou step_plms() en fonction de la variable interne counter.

step_plms

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple

Paramètres

  • model_output (torch.Tensor) — La sortie directe du modèle de diffusion appris.
  • timestep (int) — L'étape discrète actuelle dans la chaîne de diffusion.
  • sample (torch.Tensor) — Une instance actuelle d'un échantillon créé par le processus de diffusion.
  • return_dict (bool, par défaut True) — Indique s'il faut retourner un SchedulerOutput ou un tuple.

Retourne

SchedulerOutput ou tuple

Si return_dict est True, SchedulerOutput est renvoyé, sinon un tuple est renvoyé dont le premier élément est le tenseur d'échantillon.

Prédit l'échantillon de l'étape temporelle précédente en inversant l'EDS. Cette fonction propage l'échantillon à l'aide de la méthode multistep linéaire. Elle effectue plusieurs passes avant pour approximer la solution.

step_prk

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple

Paramètres

  • model_output (torch.Tensor) — La sortie directe du modèle de diffusion appris.
  • timestep (int) — L'étape discrète actuelle dans la chaîne de diffusion.
  • sample (torch.Tensor) — Une instance actuelle d'un échantillon créé par le processus de diffusion.
  • return_dict (bool, par défaut True) — Indique s'il faut retourner un SchedulerOutput ou un tuple.

Retourne

SchedulerOutput ou tuple

Si return_dict est True, SchedulerOutput est renvoyé, sinon un tuple est renvoyé dont le premier élément est le tenseur d'échantillon.

Prédit l'échantillon de l'étape temporelle précédente en inversant l'EDS. Cette fonction propage l'échantillon à l'aide de la méthode de Runge-Kutta. Elle effectue quatre passes avant pour approximer la solution de l'équation différentielle.

SchedulerOutput

classe diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

Paramètres

  • prev_sample (torch.Tensor de forme (batch_size, num_channels, height, width) pour les images) — Échantillon calculé (x_{t-1}) de l'étape temporelle précédente. prev_sample doit être utilisé comme entrée du modèle suivante dans la boucle de débruitage.

Classe de base pour la sortie de la fonction step d’un planificateur.

Update on GitHub