Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /pt /modular_diffusers /modular_diffusers_states.md
mishig's picture
|
download
raw
4.1 kB
# Estados
Os blocos dependem das estruturas de dados [PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) e [BlockState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) para comunicar e compartilhar dados.
| Estado | Descrição |
|-------|-------------|
| [PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) | Mantém os dados gerais necessários para a execução de um pipeline e permite que os blocos leiam e atualizem seus dados. |
| [BlockState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) | Permite que cada bloco execute seu cálculo com os dados necessários de `inputs`|
Este guia explica como os estados funcionam e como eles conectam os blocos.
## PipelineState
O [PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) é um contêiner de estado global para todos os blocos. Ele mantém o estado de tempo de execução completo do pipeline e fornece uma maneira estruturada para que os blocos leiam e gravem dados compartilhados.
[PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) armazena todos os dados em um dicionário `values`, que é um estado **mutável** contendo os valores de entrada fornecidos pelo usuário e os valores de saída intermediários gerados pelos blocos. Se um bloco modifica uma `input`, essa modificação será refletida no dicionário `values` após a chamada de `set_block_state`.
```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
O [BlockState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) é uma visão local das variáveis relevantes que um bloco individual precisa do [PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) para realizar seus cálculos.
Acesse essas variáveis diretamente como atributos, como `block_state.image`.
```py
BlockState(
image: <PIL.Image.Image image mode=RGB size=512x512 at 0x7F3ECC494640>
)
```
Quando o método `__call__` de um bloco é executado, ele recupera o `BlockState` com `self.get_block_state(state)`, executa suas operações e atualiza o [PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) com `self.set_block_state(state, block_state)`.
```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
```
## Interação de estado
A interação entre [PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) e [BlockState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) é definida pelos `inputs` e pelos `intermediate_outputs` de um bloco.
- `inputs`, um bloco pode modificar uma entrada - como `block_state.image` - e essa alteração pode ser propagada globalmente para [PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) chamando `set_block_state`.
- `intermediate_outputs` é uma nova variável criada por um bloco. Ela é adicionada ao dicionário `values` do [PipelineState](/docs/diffusers/v0.43.0/pt/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) e fica disponível para blocos subsequentes ou acessada pelos usuários como saída final do pipeline.

Xet Storage Details

Size:
4.1 kB
·
Xet hash:
7ea07ae0fef7eb9de159f2ea392a80531d285a3433faae1a5635142c872138c1

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.