Diffusers documentation
Pipeline blokları
Pipeline blokları
ModülerPipelineBlokları
Tüm Pipeline Blokları için temel sınıf: ConditionalPipelineBlocks, AutoPipelineBlocks, SequentialPipelineBlocks, LoopSequentialPipelineBlocks
ModularPipelineBlocks, pipeline bloklarının tanımını yüklemek ve kaydetmek için yöntem sağlar.
Tüm girdileri ve ara değerleri tek bir sözlükte alın
get_execution_blocks
< source >( **kwargs )
Girdiler verildiğinde çalışacak blok(lar)ı getirir. Koşullu blok seçimini destekleyen alt sınıflar tarafından uygulanmalıdır.
get_workflow
< source >( workflow_name: str )
Belirli bir iş akışı için yürütme bloklarını alın. _workflow_map tanımlayan alt sınıflar tarafından uygulanmalıdır.
init_pipeline
< source >( pretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = None )
bir ModularPipeline oluşturun, isteğe bağlı olarak hub'dan yüklemek için pretrained_model_name_or_path kabul edin.
SequentialPipelineBlocks
sınıf diffusers.SequentialPipelineBlocks
< source >( )
Birden fazla pipeline blok sınıfını birleştiren bir Pipeline Blokları. Çağrıldığında, her bloğu sırayla çağırır.
Bu sınıf ModularPipelineBlocks sınıfından devralır. Kütüphanenin tüm pipeline blokları için uyguladığı genel yöntemler (yükleme veya kaydetme vb.) için üst sınıfın belgelendirmesine bakın.
from_blocks_dict
< source >( blocks_dict: dictdescription: str | None = None )
Bir bloklar sözlüğünden bir SequentialPipelineBlocks örneği oluşturur.
get_execution_blocks
< source >( **kwargs )
Belirtilen girdiler verildiğinde çalışacak blokları alın.
Gezinme sıralı bloklardan geçerken, çözümlenmiş blokların ara çıktıları etkin girdilere eklenir. Bu, koşul yalnızca varlık/yokluk (None veya None değil) üzerine değil de gerçek değer üzerine dayalı değilse, ara çıktılara bağımlı koşullu blokların (ör. “image_latents varsa img2img çalıştır”) doğru şekilde çözümleneceği anlamına gelir.
LoopSequentialPipelineBlocks
sınıf diffusers.LoopSequentialPipelineBlocks
< source >( )
Birden çok pipeline blok sınıfını For Loop içinde birleştiren bir Pipeline bloğu. Çağrıldığında, her bloğu sırayla çağırır.
Bu sınıf ModularPipelineBlocks sınıfından devralır. Kütüphanenin tüm pipeline blokları için uyguladığı genel yöntemler (yükleme veya kaydetme vb.) için üst sınıfın belgelendirmesine bakın.
from_blocks_dict
< source >( blocks_dict: dict )
Bir bloklar sözlüğünden bir LoopSequentialPipelineBlocks örneği oluşturur.
AutoPipelineBlocks
sınıf diffusers.AutoPipelineBlocks
< source >( )
Parametreler
- block_classes —
Kullanılacak blok sınıflarının listesi.
block_namesveblock_trigger_inputsile aynı uzunlukta olmalıdır. - block_names —
Her blok için adların listesi.
block_classesveblock_trigger_inputsile aynı uzunlukta olmalıdır. - block_trigger_inputs —
Her öğesi, ilgili blok için tetikleyici girdiyi belirten girdi adlarının listesi. Varsayılan bloğu işaretlemek için
Nonekullanın.
Tetikleyici girdilerin varlığına dayanarak çalıştırılacak bloğu otomatik olarak seçen bir Pipeline Blokları.
Bu, ConditionalPipelineBlocks'ün şu şekilde özelleştirilmiş bir versiyonudur:
- Her bloğun bir tane karşılık gelen tetikleyici girişi vardır (1:1 eşleme)
- Blok seçimi otomatiktir: tetikleyici girişi mevcut olan ilk blok seçilir
block_trigger_inputs,block_namesveblock_classesile aynı uzunlukta olmalıdırblock_trigger_inputsiçindeNonekullanarak varsayılan bloğu belirtin; yani tetikleyici girdileri yoksa çalışacak blok
Örnek:
class MyAutoBlock(AutoPipelineBlocks):
block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
block_names = ["inpaint", "img2img", "text2img"]
block_trigger_inputs = ["mask_image", "image", None] # text2img is the defaultBu tanımla:
mask_imagesağlandığı sürece “inpaint” bloğu çalışır (imagesağlansın ya da sağlanmasın).mask_imagesağlanmaz ancakimagesağlanırsa “img2img” bloğu çalışır- Aksi takdirde, “text2img” bloğu çalışır (varsayılan, tetikleyici
None)
Hangi tetikleyici girdisinin mevcut olduğuna (None olmadığına) göre bloğu seçin.
KoşulluPipelineBlokları
sınıf diffusers.ConditionalPipelineBlocks
< source >( )
Parametreler
- block_classes — Kullanılacak blok sınıflarının listesi.
block_namesile aynı uzunlukta olmalıdır. - block_names — Her blok için adların listesi.
block_classesile aynı uzunlukta olmalıdır. - block_trigger_inputs —
select_block()'in çalıştırılacak bloğu belirlemek için kullandığı girdi adlarının listesi.ConditionalPipelineBlocksiçin bu,block_namesveblock_classesile eşleşmek zorunda değildir.AutoPipelineBlocksiçin ise bu,block_namesveblock_classesile aynı uzunlukta olmalı ve her öğe, ilgili bloğun tetikleyici girdisini belirtmelidir. - default_block_name — Hiçbir tetikleyici girdi eşleşmediğinde çalıştırılacak varsayılan bloğun adı. None ise, tetikleyici girdiler sağlanmadığında bu blok tamamen atlanabilir.
Bir Pipeline Blocks, girdilere dayalı olarak koşullu olarak çalıştırılacak bloğu seçer. Alt sınıflar, blok seçim mantığını tanımlamak için select_block metodunu uygulamak zorundadır. Şu anda yalnızca girdilerin varlığına veya yokluğuna (yani None olup olmamasına) dayalı seçim mantığını destekliyoruz.
Bu sınıf ModularPipelineBlocks sınıfından devralır. Kütüphanenin tüm pipeline blokları için uyguladığı genel yöntemler (yükleme veya kaydetme vb.) için üst sınıfın belgelendirmesine bakın.
get_execution_blocks
< source >( **kwargs ) →
ModularPipelineBlocks
Girdiler verildiğinde çalışacak blok(lar)ı alın.
Yükleme tamamlandı
- Yaprak bloğu (sub_blocks veya LoopSequentialPipelineBlocks yok) → tek bir
ModularPipelineBlocksdöndürür - A
SequentialPipelineBlocks→get_execution_blocks()yöntemine devreder ve bu yöntem, çözümlenmiş yürütme bloklarını içeren birSequentialPipelineBlocksdöndürür
select_block
< source >( **kwargs ) → str | None
Tetikleyici girdilerine göre çalıştırılacak bloğu seçin. Alt sınıflar, bloğu seçme mantığını tanımlamak için bu yöntemi uygulamak zorundadır.
Not: Tetikleyici girdileri önceki bloklardan gelen ara çıktıları içerdiğinde, seçim mantığı yalnızca girdinin varlığına veya yokluğuna (yani None olup olmadığına) dayanmalıdır, gerçek değerine değil. Bunun nedeni, get_execution_blocks()'in koşulları, ara çıktı adlarını çalışma zamanı değerleri olmadan yayarak statik olarak çözümesidir.