Diffusers documentation
Composants et configurations
Composants et configurations
ComponentSpec
classe diffusers.ComponentSpec
< source >( name: str | None = Nonetype_hint: typing.Optional[typing.Type] = Nonedescription: str | None = Noneconfig: diffusers.configuration_utils.FrozenDict | None = Nonepretrained_model_name_or_path: str | list[str] | None = Nonesubfolder: str | None = ''variant: str | None = Nonerevision: str | None = Nonedefault_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained'repo: str | list[str] | None = None )
Paramètres
- name — Nom du composant
- type_hint — Type du composant (par exemple, UNet2DConditionModel)
- description — Description facultative du composant
- config — Dictionnaire de configuration facultatif pour la création de init
- pretrained_model_name_or_path — Chemin facultatif de pretrained_model_name_or_path pour la création via from_pretrained
- subfolder — Sous-dossier facultatif dans pretrained_model_name_or_path
- variant — Variante facultative dans pretrained_model_name_or_path
- revision — Révision facultative dans pretrained_model_name_or_path
- default_creation_method — Méthode de création préférée - « from_config » ou « from_pretrained »
Spécification d'un composant de pipeline.
Un composant peut être créé de deux manières :
- À partir de zéro en utilisant init avec un dictionnaire de configuration
- en utilisant
from_pretrained
créer
< source >( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )
Créer un composant à l'aide de from_config avec config.
decode_load_id
< source >( load_id: str )
Décode une chaîne load_id en un dictionnaire de champs et de valeurs de chargement.
from_component
< source >( name: strcomponent: Any )
Créer un ComponentSpec à partir d'un Component.
Prend actuellement en charge :
- Composants créés avec la méthode
ComponentSpec.load() - Les composants qui sont des sous-classes de ConfigMixin mais pas des nn.Modules (par exemple, les planificateurs, les guides)
Charger le composant à l'aide de from_pretrained.
Retourne les noms de tous les champs liés au chargement (c’est-à-dire ceux dont field.metadata[“loading”] est True).
ConfigSpec
Spécification d'un paramètre de configuration de pipeline.
ComponentsManager
Un registre central et un système de gestion pour les composants de modèles à travers plusieurs pipelines.
ComponentsManager offre une méthode unifiée pour enregistrer, suivre et réutiliser des composants de modèle (tels que UNet, VAE, encodeurs de texte, etc.) à travers différents pipelines modulaires. Il inclut des fonctionnalités de détection des doublons, de gestion de la mémoire et d’organisation des composants.
> Il s'agit d'une fonctionnalité expérimentale susceptible d'évoluer à l'avenir.
Exemple :
from diffusers import ComponentsManager
# Create a components manager
cm = ComponentsManager()
# Add components
cm.add("unet", unet_model, collection="sdxl")
cm.add("vae", vae_model, collection="sdxl")
# Enable auto offloading
cm.enable_auto_cpu_offload()
# Retrieve components
unet = cm.get_one(name="unet", collection="sdxl")add
< source >( name: strcomponent: Anycollection: str | None = None ) → str
Paramètres
- name (str) — Le nom du composant
- component (Any) — Le composant à ajouter
- collection (str | None) — La collection à laquelle ajouter le composant
Retourne
str
L'identifiant unique du composant, généré sous la forme « {name}_{id(component)} », où id(component) est l'identifiant unique intégré de Python pour l'objet
Ajouter un composant au ComponentsManager.
Désactiver le déchargement automatique sur CPU pour tous les composants.
enable_auto_cpu_offload
< source >( device: str | int | torch.device = Nonememory_reserve_margin = '3GB'offload_strategy = None )
Paramètres
- device (str | int | torch.device) — L’appareil d’exécution sur lequel les modèles sont déplacés pour les passes avant
- memory_reserve_margin (str) — La marge de mémoire de réserve à utiliser, par défaut 3 Go. Il s'agit de la quantité de mémoire à laisser libre sur l'appareil pour éviter d'épuiser la mémoire pendant l'exécution du modèle (par exemple, pour les activations intermédiaires, les gradients, etc.).
- offload_strategy — Tout appelable ayant la signature
(hooks, model_id, model, execution_device) -> hooks, renvoyant les modèles résidents à décharger avant le chargement du modèle entrant. La valeur par défaut estAutoOffloadStrategy, qui libère la combinaison minimale suffisante.
Activer le déchargement automatique sur CPU pour tous les composants.
L'algorithme fonctionne comme suit :
- Tous les modèles démarrent sur le CPU par défaut
- Lorsque le passage avant d'un modèle est appelé, il est déplacé vers l'appareil d'exécution
- En cas de mémoire insuffisante, les autres modèles sur l’appareil sont transférés à nouveau vers le CPU
- Le système tente de décharger la plus petite combinaison de modèles qui libère suffisamment de mémoire
- Les modèles restent sur l'appareil d'exécution jusqu'à ce qu'un autre modèle ait besoin de mémoire et les force à en être retirés
Un modèle déchargé par groupe participe à ce processus, mais se place lui-même : il peut toujours libérer de l’espace en déplaçant d’autres modèles, et n’est jamais déplacé pour leur faire de la place. Les deux ordres fonctionnent — le déchargement par groupe avant ou après l’activation de cette option. AutoOffloadStrategy calibre ses décisions à partir de l’empreinte mémoire des modèles, ce qui ne décrit pas un modèle tenant un groupe à la fois ; passez donc un offload_strategy qui décide en fonction du flux de travail.
get_components_by_ids
< source >( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]
Paramètres
- ids (list[str]) — liste des identifiants des composants
- return_dict_with_names (bool | None) — Indique s'il faut retourner un dictionnaire dont les clés sont les noms des composants :
Retourne
dict[str, Any]
Dictionnaire de composants.
- Si return_dict_with_names=True, les clés sont les noms des composants.
- Si return_dict_with_names=False, les clés sont les identifiants des composants.
Lève
ValueError
ValueError— Si des noms de composants en double sont trouvés dans les résultats de recherche lorsque return_dict_with_names=True
Récupérer des composants à partir d'une liste d'identifiants.
get_components_by_names
< source >( names: list[str]collection: str | None = None ) → dict[str, Any]
Paramètres
- names (list[str]) — liste des noms des composants
- collection (str | None) — Collection facultative à utiliser pour le filtrage
Retourne
dict[str, Any]
Dictionnaire de composants avec les noms de composants en tant que clés
Lève
ValueError
ValueError— Si des noms de composants en double sont trouvés dans les résultats de recherche
Récupérer des composants à partir d'une liste de noms, éventuellement filtrée par collection.
get_ids
< source >( names: str | list[str] = Nonecollection: str | None = None ) → list[str]
Obtenir les identifiants de composants à partir d'une liste de noms, éventuellement filtrée par collection.
get_model_info
< source >( component_id: strfields: str | list[str] | None = None )
Obtenez des informations complètes sur un composant.
get_one
< source >( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )
Paramètres
- component_id (str | None) — ID de composant facultatif à récupérer
- name (str | None) — Nom du composant ou motif
- collection (str | None) — Collection facultative à utiliser pour le filtrage
- load_id (str | None) — load_id facultatif pour filtrer
Lève
ValueError
ValueError— Si aucun composant ne correspond ou si plusieurs composants correspondent
Obtenir un composant unique en :
- recherche par nom (correspondance de motif), collection ou load_id.
- passage d'un component_id Lève une erreur si plusieurs composants correspondent ou si aucun n'est trouvé.
supprimer
< source >( component_id: str = None )
Supprimer un composant du ComponentsManager.
Supprimer un composant d'une collection.
search_components
< source >( names: str | None = Nonecollection: str | None = Noneload_id: str | None = Nonereturn_dict_with_names: bool = True )
Paramètres
- names — Nom(s) de composant(s) ou motif(s)
Motifs :
- “unet” : correspond à tout composant dont le nom de base est “unet” (par ex. unet_123abc)
- “!unet” : tout sauf les composants dont le nom de base est “unet”
- “unet*” : tout élément dont le nom de base commence par “unet”
- “!unet*” : tout élément dont le nom de base ne commence PAS par “unet”
- ”unet” : tout élément dont le nom de base contient “unet”
- “!unet” : tout élément dont le nom de base ne contient pas “unet”
- “refiner|vae|unet” : tout élément dont le nom de base correspond exactement à « refiner », « vae » ou « unet »
- “!refiner|vae|unet” : tout élément dont le nom de base ne correspond pas exactement à “refiner”, “vae” ou “unet”
- “unet|vae” : tout élément dont le nom de base commence par “unet” OU par “vae”
- collection — Collection facultative à utiliser pour le filtrage
- load_id — load_id facultatif pour filtrer
- return_dict_with_names — Si True, renvoie un dictionnaire dont les clés sont les noms des composants, et lève une erreur si plusieurs composants portant le même nom sont trouvés. Si False, renvoie un dictionnaire dont les clés sont les identifiants des composants.
Recherchez des composants par nom à l'aide d'une correspondance de motifs simple. Filtrez éventuellement par collection ou load_id.
set_offload_strategy
< source >( offload_strategy )
Paramètres
- offload_strategy —
Toute fonction appelable ayant la signature
(hooks, model_id, model, execution_device) -> hooks: elle reçoit les hooks des modèles actuellement sur l’appareil et renvoie ceux à décharger avant le chargement du modèle entrant. La valeur par défaut estAutoOffloadStrategy, qui libère la combinaison minimale suffisante.
Remplace la stratégie de déchargement sur tous les modèles gérés. Valable uniquement lorsque le déchargement automatique sur CPU est activé.