Buckets:
状態
Blocks は、データの通信と共有のために PipelineState および BlockState データ構造に依存しています。
| 状態 | 説明 |
|---|---|
| PipelineState | パイプラインの実行に必要な全体データを保持し、ブロックがそのデータの読み取りと更新を行うことを可能にします。 |
| BlockState | inputsから必要なデータを使用して、各ブロックが計算を実行できるようにします |
このガイドでは、ステートの仕組みと、ブロックを接続する方法について説明します。
PipelineState
PipelineState は、すべてのブロック用のグローバルな状態コンテナです。パイプラインの完全なランタイム状態を保持し、ブロックが共有データを読み書きするための構造化された方法を提供します。
PipelineState は、ユーザーが指定した入力値とブロックによって生成される中間出力値を含む 変更可能 な状態である values ディクショナリにすべてのデータを格納します。あるブロックが input を変更した場合、set_block_state を呼び出した後、その変更は values ディクショナリに反映されます。
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 は、個々のブロックが計算を実行するために PipelineState から必要な関連変数のローカルビューです。
block_state.image のように、これらの変数を直接アトリビュートとしてアクセスできます。
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を更新します。
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とBlockStateの相互作用は、ブロックのinputsとintermediate_outputsによって定義されます。
inputsでは、ブロックは入力(block_state.imageなど)を変更でき、set_block_stateを呼び出すことで、この変更をPipelineStateにグローバルに反映させることができます。intermediate_outputsは、ブロックが作成する新しい変数です。PipelineState のvaluesディクショナリに追加され、後続のブロックで使用可能になるほか、パイプラインの最終出力としてユーザーからアクセスできます。
Xet Storage Details
- Size:
- 4.49 kB
- Xet hash:
- e8f027fdbb8e18112c4693edadfbd76bd880ecc91afbd00dbba9bf9372959663
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.