Buckets:

hf-doc-build/doc / diffusers /main /fr /modular_diffusers /modular_diffusers_states.md
mishig's picture
|
download
raw
4.19 kB
# États
Les blocs s'appuient sur les structures de données [PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) et [BlockState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) pour communiquer et partager des données.
| État | Description |
|-------|-------------|
| [PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) | Conserve les données globales nécessaires à l'exécution d'un pipeline et permet aux blocs de lire et de mettre à jour ces données. |
| [BlockState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) | Permet à chaque bloc d'effectuer son calcul avec les données nécessaires de `inputs`|
Ce guide explique le fonctionnement des états et la manière dont ils relient les blocs.
## PipelineState
Le [PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) est un conteneur d'état global pour tous les blocs. Il maintient l'état d'exécution complet du pipeline et offre une méthode structurée pour que les blocs lisent et écrivent dans des données partagées.
[PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) stocke toutes les données dans un dictionnaire `values`, qui est un état **mutable** contenant les valeurs d’entrée fournies par l’utilisateur ainsi que les valeurs de sortie intermédiaires générées par les blocs. Si un bloc modifie une `input`, la modification sera reflétée dans le dictionnaire `values` après l’appel 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
Le [BlockState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) est une vue locale des variables pertinentes dont un bloc individuel a besoin depuis [PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) pour effectuer ses calculs.
Accédez à ces variables directement en tant qu'attributs, comme `block_state.image`.
```py
BlockState(
image: <PIL.Image.Image image mode=RGB size=512x512 at 0x7F3ECC494640>
)
```
Lorsque la méthode `__call__` d'un bloc est exécutée, elle récupère le `BlockState` via `self.get_block_state(state)`, effectue ses opérations, puis met à jour [PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) avec `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
```
## Interaction avec l'état
L'interaction entre [PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) et [BlockState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) est définie par les `inputs` et les `intermediate_outputs` d'un bloc.
- `inputs`, un bloc peut modifier une entrée - comme `block_state.image` - et ce changement peut être propagé globalement à [PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) en appelant `set_block_state`.
- `intermediate_outputs` est une nouvelle variable créée par un bloc. Elle est ajoutée au dictionnaire `values` de l’objet [PipelineState](/docs/diffusers/main/fr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) et est disponible pour les blocs suivants ou accessible par les utilisateurs en tant que sortie finale du pipeline.

Xet Storage Details

Size:
4.19 kB
·
Xet hash:
ae02a8846e09e5da130f2718b472e2342c73a1cd1da0753f1f1ff0459bc364f9

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