Buckets:
| # 상태 | |
| Blocks는 데이터 통신 및 공유를 위해 [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)와 [BlockState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) 데이터 구조에 의존합니다. | |
| | 상태 | 설명 | | |
| |-------|-------------| | |
| | [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) | 파이프라인 실행에 필요한 전체 데이터를 유지하며, 블록이 해당 데이터를 읽고 업데이트할 수 있도록 합니다. | | |
| | [BlockState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) | 각 블록이 `inputs`에서 필요한 데이터로 계산을 수행할 수 있도록 합니다| | |
| 이 가이드에서는 상태가 작동하는 방식과 블록을 연결하는 방식을 설명합니다. | |
| ## PipelineState | |
| [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)는 모든 블록을 위한 전역 상태 컨테이너입니다. 파이프라인의 완전한 런타임 상태를 유지하며, 블록이 공유 데이터를 읽고 쓰기 위한 구조화된 방법을 제공합니다. | |
| [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)는 사용자가 제공한 입력 값과 블록이 생성한 중간 출력 값을 포함하는 **가변** 상태인 `values` 딕셔너리에 모든 데이터를 저장합니다. 블록이 `input`을 수정하면 `set_block_state`를 호출한 후 `values` 딕셔너리에 반영됩니다. | |
| ```py | |
| PipelineState( | |
| values={ | |
| 'prompt': 'a cat' | |
| 'guidance_scale': 7.0 | |
| 'num_inference_steps': 25 | |
| 'prompt_embeds': Tensor(dtype=torch.float32, shape=torch.Size([1, 1, 1, 1])) | |
| 'negative_prompt_embeds': None | |
| }, | |
| ) | |
| ``` | |
| ## BlockState | |
| [BlockState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState)는 개별 블록이 [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)에서 자신의 계산을 수행하는 데 필요한 관련 변수에 대한 로컬 뷰입니다. | |
| `block_state.image`와 같은 속성으로 이러한 변수에 직접 액세스할 수 있습니다. | |
| ```py | |
| BlockState( | |
| image: <PIL.Image.Image image mode=RGB size=512x512 at 0x7F3ECC494640> | |
| ) | |
| ``` | |
| 블록의 `__call__` 메서드가 실행되면 `self.get_block_state(state)`로 `BlockState`를 가져오고, 연산을 수행한 후 `self.set_block_state(state, block_state)`로 [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)를 업데이트합니다. | |
| ```py | |
| def __call__(self, components, state): | |
| # retrieve BlockState | |
| block_state = self.get_block_state(state) | |
| # computation logic on inputs | |
| # update PipelineState | |
| self.set_block_state(state, block_state) | |
| return components, state | |
| ``` | |
| ## 상태 상호작용 | |
| [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)와 [BlockState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState)의 상호작용은 블록의 `inputs`와 `intermediate_outputs`에 의해 정의됩니다. | |
| - `inputs` 블록은 `block_state.image`와 같은 입력을 수정할 수 있으며, `set_block_state`를 호출하면 이 변경 사항이 [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)에 전역적으로 전파됩니다. | |
| - `intermediate_outputs`는 블록이 생성하는 새로운 변수입니다. [PipelineState](/docs/diffusers/main/ko/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)의 `values` 딕셔너리에 추가되며, 후속 블록에서 사용하거나 사용자가 파이프라인의 최종 출력으로 접근할 수 있습니다. | |
Xet Storage Details
- Size:
- 4.15 kB
- Xet hash:
- 596e2ddb4c17363c9d4712aafe9eeb75b11fc70b7f684ae4ed834c035ce32872
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.