Diffusers documentation
Blok Pipeline
Blok Pipeline
ModularPipelineBlocks
Kelas dasar untuk semua Blok Pipeline: ConditionalPipelineBlocks, AutoPipelineBlocks, SequentialPipelineBlocks, LoopSequentialPipelineBlocks
ModularPipelineBlocks menyediakan metode untuk memuat dan menyimpan definisi blok pipeline.
Dapatkan semua input dan intermediat dalam satu kamus
get_execution_blocks
< source >( **kwargs )
Dapatkan blok yang akan dieksekusi berdasarkan input yang diberikan. Harus diimplementasikan oleh subkelas yang mendukung pemilihan blok kondisional.
get_workflow
< source >( workflow_name: str )
Dapatkan blok eksekusi untuk workflow tertentu. Harus diimplementasikan oleh subkelas yang mendefinisikan _workflow_map.
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 )
buat ModularPipeline, secara opsional terima pretrained_model_name_or_path untuk memuat dari hub.
SequentialPipelineBlocks
kelas diffusers.SequentialPipelineBlocks
< source >( )
A Pipeline Blocks yang menggabungkan beberapa kelas pipeline block menjadi satu. Saat dipanggil, blok ini akan memanggil setiap blok secara berurutan.
Kelas ini mewarisi dari ModularPipelineBlocks. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua blok pipeline (seperti memuat atau menyimpan, dll.)
from_blocks_dict
< source >( blocks_dict: dictdescription: str | None = None )
Membuat instance SequentialPipelineBlocks dari kamus blok.
get_execution_blocks
< source >( **kwargs )
Dapatkan blok yang akan dieksekusi berdasarkan input yang ditentukan.
Saat traversal berjalan melalui blok-blok berurutan, output antara dari blok yang telah dipecahkan ditambahkan ke input aktif. Ini berarti blok kondisional yang bergantung pada nilai antara (misalnya, “jalankan img2img jika image_latents ada”) akan dipecahkan dengan benar, selama kondisinya didasarkan pada keberadaan/keberadaan (None atau bukan None), bukan pada nilai aktualnya.
LoopSequentialPipelineBlocks
kelas diffusers.LoopSequentialPipelineBlocks
< source >( )
A Pipeline blocks yang menggabungkan beberapa kelas pipeline block menjadi For Loop. Saat dipanggil, blok ini akan memanggil setiap blok secara berurutan.
Kelas ini mewarisi dari ModularPipelineBlocks. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua blok pipeline (seperti memuat atau menyimpan, dll.)
from_blocks_dict
< source >( blocks_dict: dict )
Membuat instance LoopSequentialPipelineBlocks dari kamus blok.
AutoPipelineBlocks
kelas diffusers.AutoPipelineBlocks
< source >( )
Parameter
- block_classes —
Daftar kelas blok yang akan digunakan. Harus memiliki panjang yang sama dengan
block_namesdanblock_trigger_inputs. - block_names —
Daftar nama untuk setiap blok. Harus memiliki panjang yang sama dengan
block_classesdanblock_trigger_inputs. - block_trigger_inputs —
Daftar nama input di mana setiap elemen menentukan input pemicu untuk blok yang sesuai. Gunakan
Noneuntuk menandai blok default.
A Pipeline Blocks yang secara otomatis memilih blok untuk dijalankan berdasarkan keberadaan input pemicu.
Ini adalah versi khusus dari ConditionalPipelineBlocks di mana:
- Setiap blok memiliki satu input pemicu yang sesuai (pemetaan 1:1)
- Pemilihan blok bersifat otomatis: blok pertama yang input pemicunya ada akan dipilih
block_trigger_inputsharus memiliki panjang yang sama denganblock_namesdanblock_classes- Gunakan
Nonediblock_trigger_inputsuntuk menentukan blok default, yaitu blok yang akan dijalankan jika tidak ada input pemicu
Contoh:
class MyAutoBlock(AutoPipelineBlocks):
block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
block_names = ["inpaint", "img2img", "text2img"]
block_trigger_inputs = ["mask_image", "image", None] # text2img is the defaultDengan definisi ini:
- Selama
mask_imagedisediakan, blok “inpaint” akan dijalankan (terlepas dari apakahimagedisediakan atau tidak) - Jika
mask_imagetidak diberikan tetapiimagediberikan, blok “img2img” dijalankan - Jika tidak, blok “text2img” dijalankan (default, pemicunya adalah
None)
Pilih blok berdasarkan input pemicu mana yang ada (bukan None).
ConditionalPipelineBlocks
kelas diffusers.ConditionalPipelineBlocks
< source >( )
Parameter
- block_classes — Daftar kelas blok yang akan digunakan. Harus memiliki panjang yang sama dengan
block_names. - block_names — Daftar nama untuk setiap blok. Harus memiliki panjang yang sama dengan
block_classes. - block_trigger_inputs — Daftar nama input yang digunakan oleh
select_block()untuk menentukan blok mana yang akan dijalankan. UntukConditionalPipelineBlocks, ini tidak perlu sesuai denganblock_namesdanblock_classes. UntukAutoPipelineBlocks, ini harus memiliki panjang yang sama denganblock_namesdanblock_classes, di mana setiap elemen menentukan input pemicu untuk blok yang sesuai. - default_block_name — Nama blok default yang dijalankan ketika tidak ada input pemicu yang cocok. Jika None, blok ini dapat dilewati sepenuhnya ketika tidak ada input pemicu yang diberikan.
A Pipeline Blocks yang memilih secara kondisional blok untuk dijalankan berdasarkan input. Subclass harus mengimplementasikan metode select_block untuk mendefinisikan logika pemilihan blok. Saat ini, kami hanya mendukung logika pemilihan berdasarkan ada atau tidaknya input (yaitu, apakah mereka None atau tidak)
Kelas ini mewarisi dari ModularPipelineBlocks. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua blok pipeline (seperti memuat atau menyimpan, dll.)
get_execution_blocks
< source >( **kwargs ) →
ModularPipelineBlocks
Dapatkan blok yang akan dieksekusi berdasarkan input yang diberikan.
Menyelesaikan blok ConditionalPipelineBlocks yang bersarang secara rekursif hingga mencapai salah satu dari:
- Blok daun (tanpa sub_blocks atau LoopSequentialPipelineBlocks) → mengembalikan satu
ModularPipelineBlocks - A
SequentialPipelineBlocks→ mendelegasikan keget_execution_blocks()yang mengembalikanSequentialPipelineBlocksyang berisi blok eksekusi yang telah dipecahkan
select_block
< source >( **kwargs ) → str | None
Pilih blok yang akan dijalankan berdasarkan input pemicu. Subkelas harus mengimplementasikan metode ini untuk mendefinisikan logika pemilihan blok.
Catatan: Ketika input pemicu mencakup output antara dari blok sebelumnya, logika seleksi harus hanya bergantung pada ada atau tidaknya input tersebut (yaitu, apakah nilainya None atau bukan), bukan pada nilai aktualnya. Hal ini karena get_execution_blocks() menyelesaikan kondisi secara statis dengan mempropagasi nama output antara tanpa nilai runtime-nya.