Diffusers documentation
Pipeline
Pipeline
ModularPipeline
kelas diffusers.ModularPipeline
< source >( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )
Kelas dasar untuk semua pipeline Modular.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | Nonetrust_remote_code: bool | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = None**kwargs )
Parameter
- pretrained_model_name_or_path (
stratauos.PathLike, opsional) — Path ke konfigurasi pipeline pretrained. Sistem akan terlebih dahulu mencoba memuat konfigurasi darimodular_model_index.json, lalu beralih kemodel_index.jsonuntuk kompatibilitas dengan repositori standar non-modular. Jika pretrained_model_name_or_path tidak berisi konfigurasi pipeline apa pun, nilainya akan diset ke None selama inisialisasi. - trust_remote_code (
bool, opsional) — Apakah akan mempercayai kode jarak jauh saat memuat pipeline, perlu diatur ke True jika Anda ingin membuat blok pipeline berdasarkan kode kustom dipretrained_model_name_or_path - components_manager (
ComponentsManager, opsional) — Instans ComponentsManager untuk mengelola beberapa komponen lintas pipeline yang berbeda dan menerapkan strategi offloading. - collection (
str, opsional) —` Nama koleksi untuk mengorganisasi komponen di ComponentsManager. - workflow (
str, opsional) — Nama dari workflow yang dideklarasikan oleh blok pipeline. Jika diberikan, blok-blok tersebut akan dipangkas menjadi blok eksekusi dari workflow tersebut, sehingga pipeline hanya mengharapkan — danload_components()hanya memuat — komponen yang digunakan oleh workflow tersebut.
Muat ModularPipeline dari repositori huggingface hub.
load_components
< source >( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )
Parameter
- names — daftar nama komponen yang akan dimuat. Jika None, akan memuat semua komponen dengan default_creation_method == “from_pretrained”. Jika diberikan sebagai daftar atau string, hanya komponen yang ditentukan yang akan dimuat.
- workflow — nama dari workflow yang dideklarasikan oleh blok pipeline. Jika diberikan, hanya komponen yang digunakan oleh blok eksekusi workflow tersebut yang dimuat. Tidak dapat digabungkan dengan
names. - **kwargs — kwargs tambahan yang akan diteruskan ke
from_pretrained().Bisa berupa:- satu nilai yang akan diterapkan ke semua komponen yang akan dimuat, misalnya dtype=torch.bfloat16
- dict, mis. dtype={“unet”: torch.bfloat16, “default”: torch.float32}
- jika berpotensi menimpa ComponentSpec jika diberikan field pemuatan yang berbeda di kwargs, misalnya
pretrained_model_name_or_path,variant,revision, dll. - jika berpotensi menimpa ComponentSpec jika diberikan field pemuatan yang berbeda di kwargs, misalnya
pretrained_model_name_or_path,variant,revision, dll.
Muat komponen yang dipilih dari spesifikasi.
register_components
< source >( **kwargs )
Daftarkan komponen dengan spesifikasi yang sesuai.
Metode ini bertanggung jawab untuk:
- Menetapkan objek komponen sebagai atribut pada loader (misalnya, self.unet = unet)
- Memperbarui dict config, yang akan disimpan sebagai
modular_model_index.jsonselamasave_pretrained(hanya untuk komponen from_pretrained) - Menambahkan komponen ke manajer komponen jika ada yang terpasang (hanya untuk komponen from_pretrained)
Metode ini dipanggil ketika:
- Komponen pertama kali diinisialisasi di init:
- komponen from_pretrained tidak dimuat selama init sehingga didaftarkan sebagai None;
- non from_pretrained dibuat selama init dan didaftarkan sebagai objek itu sendiri
- Komponen diperbarui dengan metode
update_components(): misalnya loader.update_components(unet=unet) atau loader.update_components(guider=guider_spec) - (from_pretrained) Komponen dimuat dengan metode
load_components(): misalnya loader.load_components(names=[“unet”]) atau loader.load_components() untuk memuat semua komponen default
Catatan:
- Saat mendaftarkan None untuk sebuah komponen, atribut diset ke None tetapi spesifikasi tetap disinkronkan dengan dict konfigurasi, yang akan disimpan sebagai
modular_model_index.jsonselamasave_pretrained - component_specs diperbarui agar sesuai dengan komponen baru di luar metode ini, misalnya pada metode
update_components()
save_pretrained
< source >( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = False**kwargs )
Parameter
- save_directory (
stratauos.PathLike) — Direktori untuk menyimpan pipeline. Akan dibuat jika belum ada. - safe_serialization (
bool, opsional, defaultTrue) — Apakah model disimpan menggunakansafetensorsatau cara tradisional PyTorch denganpickle. - variant (
str, opsional) — Jika ditentukan, bobot disimpan dalam formatpytorch_model.<variant>.bin. - max_shard_size (
intataustr, defaultNone) — Ukuran maksimum checkpoint sebelum dipecah menjadi shard. Setiap shard checkpoint akan memiliki ukuran lebih kecil dari nilai ini. Jika dinyatakan sebagai string, harus berupa angka diikuti satuan (seperti"5GB"). Jika dinyatakan sebagai integer, satuannya adalah byte. - push_to_hub (
bool, opsional, defaultFalse) — Apakah pipeline akan didorong ke Hugging Face model hub setelah disimpan. - **kwargs — Argumen kata kunci tambahan:
overwrite_modular_index(bool, opsional, defaultTrue): Apakah akan memperbaruimodular_model_index.jsonsehingga spesifikasi pemuatan setiap komponen yang disimpan menunjuk ke tujuan:repo_idsaat mendorong ke Hub, selain itusave_directory. Komponen yang tidak dimuat tidak disimpan dan selalu mempertahankan spesifikasi pemuatan yang tercatat. BerikanFalseuntuk juga mempertahankan spesifikasi yang tercatat dari komponen yang sedang disimpan (misalnya untuk indeks yang sengaja merujuk ke repositori lain); komponen tanpa id pemuatan (seperti model kustom yang ditambahkan denganupdate_components) tetap ditulis ulang karena tidak memiliki sumber yang tercatat.repo_id(str, opsional): ID repositori untuk mendorong pipeline ke sana. Secara default menggunakan komponen terakhir darisave_directory.commit_message(str, opsional): Pesan commit untuk operasi push ke hub.private(bool, opsional): Apakah repositori harus bersifat privat.create_pr(bool, opsional, defaultFalse): Apakah akan membuat pull request alih-alih mendorong langsung.token(str, opsional): Token Hugging Face yang digunakan untuk autentikasi.
Simpan pipeline dan semua komponennya ke sebuah direktori, sehingga dapat dimuat ulang menggunakan metode kelas from_pretrained().
ke
< source >( *args**kwargs ) → DiffusionPipeline
Parameter
- dtype (
torch.dtype, opsional) — Mengembalikan pipeline dengandtypeyang ditentukan - device (
torch.Device, opsional) — Mengembalikan pipeline dengandeviceyang ditentukan - silence_dtype_warnings (
str, opsional, defaultnyaFalse) — Apakah akan mengabaikan peringatan jikadtypetarget tidak kompatibel dengandevicetarget.
Mengembalikan
Pipeline dikonversi ke dtype dan/atau dtype yang ditentukan.
Melakukan konversi dtype dan/atau device Pipeline. Sebuah torch.dtype dan torch.device disimpulkan dari argumen self.to(*args, **kwargs).
> Jika pipeline sudah memiliki torch.dtype dan torch.device yang benar, maka pipeline dikembalikan apa adanya. Selain itu, > pipeline yang dikembalikan adalah salinan dari self dengan torch.dtype dan torch.device yang diinginkan.
Berikut adalah cara untuk memanggil to:
to(dtype, silence_dtype_warnings=False) → DiffusionPipelineuntuk mengembalikan pipeline dengandtypeyang ditentukanto(device, silence_dtype_warnings=False) → DiffusionPipelineuntuk mengembalikan pipeline dengandeviceyang ditentukanto(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipelineuntuk mengembalikan pipeline dengandevicedandtypeyang ditentukan
unload_components
< source >( names: list[str] | str )
Muat turun komponen yang dipilih, membebaskan memori mereka.
Atribut komponen diatur kembali ke None dan, jika ComponentsManager terlampir, komponen dihapus darinya. Spesifikasi komponen tidak diubah, sehingga komponen dapat dimuat kembali nanti dengan load_components().
update_components
< source >( **kwargs )
Parameter
- **kwargs — Objek komponen atau nilai konfigurasi untuk diperbarui: Objek komponen: Model yang dimuat dengan AutoModel.from_pretrained() atau ComponentSpec.load() secara otomatis diberi tag dengan informasi pemuatan. Objek ConfigMixin tanpa bobot (misalnya, scheduler, guider) dapat diteruskan secara langsung. Nilai konfigurasi: Nilai sederhana untuk memperbarui pengaturan konfigurasi (misalnya, requires_safety_checker=False)
- Objek komponen: Model yang dimuat dengan
AutoModel.from_pretrained()atauComponentSpec.load()secara otomatis diberi tag dengan informasi pemuatan. Objek ConfigMixin tanpa bobot (misalnya, scheduler, guider) dapat diteruskan secara langsung. - Nilai konfigurasi: Nilai sederhana untuk memperbarui pengaturan konfigurasi
(Contoh:
requires_safety_checker=False)
- Objek komponen: Model yang dimuat dengan
Perbarui komponen dan nilai konfigurasi serta spesifikasi setelah pipeline diinstansiasi.
Metode ini memungkinkan Anda untuk:
- Ganti komponen yang ada dengan yang baru (misalnya, memperbarui
self.unetatauself.text_encoder) - Perbarui nilai konfigurasi (misalnya, mengubah flag
self.requires_safety_checker)
Selain memperbarui komponen dan nilai konfigurasi sebagai atribut pipeline, metode ini juga memperbarui:
- spesifikasi yang sesuai di
_component_specsdan_config_specs - dict
config, yang akan disimpan sebagaimodular_model_index.jsonselamasave_pretrained
Contoh:
# Update pre-trained model
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)
# Update configuration values
pipeline.update_components(requires_safety_checker=False)Catatan:
- Komponen yang dimuat dengan
AutoModel.from_pretrained()atauComponentSpec.load()akan mempertahankan spesifikasi pemuatan untuk serialisasi. Komponen kustom atau yang dimuat secara lokal tanpa referensi Hub akan memiliki entrimodular_model_index.jsonyang diperbarui secara otomatis selamasave_pretrained(). - Objek ConfigMixin tanpa bobot (misalnya, scheduler, guider) dapat diteruskan secara langsung.