Diffusers documentation
Bloques de pipeline
Bloques de pipeline
ModularPipelineBlocks
Clase base para todos los bloques de Pipeline: ConditionalPipelineBlocks, AutoPipelineBlocks, SequentialPipelineBlocks, LoopSequentialPipelineBlocks
ModularPipelineBlocks proporciona un método para cargar y guardar la definición de los bloques de pipeline.
Obtenga todas las entradas y los intermediarios en un solo diccionario
get_execution_blocks
< source >( **kwargs )
Obtén el o los bloques que se ejecutarían dados los inputs. Debe ser implementado por las subclases que admiten la selección condicional de bloques.
get_workflow
< source >( workflow_name: str )
Obtén los bloques de ejecución para un flujo de trabajo específico. Debe ser implementado por las subclases que definen _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 )
crear un ModularPipeline, aceptar opcionalmente pretrained_model_name_or_path para cargar desde el hub.
SequentialPipelineBlocks
clase diffusers.SequentialPipelineBlocks
< source >( )
Un bloque de Pipeline que combina varias clases de bloques de pipeline en uno. Al ser llamado, ejecutará cada bloque en secuencia.
Esta clase hereda de ModularPipelineBlocks. Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los bloques de pipeline (como la carga o el guardado, etc.).
from_blocks_dict
< source >( blocks_dict: dictdescription: str | None = None )
Crea una instancia de SequentialPipelineBlocks a partir de un diccionario de bloques.
get_execution_blocks
< source >( **kwargs )
Obtén los bloques que se ejecutarían con las entradas especificadas.
A medida que la recorrida avanza por los bloques secuenciales, las salidas intermedias de los bloques resueltos se añaden a las entradas activas. Esto significa que los bloques condicionales que dependen de intermedios (p. ej., “ejecutar img2img si image_latents está presente”) se resolverán correctamente, siempre que la condición se base en la presencia/ausencia (None o no None), y no en el valor real.
LoopSequentialPipelineBlocks
clase diffusers.LoopSequentialPipelineBlocks
< source >( )
Un bloque Pipeline que combina múltiples clases de bloques de pipeline en un bucle For. Al invocarlo, llamará a cada bloque en secuencia.
Esta clase hereda de ModularPipelineBlocks. Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los bloques de pipeline (como la carga o el guardado, etc.).
from_blocks_dict
< source >( blocks_dict: dict )
Crea una instancia de LoopSequentialPipelineBlocks a partir de un diccionario de bloques.
AutoPipelineBlocks
clase diffusers.AutoPipelineBlocks
< source >( )
Parámetros
- block_classes —
Lista de clases de bloques a utilizar. Debe tener la misma longitud que
block_namesyblock_trigger_inputs. - block_names —
Lista de nombres para cada bloque. Debe tener la misma longitud que
block_classesyblock_trigger_inputs. - block_trigger_inputs —
Lista de nombres de entradas donde cada elemento especifica la entrada de activación para el bloque correspondiente. Use
Nonepara marcar el bloque predeterminado.
Un bloque Pipeline que selecciona automáticamente un bloque para ejecutarlo en función de la presencia de entradas de activación.
Esta es una versión especializada de ConditionalPipelineBlocks donde:
- Cada bloque tiene una entrada de disparador correspondiente (mapeo 1:1)
- La selección de bloques es automática: se selecciona el primer bloque cuya entrada de activación está presente
block_trigger_inputsdebe tener la misma longitud queblock_namesyblock_classes- Use
Noneenblock_trigger_inputspara especificar el bloque predeterminado, es decir, el bloque que se ejecutará si no hay entradas de activación
Ejemplo:
class MyAutoBlock(AutoPipelineBlocks):
block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
block_names = ["inpaint", "img2img", "text2img"]
block_trigger_inputs = ["mask_image", "image", None] # text2img is the defaultCon esta definición:
- Mientras se proporcione
mask_image, se ejecuta el bloque “inpaint” (independientemente de si se proporcionaimageo no). - Si no se proporciona
mask_imagepero sí se proporcionaimage, se ejecuta el bloque “img2img” - En caso contrario, se ejecuta el bloque “text2img” (predeterminado, el disparador es
None)
Seleccione el bloque en función de la entrada de activación presente (distinta de None).
ConditionalPipelineBlocks
clase diffusers.ConditionalPipelineBlocks
< source >( )
Parámetros
- block_classes — Lista de clases de bloques que se usarán. Debe tener la misma longitud que
block_names. - block_names — Lista de nombres para cada bloque. Debe tener la misma longitud que
block_classes. - block_trigger_inputs — Lista de nombres de entrada que
select_block()utiliza para determinar qué bloque ejecutar. ParaConditionalPipelineBlocks, esto no tiene por qué corresponder ablock_namesyblock_classes. ParaAutoPipelineBlocks, esto debe tener la misma longitud queblock_namesyblock_classes, donde cada elemento especifica la entrada de activación para el bloque correspondiente. - default_block_name — Nombre del bloque predeterminado que se ejecuta cuando ninguna entrada de activación coincide. Si es None, este bloque puede omitirse por completo cuando no se proporcionan entradas de activación.
Un bloque Pipeline que selecciona condicionalmente un bloque para ejecutarlo en función de las entradas. Las subclases deben implementar el método select_block para definir la lógica de selección del bloque. Actualmente, solo admitimos lógica de selección basada en la presencia o ausencia de entradas (es decir, si son None o no).
Esta clase hereda de ModularPipelineBlocks. Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los bloques de pipeline (como la carga o el guardado, etc.).
get_execution_blocks
< source >( **kwargs ) →
ModularPipelineBlocks
Parámetros
- **kwargs — Nombres y valores de entrada. Solo las entradas de activación afectan la selección de bloques.
Devuelve
ModularPipelineBlocks
Un bloque hoja o SequentialPipelineBlocks resueltos
None: Si este bloque se omitiría (no se coincidió con ningún disparador y no hay un valor predeterminado)
Obtén el o los bloques que se ejecutarían con las entradas dadas.
Resuelve recursivamente los ConditionalPipelineBlocks anidados hasta alcanzar:
- A leaf block (no sub_blocks or LoopSequentialPipelineBlocks) → returns single
ModularPipelineBlocks - Un
SequentialPipelineBlocks→ delega en suget_execution_blocks(), que devuelve unSequentialPipelineBlocksque contiene los bloques de ejecución resueltos
select_block
< source >( **kwargs ) → str | None
Seleccione el bloque a ejecutar en función de las entradas del disparador. Las subclases deben implementar este método para definir la lógica de selección del bloque.
Nota: Cuando las entradas de activación incluyen salidas intermedias de bloques anteriores, la lógica de selección debe depender únicamente de la presencia o ausencia de la entrada (es decir, si es None o no), y no de su valor real. Esto se debe a que get_execution_blocks() resuelve las condiciones de forma estática propagando los nombres de las salidas intermedias sin sus valores en tiempo de ejecución.