Diffusers documentation
Planificateurs
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
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
< source >( 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 (
strouos.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().
- Une chaîne de caractères, l'identifiant du modèle (par exemple
- 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éfautFalse) — Indique si les kwargs non consommés par la classe Python doivent être retournés ou non. - cache_dir (
strouos.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éfautFalse) — 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éfautFalse) — 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éfautFalse) — Indique s'il faut charger uniquement les poids et les fichiers de configuration du modèle en local. Si défini surTrue, le modèle ne sera pas téléchargé depuis le Hub. - token (
stroubool, facultatif) — Le jeton à utiliser comme autorisation bearer HTTP pour les fichiers distants. SiTrue, le jeton généré pardiffusers-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
< source >( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )
Paramètres
- save_directory (
strouos.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éfautFalse) — 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 avecrepo_id(par défaut, il s'agit du nom desave_directorydans 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
< source >( prev_sample: Tensor )
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
Un Mixin pour pousser un modèle, un planificateur ou un pipeline vers le Hugging Face Hub.
push_to_hub
< source >( 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_idpeut é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é. SiNone(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 dehf auth login(stocké dans~/.huggingface). - create_pr (
bool, facultatif, par défautFalse) — 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éfautTrue) — Indique s'il faut convertir les poids du modèle au formatsafetensors. - variant (
str, facultatif) — Si spécifié, les poids sont enregistrés au formatpytorch_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")