Diffusers documentation
UNet
UNet
Certaines méthodes d’entraînement – comme LoRA et Custom Diffusion – ciblent généralement les couches d’attention du UNet, mais ces méthodes peuvent également cibler d’autres couches non attentionnelles. Au lieu d’entraîner tous les paramètres d’un modèle, seul un sous-ensemble de paramètres est entraîné, ce qui est plus rapide et plus efficace. Cette classe est utile si vous chargez uniquement des poids dans un UNet. Si vous devez charger des poids dans l’encodeur de texte ou dans un encodeur de texte et un UNet, essayez plutôt d’utiliser la fonction load_lora_weights().
La classe UNet2DConditionLoadersMixin fournit des fonctions pour charger et enregistrer les poids, fusionner et défusionner les LoRA, désactiver et activer les LoRA, ainsi que pour définir et supprimer des adaptateurs.
Pour en savoir plus sur la manière de charger les poids LoRA, consultez le guide LoRA.
UNet2DConditionLoadersMixin
Charger les couches LoRA dans un UNet2DCondtionModel.
load_attn_procs
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
Paramètres
- pretrained_model_name_or_path_or_dict (
strouos.PathLikeoudict) — 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 répertoire (par exemple
./my_model_directory) contenant les poids du modèle enregistrés avec ModelMixin.save_pretrained(). - Un dictionnaire d'état torch.
- Une chaîne de caractères, l'identifiant du modèle (par exemple
- 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é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. - 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 (
strou bool, 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. - 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. - weight_name (
str, facultatif, par défaut None) — Nom du fichier de dictionnaire d'état sérialisé.
Chargez les couches de processeur d'attention Custom Diffusion préentraînées dans UNet2DConditionModel. Les couches de processeur d'attention doivent être définies dans attention_processor.py et être une classe torch.nn.Module. Pour charger des couches LoRA, utilisez plutôt load_lora_adapter().
save_attn_procs
< source >( save_directory: str | os.PathLikeis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True**kwargs )
Paramètres
- save_directory (
strouos.PathLike) — Répertoire dans lequel enregistrer un processeur d'attention (sera créé s'il n'existe pas). - is_main_process (
bool, facultatif, par défautTrue) — Indique si le processus qui appelle cette fonction est le processus principal ou non. Utile lors de l'entraînement distribué lorsque vous devez appeler cette fonction sur tous les processus. Dans ce cas, définissezis_main_process=Trueuniquement sur le processus principal pour éviter les conditions de course. - save_function (
Callable) — La fonction à utiliser pour enregistrer le dictionnaire d'état. Utile lors de l'entraînement distribué lorsque vous devez remplacertorch.savepar une autre méthode. Peut être configurée avec la variable d'environnementDIFFUSERS_SAVE_MODE. - safe_serialization (
bool, facultatif, par défautTrue) — Indique si le modèle doit être enregistré en utilisantsafetensorsou avecpickle.
Enregistrez les couches de processeur d’attention de Custom Diffusion dans un répertoire afin qu’elles puissent être rechargées avec la méthode load_attn_procs(). Pour enregistrer les couches LoRA, utilisez plutôt save_lora_adapter().
Exemple :
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
pipeline.unet.save_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")