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 块

ModularPipelineBlocks

class diffusers.ModularPipelineBlocks

< >

( )

所有 Pipeline Blocks 的基类:ConditionalPipelineBlocks、AutoPipelineBlocks、SequentialPipelineBlocks、LoopSequentialPipelineBlocks

ModularPipelineBlocks 提供了用于加载和保存流水线块定义的方法。

get_block_state

< >

( state: PipelineState )

在一个字典中获取所有输入和中间值

get_execution_blocks

< >

( **kwargs )

参数

  • **kwargs — 输入名称和值。只有触发输入会影响块的选择。

获取在给定输入下将执行的块。支持条件块选择的子类必须实现此方法。

get_workflow

< >

( workflow_name: str )

参数

  • workflow_name — 要获取的工作流名称。

获取特定工作流的执行块。必须由定义了 _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 )

创建一个 ModularPipeline,可选地接受 pretrained_model_name_or_path 以从 hub 加载。

SequentialPipelineBlocks

class diffusers.SequentialPipelineBlocks

< >

( )

参数

  • block_classes — 要使用的块类列表
  • block_names — 每个块的名称前缀列表

A Pipeline Blocks 将多个 pipeline block 类组合为一个。调用时,它会按顺序依次调用每个 block。

此类继承自 ModularPipelineBlocks。有关该库为所有 pipeline 块实现的通用方法(例如加载或保存等),请参阅父类文档。

from_blocks_dict

< >

( blocks_dict: dictdescription: str | None = None )

参数

  • blocks_dict — 将块名称映射到块类或实例的字典

从块字典创建 SequentialPipelineBlocks 实例。

get_execution_blocks

< >

( **kwargs )

参数

  • **kwargs — 输入名称和值。只有触发输入会影响块的选择。

获取在给定指定输入的情况下将执行的块。

当遍历按顺序处理各个块时,已解析块的中间输出会被添加到活动输入中。这意味着,只要条件基于存在性(即 None 或非 None),而非实际值,依赖中间结果的有条件块(例如“如果 image_latents 存在,则运行 img2img”)就能正确解析。

LoopSequentialPipelineBlocks

class diffusers.LoopSequentialPipelineBlocks

< >

( )

参数

  • block_classes — 要使用的块类列表
  • block_names — 每个块的名称前缀列表

A Pipeline 块将多个 pipeline 块类组合到一个 For Loop 中。调用时,它会按顺序调用每个块。

此类继承自 ModularPipelineBlocks。有关该库为所有 pipeline 块实现的通用方法(例如加载或保存等),请参阅父类文档。

from_blocks_dict

< >

( blocks_dict: dict )

参数

  • blocks_dict — 将块名称映射到块实例的字典

从块字典创建 LoopSequentialPipelineBlocks 实例。

AutoPipelineBlocks

class diffusers.AutoPipelineBlocks

< >

( )

参数

  • block_classes — 要使用的块类列表。其长度必须与 block_names 和 block_trigger_inputs 相同。
  • block_names — 每个块的名称列表。其长度必须与 block_classes 和 block_trigger_inputs 相同。
  • block_trigger_inputs — 输入名称列表,其中每个元素指定对应块的触发输入。使用 None 来标记默认块。

Pipeline 块会根据触发输入的存在情况,自动选择要运行的块。

这是 ConditionalPipelineBlocks 的一个专用版本,其中:

  • 每个块都有一个对应的触发输入(1:1 映射)
  • 块选择是自动的:第一个触发输入存在的块会被选中
  • block_trigger_inputs 的长度必须与 block_names 和 block_classes 相同
  • 在 block_trigger_inputs 中使用 None 来指定默认块,即在没有触发输入时运行的块

示例:

    class MyAutoBlock(AutoPipelineBlocks):
        block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
        block_names = ["inpaint", "img2img", "text2img"]
        block_trigger_inputs = ["mask_image", "image", None]  # text2img is the default

使用此定义:

  • 只要提供了 mask_image,就会运行“inpaint”块(无论是否提供了 image)。
  • 如果未提供 mask_image 但提供了 image,则会运行 “img2img” 块
  • 否则,将运行“text2img”块(默认值,触发器为 None)

select_block

< >

( **kwargs )

根据哪个触发输入存在(不为 None)来选择块。

ConditionalPipelineBlocks

class diffusers.ConditionalPipelineBlocks

< >

( )

参数

  • block_classes — 要使用的块类列表。其长度必须与 block_names 相同。
  • block_names — 每个块的名称列表。其长度必须与 block_classes 相同。
  • block_trigger_inputs — select_block() 用于确定要运行哪个 block 的输入名称列表。 对于 ConditionalPipelineBlocks,此参数无需与 block_names 和 block_classes 对应。对于 AutoPipelineBlocks,此参数的长度必须与 block_names 和 block_classes 相同,其中每个 元素指定对应 block 的触发输入。
  • default_block_name — 当没有触发输入匹配时,要运行的默认块的名称。 如果为 None,则在未提供触发输入时,可以完全跳过此块。

Pipeline Blocks 会根据输入有条件地选择要运行的 block。子类必须实现 select_block 方法以定义选择 block 的逻辑。目前,我们仅支持基于输入是否存在(即是否为 None)的选择逻辑。

此类继承自 ModularPipelineBlocks。有关该库为所有 pipeline 块实现的通用方法(例如加载或保存等),请参阅父类文档。

get_execution_blocks

< >

( **kwargs ) →

  • ModularPipelineBlocks

参数

  • **kwargs — 输入名称和值。只有触发输入会影响块的选择。

返回值

  • ModularPipelineBlocks

叶块或已解析的 SequentialPipelineBlocks

  • None:如果此块将被跳过(没有匹配的触发器且没有默认值)

获取给定输入下将执行的块。

递归解析嵌套的 ConditionalPipelineBlocks,直到达到以下任一条件:

  • A leaf block (no sub_blocks or LoopSequentialPipelineBlocks) → returns single ModularPipelineBlocks
  • SequentialPipelineBlocks → 委托给其 get_execution_blocks(),该方法返回一个包含已解析执行块的 SequentialPipelineBlocks

select_block

< >

( **kwargs ) → str | None

参数

  • **kwargs — 来自 state 的触发器输入名称及其值。

返回值

str | None

要运行的块名称,或 None 以使用默认值/跳过。

根据触发器输入选择要运行的块。子类必须实现此方法以定义选择块的逻辑。

注意:当触发输入包含来自前面块的中间输出时,选择逻辑应仅取决于该输入是否存在(即是否为 None),而不取决于其实际值。这是因为 get_execution_blocks() 通过传播中间输出名称(而不传播其运行时值)来静态地解析条件。

Update on GitHub