Diffusers documentation
パイプラインブロック
パイプラインブロック
ModularPipelineBlocks
すべての Pipeline Blocks のベースクラス: ConditionalPipelineBlocks、AutoPipelineBlocks、SequentialPipelineBlocks、LoopSequentialPipelineBlocks
ModularPipelineBlocks は、パイプラインブロックの定義を読み込み、保存するためのメソッドを提供します。
すべての入力と中間結果を1つの辞書に格納する
入力に基づいて実行されるブロックを取得します。条件付きブロックの選択をサポートするサブクラスによって実装されなければなりません。
特定のワークフローの実行ブロックを取得します。_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 )
ModularPipeline を作成し、必要に応じて pretrained_model_name_or_path を受け取って Hub から読み込みます。
SequentialPipelineBlocks
class diffusers.SequentialPipelineBlocks
< source >( )
複数のパイプラインブロッククラスを1つにまとめるPipelineブロックです。呼び出されると、各ブロックが順番に呼び出されます。
このクラスは ModularPipelineBlocks を継承しています。すべてのパイプラインブロックに対してライブラリが実装している汎用的なメソッド(読み込みや保存など)については、スーパークラスのドキュメントを参照してください。
from_blocks_dict
< source >( blocks_dict: dict[str, typing.Any]description: str | None = None )
ブロックの辞書からSequentialPipelineBlocksインスタンスを作成します。
指定された入力に基づいて実行されるブロックを取得します。
走査がシーケンシャルなブロックを順に処理するにつれて、解決済みのブロックからの中間出力がアクティブな入力に追加されます。これにより、中間出力に依存する条件付きブロック(例:「image_latents が存在する場合に img2img を実行する」)は、条件が実際の値ではなく存在/不在(None または None 以外)に基づいている限り、正しく解決されます。
LoopSequentialPipelineBlocks
class diffusers.LoopSequentialPipelineBlocks
< source >( )
複数のパイプラインブロッククラスをFor Loopに結合するPipelineブロックです。呼び出されると、各ブロックが順番に呼び出されます。
このクラスは ModularPipelineBlocks を継承しています。すべてのパイプラインブロックに対してライブラリが実装している汎用的なメソッド(読み込みや保存など)については、スーパークラスのドキュメントを参照してください。
from_blocks_dict
< source >( blocks_dict: dict[str, typing.Any] )
ブロックの辞書からLoopSequentialPipelineBlocksインスタンスを作成します。
AutoPipelineBlocks
class diffusers.AutoPipelineBlocks
< source >( )
トリガー入力の有無に基づいて、実行するブロックを自動的に選択する 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)。
どのトリガー入力が存在する(None ではない)かに基づいてブロックを選択します。
ConditionalPipelineBlocks
class diffusers.ConditionalPipelineBlocks
< source >( )
パラメータ
- 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
< source >( **kwargs ) →
ModularPipelineBlocks
入力に基づいて実行されるブロックを取得します。
ConditionalPipelineBlocks を再帰的に解決し、以下のいずれかに到達するまで続けます:
- リーフブロック(sub_blocksやLoopSequentialPipelineBlocksを持たない)→ 単一の
ModularPipelineBlocksを返します SequentialPipelineBlocks→get_execution_blocks()に委譲し、解決済みの実行ブロックを含むSequentialPipelineBlocksを返します
select_block
< source >( **kwargs ) → str | None
トリガー入力に基づいて実行するブロックを選択します。サブクラスはこのメソッドを実装して、ブロックの選択ロジックを定義する必要があります。
注: トリガー入力に以前のブロックからの中間出力が含まれる場合、選択ロジックは入力の有無(つまり、None であるかどうか)にのみ依存すべきであり、実際の値には依存すべきではありません。これは、get_execution_blocks() が実行時の値を伴わずに中間出力の名前を伝播させることで、条件を静的に解決するためです。