Diffusers documentation
Pipeline
Pipeline
ModularPipeline
classe diffusers.ModularPipeline
< source >( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )
Classe de base pour tous les pipelines modulaires.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | Nonetrust_remote_code: bool | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = None**kwargs )
Paramètres
- pretrained_model_name_or_path (
strouos.PathLike, facultatif) — Chemin vers une configuration de pipeline pré-entraînée. Il tentera d’abord de charger la configuration depuismodular_model_index.json, puis basculera surmodel_index.jsonpour la compatibilité avec les dépôts standards non modulaires. Si pretrained_model_name_or_path ne contient aucune configuration de pipeline, il sera défini sur None lors de l’initialisation. - trust_remote_code (
bool, optionnel) — Indique s'il faut faire confiance au code distant lors du chargement du pipeline. Doit être défini sur True si vous souhaitez créer des blocs de pipeline basés sur le code personnalisé depretrained_model_name_or_path - components_manager (
ComponentsManager, optionnel) — Instance de ComponentsManager pour gérer plusieurs composants sur différents pipelines et appliquer des stratégies de déchargement. - collection (
str, optional) —` Collection name for organizing components in the ComponentsManager. - workflow (
str, optionnel) — Nom d’un workflow déclaré par les blocs du pipeline. S’il est fourni, les blocs sont réduits aux blocs d’exécution de ce workflow, de sorte que le pipeline n’attend — et queload_components()ne charge — que les composants utilisés par ce workflow.
Charger un ModularPipeline depuis un dépôt du hub Hugging Face.
load_components
< source >( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )
Paramètres
- names — liste des noms des composants à charger. Si None, tous les composants dont default_creation_method == “from_pretrained” seront chargés. Si fourni sous forme de liste ou de chaîne, seuls les composants spécifiés seront chargés.
- workflow — nom d’un workflow déclaré par les blocs du pipeline. S’il est fourni, seuls les composants utilisés par les blocs d’exécution du workflow sont chargés. Ne peut pas être combiné avec
names. - **kwargs — arguments supplémentaires à transmettre à
from_pretrained().Peut être : - une seule valeur à appliquer à tous les composants à charger, par exemple dtype=torch.bfloat16 - un dictionnaire, par exemple dtype={“unet”: torch.bfloat16, “default”: torch.float32} - si nécessaire, remplacer ComponentSpec si un champ de chargement différent est passé dans kwargs, par exemple pretrained_model_name_or_path, variant, revision, etc. - si nécessaire, remplacer ComponentSpec si un champ de chargement différent est passé dans kwargs, par exemple pretrained_model_name_or_path, variant, revision, etc.- une seule valeur à appliquer à tous les composants à charger, par exemple dtype=torch.bfloat16
- un dict, par exemple dtype={“unet”: torch.bfloat16, “default”: torch.float32}
- si elle remplace éventuellement ComponentSpec lorsqu'un champ de chargement différent est passé dans kwargs, par exemple
pretrained_model_name_or_path,variant,revision, etc. - si elle remplace éventuellement ComponentSpec lorsqu'un champ de chargement différent est passé dans kwargs, par exemple
pretrained_model_name_or_path,variant,revision, etc.
Charger les composants sélectionnés à partir des spécifications.
register_components
< source >( **kwargs )
Enregistrez les composants avec leurs spécifications correspondantes.
Cette méthode est responsable de :
- Définit les objets de composant en tant qu'attributs du chargeur (par exemple, self.unet = unet)
- Met à jour le dictionnaire de configuration, qui sera enregistré sous le nom
modular_model_index.jsonlors de l'appel àsave_pretrained(uniquement pour les composants from_pretrained) - Ajoute des composants au gestionnaire de composants si celui-ci est attaché (uniquement pour les composants from_pretrained)
Cette méthode est appelée lorsque :
- Les composants sont d'abord initialisés dans init:
- les composants de from_pretrained non chargés lors de init sont enregistrés comme None ;
- les composants non from_pretrained sont créés lors de init et enregistrés en tant que l'objet lui-même
- Les composants sont mis à jour à l'aide de la méthode
update_components(): par exemple, loader.update_components(unet=unet) ou loader.update_components(guider=guider_spec) - (from_pretrained) Les composants sont chargés avec la méthode
load_components(): par exemple, loader.load_components(names=[“unet”]) ou loader.load_components() pour charger tous les composants par défaut
Remarques :
- Lors de l'enregistrement de None pour un composant, l'attribut est défini sur None, mais les spécifications sont toujours synchronisées avec le dictionnaire de configuration, qui sera enregistré sous la forme
modular_model_index.jsonlors de l'appel àsave_pretrained. - Les component_specs sont mis à jour pour correspondre au nouveau composant en dehors de cette méthode, par exemple dans la méthode
update_components()
save_pretrained
< source >( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = False**kwargs )
Paramètres
- save_directory (
strouos.PathLike) — Répertoire dans lequel enregistrer le pipeline. Il sera créé s'il n'existe pas. - safe_serialization (
bool, facultatif, par défautTrue) — Indique si le modèle doit être enregistré en utilisantsafetensorsou la méthode traditionnelle de PyTorch avecpickle. - variant (
str, facultatif) — Si spécifié, les poids sont enregistrés au formatpytorch_model.<variant>.bin. - max_shard_size (
intoustr, par défautNone) — Taille maximale d'un checkpoint avant son fractionnement. Les shards du checkpoint auront chacun une taille inférieure à cette valeur. Si exprimée sous forme de chaîne de caractères, elle doit être composée de chiffres suivis d'une unité (comme"5GB"). Si exprimée sous forme d'entier, l'unité est l'octet. - push_to_hub (
bool, facultatif, par défautFalse) — Indique s'il faut pousser le pipeline vers le hub de modèles Hugging Face après l'avoir enregistré. - **kwargs — Arguments de mots-clés supplémentaires :
overwrite_modular_index(bool, facultatif, valeur par défautTrue) : Indique s'il faut mettre à jourmodular_model_index.jsonafin que la spécification de chargement de chaque composant enregistré pointe vers la destination :repo_idlors de la publication sur le Hub, sinonsave_directory. Les composants qui ne sont pas chargés ne sont pas enregistrés et conservent toujours leurs spécifications de chargement enregistrées. PassezFalsepour conserver également les spécifications enregistrées des composants en cours d'enregistrement (par exemple pour un index qui référence intentionnellement d'autres dépôts) ; les composants sans identifiant de chargement (tels que les modèles personnalisés ajoutés avecupdate_components) sont toujours réécrits car ils n'ont pas de source enregistrée.repo_id(str, facultatif) : L’identifiant du dépôt vers lequel pousser le pipeline. Par défaut, il s’agit de la dernière composante desave_directory.commit_message(str, facultatif) : Message de commit pour l'opération de push vers le hub.private(bool, facultatif) : Indique si le dépôt doit être privé.create_pr(bool, facultatif, par défautFalse) : Indique s'il faut créer une pull request plutôt que de pousser directement.token(str, facultatif) : Le jeton Hugging Face à utiliser pour l’authentification.
Enregistrez le pipeline et tous ses composants dans un répertoire afin qu’il puisse être rechargé à l’aide de la méthode de classe from_pretrained().
à
< source >( *args**kwargs ) → DiffusionPipeline
Paramètres
- dtype (
torch.dtype, facultatif) — Retourne un pipeline avec ledtypespécifié - device (
torch.Device, facultatif) — Retourne un pipeline avec ledevicespécifié - silence_dtype_warnings (
str, facultatif, par défautFalse) — Indique s'il faut omettre les avertissements si ledtypecible n'est pas compatible avec ledevicecible.
Retourne
Le pipeline converti en dtype et/ou dtype spécifié(s).
Effectue la conversion du dtype et/ou du device du Pipeline. Un torch.dtype et un torch.device sont inférés à partir des arguments de self.to(*args, **kwargs).
> Si le pipeline possède déjà le torch.dtype et le torch.device corrects, il est renvoyé tel quel. Sinon, > le pipeline renvoyé est une copie de self avec le torch.dtype et le torch.device souhaités.
Voici les façons d'appeler to :
to(dtype, silence_dtype_warnings=False) → DiffusionPipelinepour renvoyer un pipeline avec ledtypespécifiéto(device, silence_dtype_warnings=False) → DiffusionPipelinepour renvoyer un pipeline avec ledevicespécifiéto(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipelinepour renvoyer un pipeline avec ledeviceet ledtypespécifiés
unload_components
< source >( names: list[str] | str )
Décharger les composants sélectionnés, libérant ainsi leur mémoire.
L'attribut component est réinitialisé à None et, si un ComponentsManager est attaché, le composant est retiré
de celui-ci. La spécification du composant n'est pas modifiée, ce qui permet de le recharger ultérieurement avec load_components().
update_components
< source >( **kwargs )
Paramètres
- **kwargs — Objets de composants ou valeurs de configuration à mettre à jour :
- Objets de composant : les modèles chargés avec
AutoModel.from_pretrained()ouComponentSpec.load()sont automatiquement étiquetés avec des informations de chargement. Les objets ConfigMixin sans poids (par exemple, les planificateurs, les guides) peuvent être transmis directement. - Valeurs de configuration : valeurs simples pour mettre à jour les paramètres de configuration
(p. ex.
requires_safety_checker=False)
- Objets de composant : les modèles chargés avec
Mettre à jour les composants et les valeurs et spécifications de configuration après l'instantiation du pipeline.
Cette méthode vous permet de :
- Remplacer les composants existants par de nouveaux (par exemple, mettre à jour
self.unetouself.text_encoder) - Mettre à jour les valeurs de configuration (par exemple, modifier le drapeau
self.requires_safety_checker)
En plus de mettre à jour les composants et les valeurs de configuration en tant qu'attributs du pipeline, la méthode met également à jour :
- les spécifications correspondantes dans
_component_specset_config_specs - le dictionnaire
config, qui sera enregistré sous le nommodular_model_index.jsonlors de l'appel àsave_pretrained
Exemples :
# Update pre-trained model
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)
# Update configuration values
pipeline.update_components(requires_safety_checker=False)Remarques :
- Les composants chargés avec
AutoModel.from_pretrained()ouComponentSpec.load()conservent leurs spécifications de chargement pour la sérialisation. Les composants personnalisés ou chargés localement sans références au Hub voient leurs entrées dansmodular_model_index.jsonmises à jour automatiquement lors de l'appel àsave_pretrained(). - Les objets ConfigMixin sans poids (par exemple, les planificateurs, les guides) peuvent être passés directement.