Diffusers documentation

Pipeline

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

Pipeline

ModularPipeline

classe diffusers.ModularPipeline

< >

( 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 )

Paramètres

  • blocks — ModularPipelineBlocks, les blocs à utiliser dans le pipeline

Classe de base pour tous les pipelines modulaires.

from_pretrained

< >

( 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 (str ou os.PathLike, facultatif) — Chemin vers une configuration de pipeline pré-entraînée. Il tentera d’abord de charger la configuration depuis modular_model_index.json, puis basculera sur model_index.json pour 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é de pretrained_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 que load_components() ne charge — que les composants utilisés par ce workflow.

Charger un ModularPipeline depuis un dépôt du hub Hugging Face.

get_component_spec

< >

( name: str )

load_components

< >

( 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

< >

( **kwargs )

Paramètres

  • **kwargs — Arguments par mot-clé dont les clés sont les noms des composants et les valeurs sont les objets de composants. Par exemple, register_components(unet=unet_model, text_encoder=encoder_model)

Enregistrez les composants avec leurs spécifications correspondantes.

Cette méthode est responsable de :

  1. Définit les objets de composant en tant qu'attributs du chargeur (par exemple, self.unet = unet)
  2. Met à jour le dictionnaire de configuration, qui sera enregistré sous le nom modular_model_index.json lors de l'appel à save_pretrained (uniquement pour les composants from_pretrained)
  3. 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.json lors 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

< >

( 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 (str ou os.PathLike) — Répertoire dans lequel enregistrer le pipeline. Il sera créé s'il n'existe pas.
  • 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.
  • variant (str, facultatif) — Si spécifié, les poids sont enregistrés au format pytorch_model.<variant>.bin.
  • max_shard_size (int ou str, par défaut None) — 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éfaut False) — 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éfaut True) : Indique s'il faut mettre à jour modular_model_index.json afin que la spécification de chargement de chaque composant enregistré pointe vers la destination : repo_id lors de la publication sur le Hub, sinon save_directory. Les composants qui ne sont pas chargés ne sont pas enregistrés et conservent toujours leurs spécifications de chargement enregistrées. Passez False pour 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 avec update_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 de save_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éfaut False) : 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().

à

< >

( *args**kwargs ) → DiffusionPipeline

Paramètres

  • dtype (torch.dtype, facultatif) — Retourne un pipeline avec le dtype spécifié
  • device (torch.Device, facultatif) — Retourne un pipeline avec le device spécifié
  • silence_dtype_warnings (str, facultatif, par défaut False) — Indique s'il faut omettre les avertissements si le dtype cible n'est pas compatible avec le device cible.

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) → DiffusionPipeline pour renvoyer un pipeline avec le dtype spécifié
  • to(device, silence_dtype_warnings=False) → DiffusionPipeline pour renvoyer un pipeline avec le device spécifié
  • to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline pour renvoyer un pipeline avec le device et le dtype spécifiés

unload_components

< >

( names: list[str] | str )

Paramètres

  • names — nom du composant ou liste de noms de composants à décharger.

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

< >

( **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() ou ComponentSpec.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)

Mettre à jour les composants et les valeurs et spécifications de configuration après l'instantiation du pipeline.

Cette méthode vous permet de :

  1. Remplacer les composants existants par de nouveaux (par exemple, mettre à jour self.unet ou self.text_encoder)
  2. 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_specs et _config_specs
  • le dictionnaire config, qui sera enregistré sous le nom modular_model_index.json lors 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() ou ComponentSpec.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 dans modular_model_index.json mises à jour automatiquement lors de l'appel à save_pretrained().
  • Les objets ConfigMixin sans poids (par exemple, les planificateurs, les guides) peuvent être passés directement.
Update on GitHub