Diffusers documentation
Durumlar
Durumlar
Blocks, veri iletişimi ve paylaşımı için PipelineState ve BlockState veri yapılarına dayanır.
| Durum | Açıklama |
|---|---|
| PipelineState | Bir hattın çalıştırılması için gereken genel verileri korur ve blokların bu verileri okumasına ve güncellemesine olanak tanır. |
| BlockState | Her bloğun inputs içindeki gerekli verilerle kendi hesabını yapmasına olanak tanır |
Bu kılavuz, durumların nasıl çalıştığını ve blokları nasıl bağladığını açıklar.
PipelineState
PipelineState, tüm bloklar için küresel bir durum kapsayıcısıdır. Hattın (pipeline) tam çalışma zamanı durumunu korur ve blokların paylaşılan verilerden okuması ile bunlara yazması için yapılandırılmış bir yol sağlar.
PipelineState, kullanıcı tarafından sağlanan giriş değerlerini ve bloklar tarafından üretilen ara çıktı değerlerini içeren değiştirilebilir bir durum olan values sözlüğünde tüm verileri saklar. Bir blok bir input değerini değiştirirse, bu değişiklik set_block_state çağrıldıktan sonra values sözlüğünde yansıtılır.
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, bir bloğun PipelineState içindeki ilgili değişkenlerden, kendi hesaplamalarını gerçekleştirmek için ihtiyaç duyduğu yerel görünümdür.
Bu değişkenlere block_state.image gibi doğrudan öznitelik olarak erişin.
BlockState(
image: <PIL.Image.Image image mode=RGB size=512x512 at 0x7F3ECC494640>
)Bir bloğun __call__ metodu çalıştırıldığında, self.get_block_state(state) ile BlockState nesnesini alır, işlemlerini gerçekleştirir ve PipelineState nesnesini self.set_block_state(state, block_state) ile günceller.
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, stateEtkileşim durumu
PipelineState ve BlockState etkileşimi, bir bloğun inputs ve intermediate_outputs değerleri tarafından tanımlanır.
inputs, bir blok bir girdiyi - örneğinblock_state.image- değiştirebilir ve bu değişiklik,set_block_stateçağrılarak PipelineState içinde küresel olarak yayılabilir.intermediate_outputs, bir bloğun oluşturduğu yeni bir değişkendir. PipelineState'invaluessözlüğüne eklenir ve sonraki bloklar için kullanılabilir veya kullanıcılar tarafından pipeline'ın nihai çıktısı olarak erişilebilir.