Diffusers documentation
Komponen dan konfigurasi
Komponen dan konfigurasi
ComponentSpec
kelas diffusers.ComponentSpec
< source >( name: str | None = Nonetype_hint: typing.Optional[typing.Type] = Nonedescription: str | None = Noneconfig: diffusers.configuration_utils.FrozenDict | None = Nonepretrained_model_name_or_path: str | list[str] | None = Nonesubfolder: str | None = ''variant: str | None = Nonerevision: str | None = Nonedefault_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained'repo: str | list[str] | None = None )
Parameter
- name — Nama komponen
- type_hint — Jenis komponen (misalnya UNet2DConditionModel)
- description — Deskripsi opsional dari komponen
- config — Dict config opsional untuk pembuatan init
- pretrained_model_name_or_path — path pretrained_model_name_or_path opsional untuk pembuatan from_pretrained
- subfolder — Subfolder opsional di pretrained_model_name_or_path
- variant — Varian opsional di pretrained_model_name_or_path
- revision — Revisi opsional di pretrained_model_name_or_path
- default_creation_method — Preferred creation method - “from_config” or “from_pretrained”
Spesifikasi untuk komponen pipeline.
Komponen dapat dibuat dengan dua cara:
- Dari awal menggunakan init dengan dict konfigurasi
- menggunakan
from_pretrained
create
< source >( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )
Buat komponen menggunakan from_config dengan config.
decode_load_id
< source >( load_id: str )
Decode string load_id kembali menjadi kamus berisi bidang dan nilai pemuatan.
from_component
< source >( name: strcomponent: Any )
Buat ComponentSpec dari Component.
Saat ini mendukung:
- Komponen yang dibuat dengan metode
ComponentSpec.load() - Komponen yang merupakan subclass ConfigMixin tetapi bukan nn.Module (misalnya, scheduler, guider)
Muat komponen menggunakan from_pretrained.
Kembalikan nama semua field yang terkait dengan pemuatan (yaitu field yang field.metadata["loading"]-nya bernilai True).
ConfigSpec
Spesifikasi untuk parameter konfigurasi pipeline.
ComponentsManager
Sistem registrasi dan manajemen terpusat untuk komponen model di berbagai pipeline.
ComponentsManager menyediakan cara terpadu untuk mendaftarkan, melacak, dan menggunakan kembali komponen model (seperti UNet, VAE, text encoder, dll.) di berbagai pipeline modular. Fitur yang disertakan meliputi deteksi duplikat, manajemen memori, dan organisasi komponen.
> Ini adalah fitur eksperimental dan kemungkinan akan berubah di masa depan.
Contoh:
from diffusers import ComponentsManager
# Create a components manager
cm = ComponentsManager()
# Add components
cm.add("unet", unet_model, collection="sdxl")
cm.add("vae", vae_model, collection="sdxl")
# Enable auto offloading
cm.enable_auto_cpu_offload()
# Retrieve components
unet = cm.get_one(name="unet", collection="sdxl")tambah
< source >( name: strcomponent: Anycollection: str | None = None ) → str
Parameter
- name (str) — Nama dari komponen
- component (Any) — Komponen yang akan ditambahkan
- collection (str | None) — Koleksi tempat komponen akan ditambahkan
Mengembalikan
str
ID komponen unik, yang dihasilkan sebagai “{name}_{id(component)}” di mana id(component) adalah pengidentifikasi unik bawaan Python untuk objek
Tambahkan komponen ke ComponentsManager.
Nonaktifkan offloading CPU otomatis untuk semua komponen.
enable_auto_cpu_offload
< source >( device: str | int | torch.device = Nonememory_reserve_margin = '3GB'offload_strategy = None )
Parameter
- device (str | int | torch.device) — Perangkat eksekusi tempat model dipindahkan untuk jalur maju
- memory_reserve_margin (str) — Margin cadangan memori yang akan digunakan, defaultnya 3GB. Ini adalah jumlah memori yang harus tetap kosong di perangkat untuk menghindari kehabisan memori selama eksekusi model (misalnya, untuk aktivasi antara, gradien, dll.)
- offload_strategy — Callable apa pun dengan tanda tangan
(hooks, model_id, model, execution_device) -> hooks, yang mengembalikan model resident mana yang akan di-offload sebelum model yang masuk dimuat. Defaultnya adalahAutoOffloadStrategy, yang membebaskan kombinasi terkecil yang cukup.
Aktifkan offloading CPU otomatis untuk semua komponen.
Algoritma ini bekerja sebagai berikut:
- Semua model dimulai di CPU secara default
- Saat forward pass model dipanggil, model tersebut dipindahkan ke perangkat eksekusi
- Jika memori tidak mencukupi, model lain di perangkat dipindahkan kembali ke CPU
- Sistem mencoba meng-offload kombinasi model terkecil yang membebaskan memori yang cukup
- Model tetap berada di perangkat eksekusi hingga model lain membutuhkan memori dan memaksa model tersebut untuk keluar
Model yang di-offload sebagai grup ikut serta dalam proses ini tetapi menempatkan dirinya: ia masih dapat membuat ruang dengan memindahkan model lain ke samping, dan tidak pernah dipindahkan untuk memberi ruang bagi model lain. Urutan mana pun dapat digunakan — offload grup sebelum atau setelah mengaktifkan ini. AutoOffloadStrategy menentukan keputusannya berdasarkan jejak memori model, yang tidak menggambarkan model yang memegang satu grup pada satu waktu, sehingga berikan offload_strategy yang menentukan berdasarkan alur kerja.
get_components_by_ids
< source >( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]
Parameter
- ids (list[str]) — daftar ID komponen
- return_dict_with_names (bool | None) — Apakah akan mengembalikan kamus dengan nama komponen sebagai kunci:
Mengembalikan
dict[str, Any]
Kamus komponen.
- Jika return_dict_with_names=True, kunci adalah nama komponen.
- Jika return_dict_with_names=False, kunci adalah ID komponen.
Membuang
ValueError
ValueError— Jika nama komponen duplikat ditemukan dalam hasil pencarian saat return_dict_with_names=True
Dapatkan komponen berdasarkan daftar ID.
get_components_by_names
< source >( names: list[str]collection: str | None = None ) → dict[str, Any]
Dapatkan komponen berdasarkan daftar nama, secara opsional difilter berdasarkan koleksi.
get_ids
< source >( names: str | list[str] = Nonecollection: str | None = None ) → list[str]
Dapatkan ID komponen berdasarkan daftar nama, secara opsional difilter berdasarkan koleksi.
get_model_info
< source >( component_id: strfields: str | list[str] | None = None )
Dapatkan informasi komprehensif tentang komponen.
get_one
< source >( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )
Parameter
- component_id (str | None) — ID komponen opsional untuk diambil
- name (str | None) — Nama komponen atau pola
- collection (str | None) — Koleksi opsional untuk difilter
- load_id (str | None) — load_id opsional untuk memfilter berdasarkan
Membuang
ValueError
ValueError— Jika tidak ada komponen yang cocok atau beberapa komponen cocok
Dapatkan satu komponen dengan salah satu cara berikut:
- pencarian nama (pencocokan pola), koleksi, atau load_id.
- melewatkan component_id Membuangkan error jika beberapa komponen cocok atau tidak ada yang ditemukan.
hapus
< source >( component_id: str = None )
Hapus komponen dari ComponentsManager.
Hapus komponen dari koleksi.
search_components
< source >( names: str | None = Nonecollection: str | None = Noneload_id: str | None = Nonereturn_dict_with_names: bool = True )
Parameter
- names — Nama komponen atau pola
Pola:
- “unet” : cocokkan komponen apa pun dengan nama dasar “unet” (misalnya, unet_123abc)
- “!unet” : semua kecuali komponen dengan nama dasar “unet”
- “unet*” : apa pun dengan nama dasar yang diawali dengan “unet”
- “!unet*” : apa pun dengan nama dasar yang TIDAK diawali dengan “unet”
- ”unet” : apa pun dengan nama dasar yang mengandung “unet”
- “!unet” : apa pun dengan nama dasar yang TIDAK mengandung “unet”
- “refiner|vae|unet” : apa pun dengan nama dasar yang persis cocok dengan “refiner”, “vae”, atau “unet”
- “!refiner|vae|unet” : apa pun dengan nama dasar yang TIDAK persis cocok dengan “refiner”, “vae”, atau “unet”
- “unet|vae” : apa pun dengan nama dasar yang diawali dengan “unet” ATAU diawali dengan “vae”
- collection — Koleksi opsional untuk difilter
- load_id — load_id opsional untuk memfilter berdasarkan
- return_dict_with_names — Jika True, mengembalikan kamus dengan nama komponen sebagai kunci, dan melempar kesalahan jika ditemukan beberapa komponen dengan nama yang sama. Jika False, mengembalikan kamus dengan ID komponen sebagai kunci.
Cari komponen berdasarkan nama dengan pencocokan pola sederhana. Opsional, saring berdasarkan collection atau load_id.
set_offload_strategy
< source >( offload_strategy )
Parameter
- offload_strategy —
Callable apa pun dengan tanda tangan
(hooks, model_id, model, execution_device) -> hooks: menerima hooks dari model-model yang saat ini berada di perangkat dan mengembalikan hooks yang akan di-offload sebelum model yang masuk dimuat. Nilai defaultnya adalahAutoOffloadStrategy, yang membebaskan kombinasi terkecil yang cukup.
Ganti strategi offload pada semua model yang dikelola. Hanya valid saat auto CPU offloading diaktifkan.