Buckets:
| # SequentialPipelineBlocks | |
| [SequentialPipelineBlocks](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_blocks#diffusers.SequentialPipelineBlocks)는 여러 [ModularPipelineBlocks](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks)를 순서대로 조합하는 멀티 블록 유형입니다. 데이터는 `inputs`와 `intermediate_outputs`를 사용하여 한 블록에서 다음 블록으로 선형적으로 흐릅니다. [SequentialPipelineBlocks](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_blocks#diffusers.SequentialPipelineBlocks)의 각 블록은 일반적으로 파이프라인의 한 단계를 나타내며, 이를 조합함으로써 파이프라인을 점진적으로 구축할 수 있습니다. | |
| 이 가이드에서는 두 개의 블록을 [SequentialPipelineBlocks](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_blocks#diffusers.SequentialPipelineBlocks)에 연결하는 방법을 보여줍니다. | |
| 두 개의 [ModularPipelineBlocks](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks)를 생성합니다. 첫 번째 블록인 `InputBlock`은 `batch_size` 값을 출력하고, 두 번째 블록인 `ImageEncoderBlock`은 `batch_size`를 `inputs`로 사용합니다. | |
| ```py | |
| from diffusers.modular_pipelines import ModularPipelineBlocks, InputParam, OutputParam | |
| class InputBlock(ModularPipelineBlocks): | |
| @property | |
| def inputs(self): | |
| return [ | |
| InputParam(name="prompt", type_hint=list, description="list of text prompts"), | |
| InputParam(name="num_images_per_prompt", type_hint=int, description="number of images per prompt"), | |
| ] | |
| @property | |
| def intermediate_outputs(self): | |
| return [ | |
| OutputParam(name="batch_size", description="calculated batch size"), | |
| ] | |
| @property | |
| def description(self): | |
| return "A block that determines batch_size based on the number of prompts and num_images_per_prompt argument." | |
| def __call__(self, components, state): | |
| block_state = self.get_block_state(state) | |
| batch_size = len(block_state.prompt) | |
| block_state.batch_size = batch_size * block_state.num_images_per_prompt | |
| self.set_block_state(state, block_state) | |
| return components, state | |
| ``` | |
| ```py | |
| import torch | |
| from diffusers.modular_pipelines import ModularPipelineBlocks, InputParam, OutputParam | |
| class ImageEncoderBlock(ModularPipelineBlocks): | |
| @property | |
| def inputs(self): | |
| return [ | |
| InputParam(name="image", type_hint="PIL.Image", description="raw input image to process"), | |
| InputParam(name="batch_size", type_hint=int), | |
| ] | |
| @property | |
| def intermediate_outputs(self): | |
| return [ | |
| OutputParam(name="image_latents", description="latents representing the image"), | |
| ] | |
| @property | |
| def description(self): | |
| return "Encode raw image into its latent presentation" | |
| def __call__(self, components, state): | |
| block_state = self.get_block_state(state) | |
| # Simulate processing the image | |
| # This will change the state of the image from a PIL image to a tensor for all blocks | |
| block_state.image = torch.randn(1, 3, 512, 512) | |
| block_state.batch_size = block_state.batch_size * 2 | |
| block_state.image_latents = torch.randn(1, 4, 64, 64) | |
| self.set_block_state(state, block_state) | |
| return components, state | |
| ``` | |
| [SequentialPipelineBlocks](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_blocks#diffusers.SequentialPipelineBlocks)를 정의하여 두 블록을 연결합니다. `block_classes`에 블록 인스턴스를, `block_names`에 해당 이름을 나열합니다. 블록은 `block_classes`에 나타나는 순서대로 실행되며, 데이터는 [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)를 통해 한 블록에서 다음 블록으로 흐릅니다. | |
| ```py | |
| class ImageProcessingStep(SequentialPipelineBlocks): | |
| """ | |
| # auto_docstring | |
| """ | |
| model_name = "my_model" | |
| block_classes = [InputBlock(), ImageEncoderBlock()] | |
| block_names = ["input", "image_encoder"] | |
| @property | |
| def description(self): | |
| return ( | |
| "Process text prompts and images for the pipeline. It:\n" | |
| " - Determines the batch size from the prompts.\n" | |
| " - Encodes the image into latent space." | |
| ) | |
| ``` | |
| [SequentialPipelineBlocks](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_blocks#diffusers.SequentialPipelineBlocks)를 생성하면 `inputs`, `intermediate_outputs`, `expected_components`와 같은 속성이 하위 블록에서 자동으로 집계되므로 다시 정의할 필요가 없습니다. | |
| 설정해야 할 몇 가지 속성이 있습니다: | |
| - `description`: 조립된 블록에 대해 결합된 단계가 수행하는 내용을 설명하는 설명을 추가하는 것을 권장합니다. | |
| - `model_name`: 이는 서브 블록에서 자동으로 파생되지만 항상 정확하지는 않으므로, 필요에 따라 오버라이드해야 할 수 있습니다. | |
| - `outputs`: 기본적으로 `intermediate_outputs`와 동일하지만, 문서에 표시될 값을 제어하기 위해 수동으로 설정할 수 있습니다. 이는 모든 중간 값 대신 최종 출력만 표시하는 데 유용합니다. | |
| 이러한 속성과 집계된 `inputs`, `intermediate_outputs`, `expected_components`는 `doc` 속성을 자동으로 생성하는 데 사용됩니다. | |
| `ImageProcessingStep` 블록을 출력하여 하위 블록을 확인하고, 블록의 입력, 출력 및 구성 요소에 대한 전체 요약을 보려면 `doc`을 사용하세요. | |
| ```py | |
| blocks = ImageProcessingStep() | |
| print(blocks) | |
| print(blocks.doc) | |
| ``` | |
Xet Storage Details
- Size:
- 5.82 kB
- Xet hash:
- d62af25c767c15ce1a6a7b99523f78586a2bb957288fa3be4cdc56ce64aae837
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.