Diffusers documentation
Blocos de pipeline
Blocos de pipeline
ModularPipelineBlocks
Classe base para todos os Blocos de Pipeline: ConditionalPipelineBlocks, AutoPipelineBlocks, SequentialPipelineBlocks, LoopSequentialPipelineBlocks
ModularPipelineBlocks fornece método para carregar e salvar a definição de blocos de pipeline.
Obtenha todas as entradas e intermediários em um único dicionário
get_execution_blocks
< source >( **kwargs )
Obtém o(s) bloco(s) que seriam executados com base nas entradas. Deve ser implementado por subclasses que suportam seleção condicional de blocos.
get_workflow
< source >( workflow_name: str )
Obtenha os blocos de execução para um workflow específico. Deve ser implementado por subclasses que definem _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 )
crie um ModularPipeline, aceitando opcionalmente pretrained_model_name_or_path para carregar do hub.
SequentialPipelineBlocks
classe diffusers.SequentialPipelineBlocks
< source >( )
Um Pipeline Blocks que combina várias classes de bloco de pipeline em uma única. Quando chamado, ele chamará cada bloco em sequência.
Esta classe herda de ModularPipelineBlocks. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os blocos de pipeline (como carregamento ou salvamento, etc.)
from_blocks_dict
< source >( blocks_dict: dictdescription: str | None = None )
Cria uma instância de SequentialPipelineBlocks a partir de um dicionário de blocos.
get_execution_blocks
< source >( **kwargs )
Obtenha os blocos que seriam executados com as entradas especificadas.
À medida que a travessia percorre os blocos sequenciais, as saídas intermediárias dos blocos resolvidos são adicionadas às entradas ativas. Isso significa que blocos condicionais que dependem de intermediários (por exemplo, “executar img2img se image_latents estiver presente”) serão resolvidos corretamente, desde que a condição seja baseada na presença/ausência (None ou não None), e não no valor real.
LoopSequentialPipelineBlocks
classe diffusers.LoopSequentialPipelineBlocks
< source >( )
Um bloco Pipeline que combina várias classes de bloco de pipeline em um For Loop. Quando chamado, ele chamará cada bloco em sequência.
Esta classe herda de ModularPipelineBlocks. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os blocos de pipeline (como carregamento ou salvamento, etc.)
from_blocks_dict
< source >( blocks_dict: dict )
Cria uma instância de LoopSequentialPipelineBlocks a partir de um dicionário de blocos.
AutoPipelineBlocks
classe diffusers.AutoPipelineBlocks
< source >( )
Parâmetros
- block_classes —
Lista de classes de bloco a serem usadas. Deve ter o mesmo comprimento que
block_nameseblock_trigger_inputs. - block_names —
Lista de nomes para cada bloco. Deve ter o mesmo comprimento que
block_classeseblock_trigger_inputs. - block_trigger_inputs —
Lista de nomes de entrada em que cada elemento especifica a entrada de gatilho para o bloco correspondente. Use
Nonepara marcar o bloco padrão.
Blocos de Pipeline que selecionam automaticamente um bloco para executar com base na presença de entradas de gatilho.
Esta é uma versão especializada de ConditionalPipelineBlocks em que:
- Cada bloco possui uma entrada de gatilho correspondente (mapeamento 1:1)
- A seleção de bloco é automática: o primeiro bloco cuja entrada de gatilho está presente é selecionado
block_trigger_inputsdeve ter o mesmo comprimento queblock_nameseblock_classes- Use
Noneemblock_trigger_inputspara especificar o bloco padrão, ou seja, o bloco que será executado se não houver entradas de gatilho
Exemplo:
class MyAutoBlock(AutoPipelineBlocks):
block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
block_names = ["inpaint", "img2img", "text2img"]
block_trigger_inputs = ["mask_image", "image", None] # text2img is the defaultCom essa definição:
- Desde que
mask_imageseja fornecido, o bloco “inpaint” é executado (independentemente deimageser fornecido ou não) - If
mask_imageis not provided butimageis provided, “img2img” block runs - Caso contrário, o bloco “text2img” é executado (padrão, o gatilho é
None)
Selecione o bloco com base em qual entrada de gatilho está presente (não é None).
ConditionalPipelineBlocks
classe diffusers.ConditionalPipelineBlocks
< source >( )
Parâmetros
- block_classes — Lista de classes de bloco a serem usadas. Deve ter o mesmo comprimento que
block_names. - block_names — Lista de nomes para cada bloco. Deve ter o mesmo comprimento que
block_classes. - block_trigger_inputs — Lista de nomes de entrada que
select_block()usa para determinar qual bloco executar. ParaConditionalPipelineBlocks, isso não precisa corresponder ablock_nameseblock_classes. ParaAutoPipelineBlocks, isso deve ter o mesmo comprimento queblock_nameseblock_classes, onde cada elemento especifica a entrada de gatilho para o bloco correspondente. - default_block_name — Nome do bloco padrão a ser executado quando nenhuma entrada de gatilho corresponder. Se for None, este bloco pode ser totalmente ignorado quando nenhuma entrada de gatilho for fornecida.
Um Pipeline Blocks que seleciona condicionalmente um bloco para execução com base nas entradas. As subclasses devem implementar o método select_block para definir a lógica de seleção do bloco. Atualmente, suportamos apenas lógica de seleção baseada na presença ou ausência de entradas (ou seja, se são None ou não).
Esta classe herda de ModularPipelineBlocks. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os blocos de pipeline (como carregamento ou salvamento, etc.)
get_execution_blocks
< source >( **kwargs ) →
ModularPipelineBlocks
Obtenha o(s) bloco(s) que seriam executados com as entradas fornecidas.
Resolve recursivamente blocos aninhados de ConditionalPipelineBlocks até atingir:
- A leaf block (no sub_blocks or LoopSequentialPipelineBlocks) → returns single
ModularPipelineBlocks - A
SequentialPipelineBlocks→ delega para o seuget_execution_blocks(), que retorna umSequentialPipelineBlockscontendo os blocos de execução resolvidos
select_block
< source >( **kwargs ) → str | None
Selecione o bloco a ser executado com base nas entradas do gatilho. As subclasses devem implementar este método para definir a lógica de seleção do bloco.
Nota: Quando as entradas de gatilho incluem saídas intermediárias de blocos anteriores, a lógica de seleção deve depender apenas da presença ou ausência da entrada (ou seja, se ela é None ou não), e não do seu valor real. Isso ocorre porque get_execution_blocks() resolve as condições estaticamente, propagando os nomes das saídas intermediárias sem seus valores em tempo de execução.