Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /id /api /modular_diffusers /pipeline_components.md
mishig's picture
|
download
raw
15.9 kB
# Komponen dan konfigurasi
## ComponentSpec[[diffusers.ComponentSpec]]
#### diffusers.ComponentSpec[[diffusers.ComponentSpec]]
```python
diffusers.ComponentSpec(name: str | None = None, type_hint: typing.Optional[typing.Type] = None, description: str | None = None, config: diffusers.configuration_utils.FrozenDict | None = None, pretrained_model_name_or_path: str | list[str] | None = None, subfolder: str | None = '', variant: str | None = None, revision: str | None = None, default_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained', repo: str | list[str] | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L98)
**Parameter:**
name : Nama komponen
type_hint : Jenis komponen (misalnya UNet2DConditionModel)
description : Deskripsi opsional dari komponen
config : Dict konfigurasi 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:
1. Dari awal menggunakan __init__ dengan dict konfigurasi
2. menggunakan `from_pretrained`
#### buat[[diffusers.ComponentSpec.create]]
```python
create(config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None, **kwargs)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L267)
Buat komponen menggunakan from_config dengan config.
#### decode_load_id[[diffusers.ComponentSpec.decode_load_id]]
```python
decode_load_id(load_id: str)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L228)
**Parameter:**
load_id : String load_id untuk didekode, format: "pretrained_model_name_or_path|subfolder|variant|revision" di mana nilai None direpresentasikan sebagai "null"
**Mengembalikan:**
Dict yang memetakan nama field pemuatan ke nilai-nilainya. Contoh: { "pretrained_model_name_or_path": "path/to/repo", "subfolder": "subfolder", "variant": "variant", "revision": "revision" } Jika nilai segmen adalah "null", nilainya diganti dengan None. Mengembalikan None jika load_id adalah "null" (menunjukkan komponen tidak dibuat dengan metode `load`).
Decode string load_id kembali menjadi kamus berisi bidang dan nilai pemuatan.
#### from_component[[diffusers.ComponentSpec.from_component]]
```python
from_component(name: str, component: Any)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L149)
**Parameter:**
name : Nama komponen
component : Objek komponen untuk membuat spec
**Mengembalikan:**
objek ComponentSpec
**Mengangkat:** ``ValueError``
- ``ValueError`` -- Jika komponen tidak didukung (misalnya nn.Module tanpa load_id, non-ConfigMixin)
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)
#### load[[diffusers.ComponentSpec.load]]
```python
load(**kwargs)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L295)
Muat komponen menggunakan from_pretrained.
#### loading_fields[[diffusers.ComponentSpec.loading_fields]]
```python
loading_fields()
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L209)
Kembalikan nama semua field terkait pemuatan (yaitu field yang field.metadata["loading"]-nya bernilai True).
## ConfigSpec[[diffusers.ConfigSpec]]
#### diffusers.ConfigSpec[[diffusers.ConfigSpec]]
```python
diffusers.ConfigSpec(name: str, default: Any, description: str | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L360)
Spesifikasi untuk parameter konfigurasi pipeline.
## ComponentsManager[[diffusers.ComponentsManager]]
#### diffusers.ComponentsManager[[diffusers.ComponentsManager]]
```python
diffusers.ComponentsManager()
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L296)
Sistem registrasi dan manajemen terpusat untuk komponen model di berbagai pipeline.
[ComponentsManager](/docs/diffusers/v0.43.0/id/api/modular_diffusers/pipeline_components#diffusers.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 mencakup deteksi duplikat, manajemen memori, dan organisasi komponen.
> [!WARNING] > Ini adalah fitur eksperimental dan kemungkinan akan berubah di masa depan.
Contoh:
```python
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")
```
#### tambahkan[[diffusers.ComponentsManager.add]]
```python
add(name: str, component: Any, collection: str | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L393)
**Parameter:**
name (str) : Nama komponen
component (Any) : Komponen yang akan ditambahkan
collection (str | None) : Kumpulan 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.
#### disable_auto_cpu_offload[[diffusers.ComponentsManager.disable_auto_cpu_offload]]
```python
disable_auto_cpu_offload()
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L795)
Nonaktifkan offloading CPU otomatis untuk semua komponen.
#### enable_auto_cpu_offload[[diffusers.ComponentsManager.enable_auto_cpu_offload]]
```python
enable_auto_cpu_offload(device: str | int | torch.device = None, memory_reserve_margin = '3GB', offload_strategy = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L701)
**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 adalah 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 adalah `AutoOffloadStrategy`, yang membebaskan kombinasi terkecil yang cukup.
Aktifkan offloading CPU otomatis untuk semua komponen.
Algoritma ini bekerja sebagai berikut:
1. Semua model dimulai di CPU secara default
2. Saat forward pass model dipanggil, model tersebut dipindahkan ke perangkat eksekusi
3. Jika memori tidak mencukupi, model lain di perangkat dipindahkan kembali ke CPU
4. Sistem mencoba meng-offload kombinasi model terkecil yang membebaskan memori yang cukup
5. 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[[diffusers.ComponentsManager.get_components_by_ids]]
```python
get_components_by_ids(ids: list[str], return_dict_with_names: bool | None = True)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L1104)
**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.
**Mengangkat:** ``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[[diffusers.ComponentsManager.get_components_by_names]]
```python
get_components_by_names(names: list[str], collection: str | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L1137)
**Parameter:**
names (list[str]) : daftar nama komponen
collection (str | None) : Koleksi opsional untuk memfilter berdasarkan
**Mengembalikan:** dict[str, Any]
Kamus komponen dengan nama komponen sebagai kunci
**Mengangkat:** ``ValueError``
- ``ValueError`` -- Jika nama komponen duplikat ditemukan dalam hasil pencarian
Dapatkan komponen berdasarkan daftar nama, secara opsional difilter berdasarkan koleksi.
#### get_ids[[diffusers.ComponentsManager.get_ids]]
```python
get_ids(names: str | list[str] = None, collection: str | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L1086)
**Parameter:**
names (str | list[str]) : daftar nama komponen
collection (str | None) : Koleksi opsional untuk memfilter berdasarkan
**Mengembalikan:** list[str]
daftar ID komponen
Dapatkan ID komponen berdasarkan daftar nama, secara opsional difilter berdasarkan koleksi.
#### get_model_info[[diffusers.ComponentsManager.get_model_info]]
```python
get_model_info(component_id: str, fields: str | list[str] | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L812)
**Parameter:**
component_id (str) : Nama komponen untuk mendapatkan informasinya
fields (str | list[str] | None) : Field(s) yang akan dikembalikan. Bisa berupa string untuk satu field atau list dari beberapa field. Jika None, menggunakan pengaturan available_info_fields.
**Mengembalikan:**
Dictionary yang berisi metadata komponen yang diminta. Jika fields ditentukan, hanya field tersebut yang dikembalikan. Jika tidak, semua field dikembalikan.
Dapatkan informasi komprehensif tentang komponen.
#### get_one[[diffusers.ComponentsManager.get_one]]
```python
get_one(component_id: str | None = None, name: str | None = None, collection: str | None = None, load_id: str | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L1041)
**Parameter:**
component_id (str | None) : ID komponen opsional untuk diambil
name (str | None) : Nama atau pola komponen
collection (str | None) : Koleksi opsional untuk memfilter berdasarkan
load_id (str | None) : load_id opsional untuk memfilter berdasarkan
**Mengembalikan:**
Satu komponen
**Mengangkat:** ``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
Membuang error jika beberapa komponen cocok atau tidak ada yang ditemukan.
#### hapus[[diffusers.ComponentsManager.remove]]
```python
remove(component_id: str = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L485)
**Parameter:**
component_id (str) : ID komponen yang akan dihapus
Hapus komponen dari ComponentsManager.
#### remove_from_collection[[diffusers.ComponentsManager.remove_from_collection]]
```python
remove_from_collection(component_id: str, collection: str)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L467)
Hapus komponen dari koleksi.
#### search_components[[diffusers.ComponentsManager.search_components]]
```python
search_components(names: str | None = None, collection: str | None = None, load_id: str | None = None, return_dict_with_names: bool = True)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L515)
**Parameter:**
names : Nama atau pola komponen Pola: - "unet" : cocok dengan komponen apa pun yang memiliki nama dasar "unet" (mis., unet_123abc) - "!unet" : semua kecuali komponen dengan nama dasar "unet" - "unet*" : apa pun dengan nama dasar yang diawali "unet" - "!unet*" : apa pun dengan nama dasar yang TIDAK diawali "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 "unet" ATAU diawali "vae"
collection : Koleksi opsional untuk memfilter berdasarkan
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
**Mengembalikan:**
Dictionary yang memetakan nama komponen ke komponen jika return_dict_with_names=True, atau dictionary yang memetakan ID komponen ke komponen jika return_dict_with_names=False
Cari komponen berdasarkan nama dengan pencocokan pola sederhana. Opsional, saring berdasarkan collection atau load_id.
#### set_offload_strategy[[diffusers.ComponentsManager.set_offload_strategy]]
```python
set_offload_strategy(offload_strategy)
```
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/components_manager.py#L779)
**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 harus di-offload sebelum model yang masuk dimuat. Default-nya adalah `AutoOffloadStrategy`, yang membebaskan kombinasi terkecil yang cukup.
Ganti strategi offload pada semua model yang dikelola. Hanya valid saat auto CPU offloading diaktifkan.
## InsertableDict[[diffusers.modular_pipelines.InsertableDict]]
#### diffusers.modular_pipelines.InsertableDict[[diffusers.modular_pipelines.InsertableDict]]
[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline_utils.py#L60)

Xet Storage Details

Size:
15.9 kB
·
Xet hash:
afb6cda678bc5275810ebf9c8dc6e5c3d49d27454edfd8beaf9d76f4a053737a

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.