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 — 각 블록의 접두사 목록

여러 pipeline block 클래스를 하나로 결합하는 Pipeline Blocks입니다. 호출되면 각 블록을 순서대로 호출합니다.

이 클래스는 ModularPipelineBlocks에서 상속됩니다. 라이브러리가 모든 파이프라인 블록에 대해 구현하는 일반적 메서드(로드, 저장 등)에 대해서는 상위 클래스 문서를 확인하세요.

from_blocks_dict

< >

( blocks_dict: dictdescription: str | None = None )

매개변수

  • blocks_dict — 블록 이름을 블록 클래스 또는 인스턴스로 매핑하는 사전

블록의 사전에서 SequentialPipelineBlocks 인스턴스를 생성합니다.

get_execution_blocks

< >

( **kwargs )

매개변수

  • **kwargs — 입력 이름과 값. 트리거 입력만 블록 선택에 영향을 줍니다.

지정된 입력에 따라 실행될 블록을 가져옵니다.

탐색이 순차적인 블록을 순회하면서, 해결된 블록의 중간 출력은 활성 입력에 추가됩니다. 이는 중간 값에 의존하는 조건부 블록(예: “image_latents가 존재하면 img2img 실행”)이 올바르게 해결되도록 보장합니다. 단, 조건이 실제 값이 아닌 존재/부재(None 또는 None이 아닌 값)에 기반해야 합니다.

LoopSequentialPipelineBlocks

class diffusers.LoopSequentialPipelineBlocks

< >

( )

매개변수

  • block_classes — 사용할 블록 클래스 목록
  • block_names — 각 블록의 접두사 목록

여러 pipeline block 클래스를 For Loop로 결합하는 Pipeline block입니다. 호출되면 각 block을 순서대로 호출합니다.

이 클래스는 ModularPipelineBlocks에서 상속됩니다. 라이브러리가 모든 파이프라인 블록에 대해 구현하는 일반적 메서드(로드, 저장 등)에 대해서는 상위 클래스 문서를 확인하세요.

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 Blocks입니다.

ConditionalPipelineBlocks의 특수화된 버전으로, 다음과 같습니다:

  • 각 블록에는 하나의 대응하는 트리거 입력이 있습니다(1:1 매핑)
  • Block selection은 자동으로 수행됩니다: trigger 입력이 존재하는 첫 번째 블록이 선택됩니다
  • 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 Blocks입니다. 하위 클래스는 블록 선택 로직을 정의하기 위해 select_block 메서드를 구현해야 합니다. 현재는 입력의 유무(즉, None인지 여부)에 기반한 선택 로직만 지원합니다.

이 클래스는 ModularPipelineBlocks에서 상속됩니다. 라이브러리가 모든 파이프라인 블록에 대해 구현하는 일반적 메서드(로드, 저장 등)에 대해서는 상위 클래스 문서를 확인하세요.

get_execution_blocks

< >

( **kwargs ) →

  • ModularPipelineBlocks

매개변수

  • **kwargs — 입력 이름과 값. 트리거 입력만 블록 선택에 영향을 줍니다.

반환값

  • ModularPipelineBlocks

리프 블록 또는 해결된 SequentialPipelineBlocks

  • None: 이 블록이 건너뛰어지는 경우 (트리거가 일치하지 않고 기본값도 없는 경우)

입력에 따라 실행될 블록을 가져옵니다.

ConditionalPipelineBlocks가 더 이상 없거나 다음 중 하나에 도달할 때까지 재귀적으로 중첩된 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

트리거 입력을 기반으로 실행할 블록을 선택합니다. 서브클래스는 블록 선택 로직을 정의하기 위해 이 메서드를 구현해야 합니다.

Note: trigger 입력에 이전 블록의 중간 출력이 포함된 경우, 선택 로직은 입력의 실제 값이 아니라 존재 여부(즉, None인지 여부)에만 의존해야 합니다. 이는 get_execution_blocks()가 런타임 값 없이 중간 출력 이름을 전파하여 조건을 정적으로 해석하기 때문입니다.

Update on GitHub