Diffusers documentation

パイプラインブロック

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

パイプラインブロック

ModularPipelineBlocks

class diffusers.ModularPipelineBlocks

< >

( )

すべての Pipeline Blocks のベースクラス: ConditionalPipelineBlocks、AutoPipelineBlocks、SequentialPipelineBlocks、LoopSequentialPipelineBlocks

ModularPipelineBlocks は、パイプラインブロックの定義を読み込み、保存するためのメソッドを提供します。

get_block_state

< >

( state: PipelineState )

すべての入力と中間結果を1つの辞書に格納する

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 — 各ブロックのプレフィックスのリスト

複数のパイプラインブロッククラスを1つにまとめるPipelineブロックです。呼び出されると、各ブロックが順番に呼び出されます。

このクラスは ModularPipelineBlocks を継承しています。すべてのパイプラインブロックに対してライブラリが実装している汎用的なメソッド(読み込みや保存など)については、スーパークラスのドキュメントを参照してください。

from_blocks_dict

< >

( blocks_dict: dict[str, typing.Any]description: str | None = None )

パラメータ

  • blocks_dict — ブロック名をブロックのクラスまたはインスタンスにマッピングする辞書

ブロックの辞書からSequentialPipelineBlocksインスタンスを作成します。

get_execution_blocks

< >

( **kwargs )

パラメータ

  • **kwargs — 入力名と値。ブロックの選択に影響するのはトリガー入力のみです。

指定された入力に基づいて実行されるブロックを取得します。

走査がシーケンシャルなブロックを順に処理するにつれて、解決済みのブロックからの中間出力がアクティブな入力に追加されます。これにより、中間出力に依存する条件付きブロック(例:「image_latents が存在する場合に img2img を実行する」)は、条件が実際の値ではなく存在/不在(None または None 以外)に基づいている限り、正しく解決されます。

LoopSequentialPipelineBlocks

class diffusers.LoopSequentialPipelineBlocks

< >

( )

パラメータ

  • block_classes — 使用するブロッククラスのリスト
  • block_names — 各ブロックのプレフィックスのリスト

複数のパイプラインブロッククラスをFor Loopに結合するPipelineブロックです。呼び出されると、各ブロックが順番に呼び出されます。

このクラスは ModularPipelineBlocks を継承しています。すべてのパイプラインブロックに対してライブラリが実装している汎用的なメソッド(読み込みや保存など)については、スーパークラスのドキュメントを参照してください。

from_blocks_dict

< >

( blocks_dict: dict[str, typing.Any] )

パラメータ

  • 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 Blocks です。

これはConditionalPipelineBlocksの特殊なバージョンであり、以下が当てはまります:

  • 各ブロックには、対応するトリガー入力(1対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 が提供されている限り、image が提供されているかどうかに関わらず、“inpaint”ブロックが実行されます。
  • 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()が実行するブロックを決定するために使用する入力名のリストです。 ConditionalPipelineBlocksの場合、block_namesおよびblock_classesに対応する必要はありません。 AutoPipelineBlocksの場合、block_namesおよびblock_classesと同じ長さである必要があり、各要素が対応するブロックのトリガー入力を指定します。
  • default_block_name — トリガー入力が一致しない場合に実行されるデフォルトブロックの名前。 None の場合、トリガー入力が提供されないときにこのブロックを完全にスキップできます。

入力に基づいて実行するブロックを条件付きで選択するPipelineブロックです。サブクラスは、ブロックを選択するロジックを定義するためにselect_blockメソッドを実装する必要があります。現在サポートされている選択ロジックは、入力の有無(つまりNoneであるかどうか)に基づくものです。

このクラスは ModularPipelineBlocks を継承しています。すべてのパイプラインブロックに対してライブラリが実装している汎用的なメソッド(読み込みや保存など)については、スーパークラスのドキュメントを参照してください。

get_execution_blocks

< >

( **kwargs ) →

  • ModularPipelineBlocks

パラメータ

  • **kwargs — 入力名と値。ブロックの選択に影響するのはトリガー入力のみです。

戻り値

  • ModularPipelineBlocks

リーフブロック、または解決済みのSequentialPipelineBlocks

  • None: このブロックがスキップされる場合(トリガーが一致せず、デフォルトもない場合)

入力に基づいて実行されるブロックを取得します。

ConditionalPipelineBlocks を再帰的に解決し、以下のいずれかに到達するまで続けます:

  • リーフブロック(sub_blocksやLoopSequentialPipelineBlocksを持たない)→ 単一のModularPipelineBlocksを返します
  • SequentialPipelineBlocks → get_execution_blocks() に委譲し、解決済みの実行ブロックを含む SequentialPipelineBlocks を返します

select_block

< >

( **kwargs ) → str | None

パラメータ

  • **kwargs — 状態からのトリガー入力名とその値。

戻り値

str | None

実行するブロックの名前、またはデフォルトを使用/スキップする場合はNone。

トリガー入力に基づいて実行するブロックを選択します。サブクラスはこのメソッドを実装して、ブロックの選択ロジックを定義する必要があります。

注: トリガー入力に以前のブロックからの中間出力が含まれる場合、選択ロジックは入力の有無(つまり、None であるかどうか)にのみ依存すべきであり、実際の値には依存すべきではありません。これは、get_execution_blocks() が実行時の値を伴わずに中間出力の名前を伝播させることで、条件を静的に解決するためです。

Update on GitHub