Diffusers documentation

Planificateur multistep pour le modèle de cohérence latente

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

Planificateur multistep pour le modèle de cohérence latente

Aperçu

Planificateur multistep et onestep (Algorithme 3) introduit avec les modèles de cohérence latente dans l'article Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference de Simian Luo, Yiqin Tan, Longbo Huang, Jian Li et Hang Zhao. Ce planificateur doit être capable de générer de bons échantillons à partir de LatentConsistencyModelPipeline en 1 à 8 étapes.

LCMScheduler

classe diffusers.LCMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'scaled_linear'trained_betas: numpy.ndarray | list[float] | None = Noneoriginal_inference_steps: int = 50clip_sample: bool = Falseclip_sample_range: float = 1.0set_alpha_to_one: bool = Truesteps_offset: int = 0prediction_type: str = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0timestep_spacing: str = 'leading'timestep_scaling: float = 10.0rescale_betas_zero_snr: bool = False )

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.00085) — La valeur de départ de beta pour l'inférence.
  • beta_end (float, par défaut 0.012) — La valeur finale de beta.
  • beta_schedule (str, par défaut "scaled_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. Choisissez parmi linear, scaled_linear ou squaredcos_cap_v2.
  • trained_betas (np.ndarray ou list[float], facultatif) — Transmettez un tableau de betas directement au constructeur pour contourner beta_start et beta_end.
  • original_inference_steps (int, par défaut 50) — Le nombre par défaut d'étapes d'inférence utilisé pour générer un calendrier de timesteps linéairement espacés, à partir duquel nous extrairons finalement num_inference_steps timesteps uniformément espacés pour former le calendrier de timesteps final.
  • clip_sample (bool, par défaut False) — Applique un seuil à l'échantillon prédit pour la stabilité numérique.
  • clip_sample_range (float, par défaut 1.0) — L'amplitude maximale pour le rognage des échantillons. Valable uniquement lorsque clip_sample=True.
  • set_alpha_to_one (bool, par défaut True) — 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.
  • 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.
  • prediction_type (str, defaults to "epsilon") — Prediction type of the scheduler function; can be epsilon (predicts the noise of the diffusion process), sample (directly predicts the noisy sample) or v_prediction` (see section 2.4 of Imagen Video paper).
  • thresholding (bool, par défaut False) — Indique s'il faut utiliser la méthode de « seuillage dynamique ». Cette méthode n'est pas adaptée aux modèles de diffusion en espace latent tels que Stable Diffusion.
  • dynamic_thresholding_ratio (float, par défaut 0.995) — Le ratio pour la méthode de seuillage dynamique. Valable uniquement lorsque thresholding=True.
  • sample_max_value (float, par défaut 1.0) — La valeur de seuil pour le seuillage dynamique. Valable uniquement lorsque thresholding=True.
  • timestep_spacing (str, par défaut "leading") — La manière dont les timesteps doivent être mis à l'échelle. Reportez-vous au Tableau 2 de l'article Common Diffusion Noise Schedules and Sample Steps are Flawed pour plus d'informations.
  • timestep_scaling (float, par défaut 10.0) — Le facteur par lequel les timesteps sont multipliés lors du calcul des conditions aux limites du modèle de cohérence c_skip et c_out. L’augmenter réduit l’erreur d’approximation (bien que l’erreur d’approximation soit déjà assez faible avec la valeur par défaut de 10.0).
  • rescale_betas_zero_snr (bool, par défaut False) — Indique s'il faut rééchelonner les betas pour obtenir un SNR terminal nul. Cela permet au modèle de générer des échantillons très clairs et très sombres, au lieu de se limiter à des échantillons de luminosité moyenne. Lié de manière lâche à --offset_noise.

LCMScheduler étend la procédure de débruitage introduite dans les modèles probabilistes de diffusion débruitante (DDPM) avec un guidage non markovien.

Ce modèle hérite de SchedulerMixin et de ConfigMixin. ~ConfigMixin gère le stockage de tous les attributs de configuration transmis à la fonction __init__ du scheduler, tels que num_train_timesteps. Ils sont accessibles via scheduler.config.num_train_timesteps. SchedulerMixin fournit des fonctionnalités générales de chargement et d’enregistrement via les fonctions SchedulerMixin.save_pretrained() et from_pretrained().

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).

get_scalings_for_boundary_condition_discrete

< >

( timestep: int ) → tuple[float, float]

Paramètres

  • timestep (int) — L'étape discrète pour laquelle calculer les échelles.

Retourne

tuple[float, float]

Un tuple contenant c_skip (mise à l'échelle de l'échantillon d'entrée) et c_out (mise à l'échelle de l'échantillon débruité prédit).

Calcule les échelles des conditions aux limites (c_skip et c_out) pour l'étape discrète donnée, telles qu'utilisées dans le Latent Consistency Model.

get_velocity

< >

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

Paramètres

  • sample (torch.Tensor) — L'échantillon d'entrée.
  • noise (torch.Tensor) — Le tenseur de bruit.
  • timesteps (torch.IntTensor) — Les timesteps pour le calcul de la vitesse.

Retourne

torch.Tensor

La vitesse calculée.

Calculer la prédiction de vitesse à partir de l'échantillon et du bruit selon la formule de vitesse.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

Paramètres

  • timestep (float ou torch.Tensor) — La valeur de timestep à rechercher dans le planning.
  • schedule_timesteps (torch.Tensor, facultatif) — Le calendrier des timesteps à explorer. Si None, utilise self.timesteps.

Retourne

int

L'indice de la pas de temps dans le planning. Pour la toute première étape, renvoie le deuxième indice si plusieurs correspondances existent, afin d'éviter de sauter un sigma lors d'un démarrage en cours de planning (par exemple, pour l'image-vers-image).

Trouver l'index d'une étape de temps donnée dans le calendrier des étapes de temps.

previous_timestep

< >

( timestep ) → int or torch.Tensor

Paramètres

  • timestep (int) — L'étape temporelle actuelle.

Retourne

int ou torch.Tensor

L'étape de temps précédente.

Calculer l'étape précédente dans la chaîne de diffusion.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Paramètres

  • sample (torch.Tensor) — L'échantillon d'entrée.
  • timestep (int, facultatif) — L'étape temporelle actuelle dans la chaîne de diffusion.

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_begin_index

< >

( begin_index: int = 0 )

Paramètres

  • begin_index (int, par défaut 0) — L'index de début pour le planificateur.

Définit l'index de début pour le planificateur. Cette fonction doit être exécutée depuis le pipeline avant l'inférence.

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = Noneoriginal_inference_steps: int | None = Nonetimesteps: list[int] | None = Nonestrength: float = 1.0 ) → None

Paramètres

  • num_inference_steps (int, facultatif) — Le nombre d’étapes de diffusion utilisé lors de la génération d’échantillons avec un modèle pré-entraîné. S’il est utilisé, timesteps doit être None.
  • 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.
  • original_inference_steps (int, facultatif) — Le nombre original d'étapes d'inférence, utilisé pour générer un calendrier de timesteps linéairement espacés (différent de l'implémentation standard de diffusers). Nous extrairons ensuite num_inference_steps timesteps de ce calendrier, espacés uniformément en termes d'indices, et l'utiliserons comme calendrier de timesteps final. S'il n'est pas défini, la valeur par défaut est l'attribut original_inference_steps.
  • timesteps (list[int], facultatif) — Timesteps personnalisés utilisés pour prendre en charge un espacement arbitraire entre les timesteps. Si None, la stratégie d'espacement par défaut, à savoir un espacement égal entre les timesteps sur le calendrier de timesteps d'entraînement/distillation, est utilisée. Si timesteps est transmis, num_inference_steps doit être None.
  • strength (float, par défaut 1.0) — Facteur de force utilisé pour générer un calendrier de pas partiel (par exemple pour l'image-à-image). Une valeur de 1.0 utilise le calendrier complet.

Retourne

None

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: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → LCMSchedulerOutput 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.
  • generator (torch.Generator, facultatif) — Générateur de nombres aléatoires pour un échantillonnage reproductible.
  • return_dict (bool, par défaut True) — Indique s'il faut retourner un LCMSchedulerOutput ou un tuple.

Retourne

LCMSchedulerOutput ou tuple

Si True, LCMSchedulerOutput 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).

Update on GitHub