Diffusers documentation

Planificateurs

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

and get access to the augmented documentation experience

to get started

Planificateurs

🤗 Diffusers fournit de nombreuses fonctions de planificateur pour le processus de diffusion. Un planificateur prend la sortie d’un modèle (l’échantillon sur lequel le processus de diffusion itère) et un pas de temps pour retourner un échantillon débruité. Le pas de temps est important car il indique à quel point du processus de diffusion se situe l’étape ; les données sont générées en itérant en avant sur n pas de temps et l’inférence se fait en propageant en arrière à travers les pas de temps. En fonction du pas de temps, un planificateur peut être discret, auquel cas le pas de temps est un int, ou continu, auquel cas le pas de temps est un float.

Selon le contexte, un planificateur définit comment ajouter itérativement du bruit à une image ou comment mettre à jour un échantillon en fonction de la sortie d'un modèle :

  • lors de l'entraînement, un planificateur ajoute du bruit (il existe différents algorithmes pour la manière d'ajouter du bruit) à un échantillon afin d'entraîner un modèle de diffusion
  • lors de l'inférence, un planificateur définit la manière de mettre à jour un échantillon en fonction de la sortie d'un modèle pré-entraîné

De nombreux planificateurs sont implémentés à partir de la bibliothèque k-diffusion de Katherine Crowson, et ils sont également largement utilisés dans A1111. Pour vous aider à associer les planificateurs de k-diffusion et d'A1111 aux planificateurs de 🤗 Diffusers, consultez le tableau ci-dessous :

A1111/k-diffusion🤗 DiffusersUtilisation
DPM++ 2MDPMSolverMultistepScheduler
DPM++ 2M KarrasDPMSolverMultistepSchedulerinitialiser avec use_karras_sigmas=True
DPM++ 2M SDEDPMSolverMultistepSchedulerinitialiser avec algorithm_type="sde-dpmsolver++"
DPM++ 2M SDE KarrasDPMSolverMultistepSchedulerinitialiser avec use_karras_sigmas=True et algorithm_type="sde-dpmsolver++"
DPM++ 2S aN/Atrès similaire à DPMSolverSinglestepScheduler
DPM++ 2S a KarrasN/Atrès similaire à DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)
DPM++ SDEDPMSolverSinglestepScheduler
DPM++ SDE KarrasDPMSolverSinglestepSchedulerinitialiser avec use_karras_sigmas=True
DPM2KDPM2DiscreteScheduler
DPM2 KarrasKDPM2DiscreteSchedulerinitialiser avec use_karras_sigmas=True
DPM2 aKDPM2AncestralDiscreteScheduler
DPM2 a KarrasKDPM2AncestralDiscreteSchedulerinitialiser avec use_karras_sigmas=True
DPM adaptatifN/A
DPM fastN/A
EulerEulerDiscreteScheduler
Euler aEulerAncestralDiscreteScheduler
HeunHeunDiscreteScheduler
LMSLMSDiscreteScheduler
LMS KarrasLMSDiscreteSchedulerinitialiser avec use_karras_sigmas=True
N/ADEISMultistepScheduler
N/AUniPCMultistepScheduler

Planning du bruit et types de planning

A1111/k-diffusion🤗 Diffusers
Karrasinitialiser avec use_karras_sigmas=True
sgm_uniforminitialiser avec timestep_spacing="trailing"
simpleinitialiser avec timestep_spacing="trailing"
exponentielleinit avec timestep_spacing="linspace", use_exponential_sigmas=True
betainit avec timestep_spacing="linspace", use_beta_sigmas=True

Tous les planificateurs sont construits à partir de la classe de base SchedulerMixin, qui implémente les utilitaires de bas niveau partagés par tous les planificateurs.

SchedulerMixin

classe diffusers.SchedulerMixin

< >

( )

Classe de base pour tous les planificateurs.

SchedulerMixin contient des fonctions communes partagées par tous les planificateurs, telles que les fonctionnalités générales de chargement et d’enregistrement.

ConfigMixin s’occupe de stocker les attributs de configuration (comme num_train_timesteps) qui sont passés à la fonction __init__ du planificateur, et ces attributs peuvent être accédés via scheduler.config.num_train_timesteps.

Attributs de classe :

  • _compatibles (list[str]) — Une liste de classes de planificateurs compatibles avec la classe de planificateur parent. Utilisez from_config() pour charger une autre classe de planificateur compatible (devrait être surchargée par la classe parente).

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | None = Nonesubfolder: str | None = Nonereturn_unused_kwargs: bool = False**kwargs: Any ) → SchedulerMixin or tuple[SchedulerMixin, dict[str, Any]]

Paramètres

  • pretrained_model_name_or_path (str ou os.PathLike, facultatif) — Peut être l'un des éléments suivants :
    • Une chaîne de caractères, l'identifiant du modèle (par exemple google/ddpm-celebahq-256) d'un modèle pré-entraîné hébergé sur le Hub.
    • Un chemin vers un dossier (par exemple ./my_model_directory) contenant la configuration du planificateur enregistrée avec save_pretrained().
  • subfolder (str, facultatif) — L’emplacement du sous-dossier d’un fichier de modèle au sein d’un dépôt de modèle plus large sur le Hub ou en local.
  • return_unused_kwargs (bool, facultatif, par défaut False) — Indique si les kwargs non consommés par la classe Python doivent être retournés ou non.
  • cache_dir (str ou os.PathLike, facultatif) — Chemin vers un répertoire où la configuration d'un modèle pré-entraîné téléchargé est mise en cache si le cache standard n'est pas utilisé.
  • force_download (bool, facultatif, par défaut False) — Indique s'il faut forcer le (re)téléchargement des poids du modèle et des fichiers de configuration, en ignorant les versions mises en cache si elles existent.
  • proxies (dict[str, str], facultatif) — Un dictionnaire de serveurs proxy à utiliser par protocole ou point de terminaison, par exemple, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Les proxys sont utilisés pour chaque requête.
  • output_loading_info (bool, facultatif, par défaut False) — Indique s'il faut également retourner un dictionnaire contenant les clés manquantes, les clés inattendues et les messages d'erreur.
  • local_files_only (bool, facultatif, par défaut False) — Indique s'il faut charger uniquement les poids et les fichiers de configuration du modèle en local. Si défini sur True, le modèle ne sera pas téléchargé depuis le Hub.
  • token (str ou bool, facultatif) — Le jeton à utiliser comme autorisation bearer HTTP pour les fichiers distants. Si True, le jeton généré par diffusers-cli login (stocké dans ~/.huggingface) est utilisé.
  • revision (str, facultatif, par défaut "main") — La version spécifique du modèle à utiliser. Il peut s’agir d’un nom de branche, d’un nom de tag, d’un identifiant de commit ou de tout identifiant autorisé par Git.

Retourne

SchedulerMixin ou tuple[SchedulerMixin, dict[str, Any]]

Le planificateur instancié à partir de la configuration. Si return_unused_kwargs est True, un tuple est renvoyé dont le second élément est un dictionnaire des arguments par mot-clé non utilisés.

Instanciez un planificateur à partir d'un fichier de configuration JSON prédéfini dans un répertoire local ou un dépôt du Hub.

> Pour utiliser des modèles privés ou restreints, connectez-vous avec hf > auth login. Vous pouvez également activer le mode spécial > « hors-ligne » pour utiliser cette méthode dans un > environnement protégé par un pare-feu.

save_pretrained

< >

( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )

Paramètres

  • save_directory (str ou os.PathLike) — Répertoire où le fichier JSON de configuration sera enregistré (il sera créé s'il n'existe pas).
  • push_to_hub (bool, facultatif, par défaut False) — Indique s'il faut ou non pousser votre modèle sur le Hugging Face Hub après l'avoir enregistré. Vous pouvez spécifier le dépôt auquel vous souhaitez pousser avec repo_id (par défaut, il s'agit du nom de save_directory dans votre espace de noms).
  • kwargs (dict[str, Any], facultatif) — Arguments supplémentaires passés à la méthode push_to_hub().

Enregistrer un objet de configuration de planificateur dans un répertoire afin qu'il puisse être rechargé à l'aide de la méthode de classe from_pretrained().

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.

KarrasDiffusionSchedulers

KarrasDiffusionSchedulers est une généralisation large des planificateurs dans 🤗 Diffusers. Les planificateurs de cette classe se distinguent à un niveau élevé par leur stratégie d’échantillonnage du bruit, le type de réseau et de mise à l’échelle, la stratégie d’entraînement et la manière dont la perte est pondérée.

Les différents planificateurs de cette classe, en fonction du type de solveur d'équations différentielles ordinaires (EDO), s'inscrivent dans la taxonomie ci-dessus et offrent une bonne abstraction pour la conception des principaux planificateurs implémentés dans 🤗 Diffusers. Les planificateurs de cette classe sont donnés ici.

PushToHubMixin

classe diffusers.utils.PushToHubMixin

< >

( )

Un Mixin pour pousser un modèle, un planificateur ou un pipeline vers le Hugging Face Hub.

push_to_hub

< >

( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )

Paramètres

  • repo_id (str) — Le nom du dépôt vers lequel vous souhaitez pousser vos fichiers de modèle, de planificateur ou de pipeline. Il doit contenir le nom de votre organisation lors d’un envoi vers une organisation. repo_id peut également être un chemin vers un répertoire local.
  • commit_message (str, facultatif) — Message à committer lors de la poussée. Par défaut, "Upload {object}".
  • private (bool, facultatif) — Indique s'il faut rendre le dépôt privé. Si None (par défaut), le dépôt sera public sauf si le défaut de l'organisation est privé. Cette valeur est ignorée si le dépôt existe déjà.
  • token (str, facultatif) — Le jeton à utiliser comme autorisation HTTP bearer pour les fichiers distants. Le jeton généré lors de l’exécution de hf auth login (stocké dans ~/.huggingface).
  • create_pr (bool, facultatif, par défaut False) — Indique s'il faut créer une PR avec les fichiers téléversés ou effectuer un commit direct.
  • safe_serialization (bool, facultatif, par défaut True) — Indique s'il faut convertir les poids du modèle au format safetensors.
  • variant (str, facultatif) — Si spécifié, les poids sont enregistrés au format pytorch_model.<variant>.bin.

Téléchargez des fichiers de modèle, de planificateur ou de pipeline sur le 🤗 Hugging Face Hub.

Exemples :

from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")

# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")

# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")
Update on GitHub