Diffusers documentation

PEFT

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

PEFT

Diffusers prend en charge le chargement d'adaptateurs tels que LoRA avec la bibliothèque PEFT grâce à la classe PeftAdapterMixin. Cela permet aux classes de modélisation de Diffusers comme UNet2DConditionModel et SD3Transformer2DModel de fonctionner avec un adaptateur.

Reportez-vous au tutoriel Inference with PEFT pour un aperçu de l’utilisation de PEFT dans Diffusers pour l’inférence.

PeftAdapterMixin

classe diffusers.loaders.PeftAdapterMixin

< >

( )

Une classe contenant toutes les fonctions pour charger et utiliser les poids des adaptateurs pris en charge par la bibliothèque PEFT. Pour plus de détails sur les adaptateurs et leur injection dans un modèle de base, consultez la documentation de PEFT.

Installez la dernière version de PEFT et utilisez ce mixin pour :

  • Attacher de nouveaux adaptateurs au modèle.
  • Attachez plusieurs adaptateurs et activez/désactivez-les de manière itérative.
  • Activer/désactiver tous les adaptateurs du modèle.
  • Obtenir la liste des adaptateurs actifs.

active_adapters

< >

( )

Renvoie la liste actuelle des adaptateurs actifs du modèle.

Si vous n'êtes pas familier avec les adaptateurs et les méthodes PEFT, nous vous invitons à en savoir plus sur eux dans la documentation PEFT.

add_adapter

< >

( adapter_configadapter_name: str = 'default' )

Paramètres

  • adapter_config ([~peft.PeftConfig]) — La configuration de l’adaptateur à ajouter ; les adaptateurs pris en charge sont les méthodes de non-prefix tuning et de adaption prompt.
  • adapter_name (str, facultatif, par défaut "default") — Le nom de l’adaptateur à ajouter. Si aucun nom n’est transmis, un nom par défaut est attribué à l’adaptateur.

Ajoute un nouvel adaptateur au modèle actuel pour l'entraînement. Si aucun nom d'adaptateur n'est transmis, un nom par défaut est attribué à l'adaptateur afin de respecter la convention de la bibliothèque PEFT.

Si vous n'êtes pas familier avec les adaptateurs et les méthodes PEFT, nous vous invitons à en savoir plus dans la documentation PEFT.

delete_adapters

< >

( adapter_names: list[str] | str )

Paramètres

  • adapter_names (list[str, str]) — Les noms (chaîne unique ou liste de chaînes) de l’adaptateur à supprimer.

Supprimer les couches LoRA d’un adaptateur du modèle sous-jacent.

Exemple :

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_names="cinematic"
)
pipeline.unet.delete_adapters("cinematic")

disable_adapters

< >

( )

Désactiver tous les adaptateurs attachés au modèle et revenir à l’inférence avec le modèle de base uniquement.

Si vous n'êtes pas familier avec les adaptateurs et les méthodes PEFT, nous vous invitons à en savoir plus sur eux dans la documentation PEFT.

disable_lora

< >

( )

Désactive les couches LoRA actives du modèle sous-jacent.

Exemple :

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.unet.disable_lora()

enable_adapters

< >

( )

Active les adaptateurs attachés au modèle. Le modèle utilise self.active_adapters() pour récupérer la liste des adaptateurs à activer.

Si vous n'êtes pas familier avec les adaptateurs et les méthodes PEFT, nous vous invitons à en savoir plus sur eux dans la documentation PEFT.

enable_lora

< >

( )

Active les couches LoRA actives du modèle sous-jacent.

Exemple :

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.unet.enable_lora()

enable_lora_hotswap

< >

( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )

Paramètres

  • target_rank (int, facultatif, par défaut 128) — Le rang le plus élevé parmi tous les adaptateurs qui seront chargés.
  • check_compiled (str, facultatif, valeur par défaut "error") — Comment gérer le cas où le modèle est déjà compilé, ce qui devrait généralement être évité. Les options sont :
    • « error » (par défaut) : lever une erreur
    • “warn” : émettre un avertissement
    • “ignore” : ne rien faire

Permet de remplacer à chaud les adaptateurs LoRA.

L'appel de cette méthode n'est requis que lors du remplacement à chaud des adaptateurs et si le modèle est compilé ou si les rangs des adaptateurs chargés diffèrent.

load_lora_adapter

< >

( pretrained_model_name_or_path_or_dictprefix = 'transformer'hotswap: bool = False**kwargs )

Paramètres

  • pretrained_model_name_or_path_or_dict (str ou os.PathLike ou dict) — 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 les poids du modèle enregistrés avec ModelMixin.save_pretrained().
    • Un dictionnaire d'état torch.
  • prefix (str, facultatif) — Préfixe pour filtrer le dictionnaire d'état.
  • cache_dir (str | 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.
  • 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.
  • subfolder (str, facultatif, par défaut "") — 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.
  • network_alphas (dict[str, float]) — La valeur de l'alpha du réseau utilisée pour un apprentissage stable et pour prévenir le sous-débordement. Cette valeur a la même signification que l'option --network_alpha du script d'entraînement kohya-ss. Consultez ce lien.
  • low_cpu_mem_usage (bool, facultatif) — Accélère le chargement du modèle en ne chargeant que les poids LoRA préentraînés et sans initialiser les poids aléatoires.
  • hotswap — (bool, facultatif) Valeur par défaut : False. Indique s'il faut substituer un adaptateur (LoRA) existant par l'adaptateur nouvellement chargé, en place. Cela signifie que, au lieu de charger un adaptateur supplémentaire, les poids de l'adaptateur existant seront remplacés par ceux du nouvel adaptateur. Cela peut être plus rapide et plus efficace en termes de mémoire. Cependant, l'avantage principal du hotswap est que, lorsque le modèle est compilé avec torch.compile, le chargement du nouvel adaptateur ne nécessite pas de recompiler le modèle. Lors de l'utilisation du hotswap, le adapter_name doit être le nom d'un adaptateur déjà chargé.

    Si le nouvel adaptateur et l’ancien adaptateur ont des rangs et/ou des alphas LoRA (c.-à-d. un facteur d’échelle) différents, vous devez appeler une méthode supplémentaire avant de charger l’adaptateur :

Charge un adaptateur LoRA dans le modèle sous-jacent.

save_lora_adapter

< >

( save_directoryadapter_name: str = 'default'upcast_before_saving: bool = Falsesafe_serialization: bool = Trueweight_name: str | None = None )

Paramètres

  • save_directory (str ou os.PathLike) — Répertoire dans lequel enregistrer les paramètres LoRA. Sera créé s'il n'existe pas.
  • adapter_name — (str, par défaut “default”) : Le nom de l’adaptateur à sérialiser. Utile lorsque le modèle sous-jacent a plusieurs adaptateurs chargés.
  • upcast_before_saving (bool, par défaut False) — Indique s'il faut convertir le modèle sous-jacent en torch.float32 avant la sérialisation.
  • safe_serialization (bool, facultatif, par défaut True) — Indique si le modèle doit être enregistré en utilisant safetensors ou la méthode traditionnelle de PyTorch avec pickle.
  • weight_name — (str, facultatif, par défaut None) : Nom du fichier avec lequel sérialiser le state dict.

Enregistrez les paramètres LoRA correspondant au modèle sous-jacent.

set_adapter

< >

( adapter_name: str | list[str] )

Paramètres

  • adapter_name (str | list[str])) — La liste des adaptateurs à définir ou le nom de l’adaptateur dans le cas d’un adaptateur unique.

Définit un adaptateur spécifique en forçant le modèle à n'utiliser que cet adaptateur et en désactivant les autres adaptateurs.

Si vous n'êtes pas familier avec les adaptateurs et les méthodes PEFT, nous vous invitons à en savoir plus sur eux dans la documentation PEFT.

set_adapters

< >

( adapter_names: list[str] | strweights: float | dict | list[float] | list[dict] | list[None] | None = None )

Paramètres

  • adapter_names (list[str] ou str) — Les noms des adaptateurs à utiliser.
  • weights (Union[List[float], float], facultatif) — Les poids de l’adaptateur ou des adaptateurs à utiliser avec le UNet. Si None, les poids sont définis à 1.0 pour tous les adaptateurs.

Définir les adaptateurs actuellement actifs pour leur utilisation dans le réseau de diffusion (par exemple, unet, transformer, etc.).

Exemple :

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel")
pipeline.unet.set_adapters(["cinematic", "pixel"], weights=[0.5, 0.5])
Update on GitHub