Diffusers documentation

Durumlar

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Durumlar

Blocks, veri iletişimi ve paylaşımı için PipelineState ve BlockState veri yapılarına dayanır.

DurumAçıklama
PipelineStateBir 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.
BlockStateHer 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, state

Etkileş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ğin block_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'in values sözlüğüne eklenir ve sonraki bloklar için kullanılabilir veya kullanıcılar tarafından pipeline'ın nihai çıktısı olarak erişilebilir.
Update on GitHub