Diffusers documentation

Blocos de 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

Blocos de pipeline

ModularPipelineBlocks

classe diffusers.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.

get_block_state

< >

( state: PipelineState )

Obtenha todas as entradas e intermediários em um único dicionário

get_execution_blocks

< >

( **kwargs )

Parâmetros

  • **kwargs — Nomes e valores de entrada. Somente as entradas de gatilho afetam a seleção de blocos.

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

< >

( workflow_name: str )

Parâmetros

  • workflow_name — Nome do workflow a ser recuperado.

Obtenha os blocos de execução para um workflow específico. Deve ser implementado por subclasses que definem _workflow_map.

init_pipeline

< >

( 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

< >

( )

Parâmetros

  • block_classes — lista de classes de bloco a serem usadas
  • block_names — lista de prefixos para cada bloco

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

< >

( blocks_dict: dictdescription: str | None = None )

Parâmetros

  • blocks_dict — Dicionário que mapeia nomes de blocos para classes ou instâncias de blocos

Cria uma instância de SequentialPipelineBlocks a partir de um dicionário de blocos.

get_execution_blocks

< >

( **kwargs )

Parâmetros

  • **kwargs — Nomes e valores de entrada. Somente as entradas de gatilho afetam a seleção de blocos.

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

< >

( )

Parâmetros

  • block_classes — lista de classes de bloco a serem usadas
  • block_names — lista de prefixos para cada bloco

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

< >

( blocks_dict: dict )

Parâmetros

  • blocks_dict — Dicionário que mapeia nomes de blocos para instâncias de blocos

Cria uma instância de LoopSequentialPipelineBlocks a partir de um dicionário de blocos.

AutoPipelineBlocks

classe diffusers.AutoPipelineBlocks

< >

( )

Parâmetros

  • block_classes — Lista de classes de bloco a serem usadas. Deve ter o mesmo comprimento que block_names e block_trigger_inputs.
  • block_names — Lista de nomes para cada bloco. Deve ter o mesmo comprimento que block_classes e block_trigger_inputs.
  • block_trigger_inputs — Lista de nomes de entrada em que cada elemento especifica a entrada de gatilho para o bloco correspondente. Use None para 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_inputs deve ter o mesmo comprimento que block_names e block_classes
  • Use None em block_trigger_inputs para 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 default

Com essa definição:

  • Desde que mask_image seja fornecido, o bloco “inpaint” é executado (independentemente de image ser fornecido ou não)
  • If mask_image is not provided but image is provided, “img2img” block runs
  • Caso contrário, o bloco “text2img” é executado (padrão, o gatilho é None)

select_block

< >

( **kwargs )

Selecione o bloco com base em qual entrada de gatilho está presente (não é None).

ConditionalPipelineBlocks

classe diffusers.ConditionalPipelineBlocks

< >

( )

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. Para ConditionalPipelineBlocks, isso não precisa corresponder a block_names e block_classes. Para AutoPipelineBlocks, isso deve ter o mesmo comprimento que block_names e block_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

< >

( **kwargs ) →

  • ModularPipelineBlocks

Parâmetros

  • **kwargs — Nomes e valores de entrada. Somente as entradas de gatilho afetam a seleção de blocos.

Retorna

  • ModularPipelineBlocks

Um bloco folha ou SequentialPipelineBlocks resolvido

  • None: Se esse bloco fosse ignorado (nenhum gatilho correspondente e nenhum padrão)

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 seu get_execution_blocks(), que retorna um SequentialPipelineBlocks contendo os blocos de execução resolvidos

select_block

< >

( **kwargs ) → str | None

Parâmetros

  • **kwargs — Nomes e valores de entrada do gatilho a partir do estado.

Retorna

str | None

O nome do bloco a ser executado, ou None para usar o padrão/pular.

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.

Update on GitHub