Buckets:

mishig's picture
|
download
raw
18.4 kB

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 🤗 Diffusers Utilisation
DPM++ 2M DPMSolverMultistepScheduler
DPM++ 2M Karras DPMSolverMultistepScheduler initialiser avec use_karras_sigmas=True
DPM++ 2M SDE DPMSolverMultistepScheduler initialiser avec algorithm_type="sde-dpmsolver++"
DPM++ 2M SDE Karras DPMSolverMultistepScheduler initialiser avec use_karras_sigmas=True et algorithm_type="sde-dpmsolver++"
DPM++ 2S a N/A très similaire à DPMSolverSinglestepScheduler
DPM++ 2S a Karras N/A très similaire à DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)
DPM++ SDE DPMSolverSinglestepScheduler
DPM++ SDE Karras DPMSolverSinglestepScheduler initialiser avec use_karras_sigmas=True
DPM2 KDPM2DiscreteScheduler
DPM2 Karras KDPM2DiscreteScheduler initialiser avec use_karras_sigmas=True
DPM2 a KDPM2AncestralDiscreteScheduler
DPM2 a Karras KDPM2AncestralDiscreteScheduler initialiser avec use_karras_sigmas=True
DPM adaptatif N/A
DPM fast N/A
Euler EulerDiscreteScheduler
Euler a EulerAncestralDiscreteScheduler
Heun HeunDiscreteScheduler
LMS LMSDiscreteScheduler
LMS Karras LMSDiscreteScheduler initialiser avec use_karras_sigmas=True
N/A DEISMultistepScheduler
N/A UniPCMultistepScheduler

Planning du bruit et types de planning

A1111/k-diffusion 🤗 Diffusers
Karras initialiser avec use_karras_sigmas=True
sgm_uniform initialiser avec timestep_spacing="trailing"
simple initialiser avec timestep_spacing="trailing"
exponentielle init avec timestep_spacing="linspace", use_exponential_sigmas=True
beta init 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[[diffusers.SchedulerMixin]]

diffusers.SchedulerMixin[[diffusers.SchedulerMixin]]

diffusers.SchedulerMixin()

Source

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 gère le stockage des attributs de configuration (comme num_train_timesteps) transmis à la fonction __init__ du planificateur, et ces attributs sont accessibles 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[[diffusers.SchedulerMixin.from_pretrained]]

from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None = None, subfolder: str | None = None, return_unused_kwargs: bool = False, **kwargs: Any)

Source

Paramètres :

pretrained_model_name_or_path (str ou os.PathLike, facultatif) : Peut être : - 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) : 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 locaux. Si défini sur True, le modèle ne sera pas téléchargé depuis le Hub.

token (str ou bool, facultatif) : 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 retourné dont le deuxième élément est un dictionnaire des arguments de 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 gated models, connectez-vous avec hf > auth login. Vous pouvez également activer le mode spécial > "offline-mode" pour utiliser cette méthode dans un environnement > protégé par un pare-feu.

save_pretrained[[diffusers.SchedulerMixin.save_pretrained]]

save_pretrained(save_directory: str | os.PathLike, push_to_hub: bool = False, **kwargs: Any)

Source

Paramètres :

save_directory (str ou os.PathLike) : répertoire où le fichier JSON de configuration sera enregistré (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[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

diffusers.schedulers.scheduling_utils.SchedulerOutput(prev_sample: Tensor)

Source

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[[diffusers.utils.PushToHubMixin]]

diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]

diffusers.utils.PushToHubMixin()

Source

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

push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]

push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)

Source

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'une poussée vers une organisation. repo_id peut également être un chemin vers un répertoire local.

commit_message (str, facultatif) : Message à commiter lors de la poussée. Par défaut, "Upload {object}".

private (bool, facultatif) : Indique si le dépôt doit être privé. Si la valeur est 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 bearer HTTP 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")

Xet Storage Details

Size:
18.4 kB
·
Xet hash:
c8325d77ff36228993efb50c87b0bcdcb515079c9cf5a2be7449d3ccefd3d8cd

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.