# States

Blocks bergantung pada struktur data [PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) dan [BlockState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) untuk berkomunikasi dan berbagi data.

| Status | Deskripsi |
|-------|-------------|
| [PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) | Menjaga keseluruhan data yang diperlukan untuk eksekusi pipeline dan memungkinkan blok untuk membaca serta memperbarui datanya. |
| [BlockState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) | Memungkinkan setiap blok untuk melakukan komputasinya dengan data yang diperlukan dari `inputs`|

Panduan ini menjelaskan cara kerja state dan bagaimana state menghubungkan blok.

## PipelineState

[PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) adalah wadah status global untuk semua blok. Status ini mempertahankan status runtime lengkap dari pipeline dan menyediakan cara terstruktur bagi blok untuk membaca dan menulis ke data bersama.

[PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) menyimpan semua data dalam dict `values`, yaitu keadaan **mutable** yang berisi nilai input yang diberikan pengguna dan nilai output antara yang dihasilkan oleh blok. Jika sebuah blok memodifikasi `input`, perubahan tersebut akan tercermin dalam dict `values` setelah memanggil `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

[BlockState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) adalah tampilan lokal dari variabel-variabel relevan yang dibutuhkan oleh sebuah blok individu dari [PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) untuk melakukan komputasinya.

Akses variabel-variabel ini secara langsung sebagai atribut seperti `block_state.image`.

```py
BlockState(
    image: <PIL.Image.Image image mode=RGB size=512x512 at 0x7F3ECC494640>
)
```

Ketika metode `__call__` dari sebuah blok dieksekusi, blok tersebut mengambil `BlockState` dengan `self.get_block_state(state)`, melakukan operasinya, dan memperbarui [PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) dengan `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
```

## Interaksi state

Interaksi antara [PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) dan [BlockState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) didefinisikan oleh `inputs` dan `intermediate_outputs` dari sebuah blok.

- `inputs`, sebuah blok dapat memodifikasi input - seperti `block_state.image` - dan perubahan ini dapat disebarkan secara global ke [PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) dengan memanggil `set_block_state`.
- `intermediate_outputs` adalah variabel baru yang dibuat oleh sebuah blok. Variabel ini ditambahkan ke dict `values` dari [PipelineState](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) dan tersedia untuk blok-blok berikutnya atau diakses oleh pengguna sebagai output akhir dari pipeline.

