Diffusers documentation
Blocs de pipeline
Blocs de pipeline
ModularPipelineBlocks
Classe de base pour tous les blocs de Pipeline : ConditionalPipelineBlocks, AutoPipelineBlocks, SequentialPipelineBlocks, LoopSequentialPipelineBlocks
ModularPipelineBlocks fournit une méthode pour charger et enregistrer la définition des blocs de pipeline.
Obtenir toutes les entrées et les intermédiaires dans un seul dictionnaire
get_execution_blocks
< source >( **kwargs )
Obtenir le ou les blocs qui s'exécuteraient étant donné les entrées. Doit être implémenté par les sous-classes qui prennent en charge la sélection conditionnelle de blocs.
get_workflow
< source >( workflow_name: str )
Récupère les blocs d'exécution pour un workflow spécifique. Doit être implémenté par les sous-classes qui définissent _workflow_map.
init_pipeline
< source >( pretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = None )
créer un ModularPipeline, accepter éventuellement pretrained_model_name_or_path pour charger depuis le hub.
SequentialPipelineBlocks
classe diffusers.SequentialPipelineBlocks
< source >( )
Un bloc de pipeline qui combine plusieurs classes de blocs de pipeline en un seul. Lorsqu'il est appelé, il appelle chaque bloc dans l'ordre.
Cette classe hérite de ModularPipelineBlocks. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les blocs de pipeline (tel que le chargement ou l'enregistrement, etc.)
from_blocks_dict
< source >( blocks_dict: dictdescription: str | None = None )
Crée une instance de SequentialPipelineBlocks à partir d'un dictionnaire de blocs.
get_execution_blocks
< source >( **kwargs )
Obtenez les blocs qui s’exécuteraient avec les entrées spécifiées.
Lorsque la traversée parcourt les blocs séquentiels, les sorties intermédiaires des blocs résolus sont ajoutées aux entrées actives. Cela signifie que les blocs conditionnels qui dépendent d’intermédiaires (par exemple, « exécuter img2img si image_latents est présent ») seront résolus correctement, à condition que la condition soit basée sur la présence ou l’absence (None ou non None), et non sur la valeur réelle.
LoopSequentialPipelineBlocks
classe diffusers.LoopSequentialPipelineBlocks
< source >( )
Un bloc Pipeline qui combine plusieurs classes de blocs de pipeline dans une boucle For. Lorsqu'il est appelé, il appelle chaque bloc dans l'ordre.
Cette classe hérite de ModularPipelineBlocks. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les blocs de pipeline (tel que le chargement ou l'enregistrement, etc.)
from_blocks_dict
< source >( blocks_dict: dict )
Crée une instance de LoopSequentialPipelineBlocks à partir d'un dictionnaire de blocs.
AutoPipelineBlocks
classe diffusers.AutoPipelineBlocks
< source >( )
Paramètres
- block_classes —
Liste des classes de blocs à utiliser. Doit avoir la même longueur que
block_namesetblock_trigger_inputs. - block_names —
Liste des noms de chaque bloc. Doit avoir la même longueur que
block_classesetblock_trigger_inputs. - block_trigger_inputs —
Liste des noms d’entrées où chaque élément spécifie l’entrée de déclenchement pour le bloc correspondant. Utilisez
Nonepour marquer le bloc par défaut.
Un bloc Pipeline qui sélectionne automatiquement un bloc à exécuter en fonction de la présence d'entrées déclencheuses.
Il s’agit d’une version spécialisée de ConditionalPipelineBlocks dans laquelle :
- Chaque bloc possède une entrée de déclencheur correspondante (correspondance 1:1)
- La sélection du bloc est automatique : le premier bloc dont l'entrée de déclenchement est présente est sélectionné
block_trigger_inputsdoit avoir la même longueur queblock_namesetblock_classes- Utilisez
Nonedansblock_trigger_inputspour spécifier le bloc par défaut, c'est-à-dire le bloc qui s'exécutera si aucune entrée de déclenchement n'est présente
Exemple :
class MyAutoBlock(AutoPipelineBlocks):
block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
block_names = ["inpaint", "img2img", "text2img"]
block_trigger_inputs = ["mask_image", "image", None] # text2img is the defaultAvec cette définition :
- Tant que
mask_imageest fourni, le bloc « inpaint » s’exécute (queimagesoit fourni ou non). - Si
mask_imagen'est pas fourni mais queimagel'est, le bloc « img2img » s'exécute - Sinon, le bloc « text2img » s’exécute (par défaut, le déclencheur est
None)
Sélectionner le bloc en fonction de l'entrée de déclencheur présente (non None).
ConditionalPipelineBlocks
classe diffusers.ConditionalPipelineBlocks
< source >( )
Paramètres
- block_classes — Liste des classes de blocs à utiliser. Doit avoir la même longueur que
block_names. - block_names — Liste des noms de chaque bloc. Doit avoir la même longueur que
block_classes. - block_trigger_inputs — Liste des noms d’entrées que
select_block()utilise pour déterminer quel bloc exécuter. PourConditionalPipelineBlocks, cela n’a pas besoin de correspondre àblock_namesetblock_classes. PourAutoPipelineBlocks, cela doit avoir la même longueur queblock_namesetblock_classes, où chaque élément spécifie l’entrée déclencheuse du bloc correspondant. - default_block_name — Nom du bloc par défaut à exécuter lorsque aucune entrée de déclenchement ne correspond. Si None, ce bloc peut être entièrement ignoré si aucune entrée de déclenchement n'est fournie.
Un bloc Pipeline qui sélectionne conditionnellement un bloc à exécuter en fonction des entrées. Les sous-classes doivent implémenter la méthode select_block pour définir la logique de sélection du bloc. Actuellement, nous ne prenons en charge que la logique de sélection basée sur la présence ou l'absence d'entrées (c'est-à-dire si elles sont None ou non)
Cette classe hérite de ModularPipelineBlocks. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les blocs de pipeline (tel que le chargement ou l'enregistrement, etc.)
get_execution_blocks
< source >( **kwargs ) →
ModularPipelineBlocks
Obtenir le ou les blocs qui s’exécuteraient étant donné les entrées.
Résout récursivement les ConditionalPipelineBlocks imbriqués jusqu'à atteindre l'un des éléments suivants :
- A leaf block (no sub_blocks or LoopSequentialPipelineBlocks) → returns single
ModularPipelineBlocks - Un
SequentialPipelineBlocks→ délègue à songet_execution_blocks()qui renvoie unSequentialPipelineBlockscontenant les blocs d'exécution résolus
select_block
< source >( **kwargs ) → str | None
Sélectionnez le bloc à exécuter en fonction des entrées de déclenchement. Les sous-classes doivent implémenter cette méthode pour définir la logique de sélection du bloc.
Note : lorsque les entrées de déclenchement incluent des sorties intermédiaires de blocs antérieurs, la logique de sélection ne doit dépendre que de la présence ou de l’absence de l’entrée (c’est-à-dire qu’elle soit None ou non), et non de sa valeur réelle. En effet, get_execution_blocks() résout les conditions de manière statique en propageant les noms des sorties intermédiaires sans leurs valeurs d’exécution.