Diffusers documentation

Blok Pipeline

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

Blok Pipeline

ModularPipelineBlocks

kelas diffusers.ModularPipelineBlocks

< >

( )

Kelas dasar untuk semua Blok Pipeline: ConditionalPipelineBlocks, AutoPipelineBlocks, SequentialPipelineBlocks, LoopSequentialPipelineBlocks

ModularPipelineBlocks menyediakan metode untuk memuat dan menyimpan definisi blok pipeline.

get_block_state

< >

( state: PipelineState )

Dapatkan semua input dan intermediat dalam satu kamus

get_execution_blocks

< >

( **kwargs )

Parameter

  • **kwargs — Nama dan nilai input. Hanya input pemicu yang memengaruhi pemilihan blok.

Dapatkan blok yang akan dieksekusi berdasarkan input yang diberikan. Harus diimplementasikan oleh subkelas yang mendukung pemilihan blok kondisional.

get_workflow

< >

( workflow_name: str )

Parameter

  • workflow_name — Nama workflow yang akan diambil.

Dapatkan blok eksekusi untuk workflow tertentu. Harus diimplementasikan oleh subkelas yang mendefinisikan _workflow_map.

init_pipeline

< >

( 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

< >

( )

Parameter

  • block_classes — daftar kelas blok yang akan digunakan
  • block_names — daftar prefiks untuk setiap blok

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

< >

( blocks_dict: dictdescription: str | None = None )

Parameter

  • blocks_dict — Kamus yang memetakan nama blok ke kelas atau instans blok

Membuat instance SequentialPipelineBlocks dari kamus blok.

get_execution_blocks

< >

( **kwargs )

Parameter

  • **kwargs — Nama dan nilai input. Hanya input pemicu yang memengaruhi pemilihan blok.

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

< >

( )

Parameter

  • block_classes — daftar kelas blok yang akan digunakan
  • block_names — daftar prefiks untuk setiap blok

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

< >

( blocks_dict: dict )

Parameter

  • blocks_dict — Kamus yang memetakan nama blok ke instance blok

Membuat instance LoopSequentialPipelineBlocks dari kamus blok.

AutoPipelineBlocks

kelas diffusers.AutoPipelineBlocks

< >

( )

Parameter

  • block_classes — Daftar kelas blok yang akan digunakan. Harus memiliki panjang yang sama dengan block_names dan block_trigger_inputs.
  • block_names — Daftar nama untuk setiap blok. Harus memiliki panjang yang sama dengan block_classes dan block_trigger_inputs.
  • block_trigger_inputs — Daftar nama input di mana setiap elemen menentukan input pemicu untuk blok yang sesuai. Gunakan None untuk 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_inputs harus memiliki panjang yang sama dengan block_names dan block_classes
  • Gunakan None di block_trigger_inputs untuk 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 default

Dengan definisi ini:

  • Selama mask_image disediakan, blok “inpaint” akan dijalankan (terlepas dari apakah image disediakan atau tidak)
  • Jika mask_image tidak diberikan tetapi image diberikan, blok “img2img” dijalankan
  • Jika tidak, blok “text2img” dijalankan (default, pemicunya adalah None)

select_block

< >

( **kwargs )

Pilih blok berdasarkan input pemicu mana yang ada (bukan None).

ConditionalPipelineBlocks

kelas diffusers.ConditionalPipelineBlocks

< >

( )

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. Untuk ConditionalPipelineBlocks, ini tidak perlu sesuai dengan block_names dan block_classes. Untuk AutoPipelineBlocks, ini harus memiliki panjang yang sama dengan block_names dan block_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

< >

( **kwargs ) →

  • ModularPipelineBlocks

Parameter

  • **kwargs — Nama dan nilai input. Hanya input pemicu yang memengaruhi pemilihan blok.

Mengembalikan

  • ModularPipelineBlocks

Blok daun atau SequentialPipelineBlocks yang telah diselesaikan

  • None: Jika blok ini akan dilewati (tidak ada pemicu yang cocok dan tidak ada default)

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 ke get_execution_blocks() yang mengembalikan SequentialPipelineBlocks yang berisi blok eksekusi yang telah dipecahkan

select_block

< >

( **kwargs ) → str | None

Parameter

  • **kwargs — Nama input pemicu dan nilainya dari state.

Mengembalikan

str | None

Nama blok yang akan dijalankan, atau None untuk menggunakan default/melompati.

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.

Update on GitHub