# ComponentsManager

> [!WARNING]
> [ComponentsManager](/docs/diffusers/main/id/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) masih dalam pengembangan aktif dan API-nya dapat berubah.

[ComponentsManager](/docs/diffusers/main/id/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) adalah sistem registrasi dan manajemen model untuk Modular Diffusers. Komponen ini menambahkan dan melacak model, menyimpan metadata yang berguna (ukuran model, penempatan perangkat, adapter), serta mendukung offloading.

Panduan ini akan menunjukkan cara menggunakan [ComponentsManager](/docs/diffusers/main/id/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) untuk mengelola komponen dan memori perangkat.

## Hubungkan ke pipeline

Buat [ComponentsManager](/docs/diffusers/main/id/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) dan teruskan ke [ModularPipeline](/docs/diffusers/main/id/api/modular_diffusers/pipeline#diffusers.ModularPipeline) dengan [from_pretrained()](/docs/diffusers/main/id/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained) atau [init_pipeline()](/docs/diffusers/main/id/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks.init_pipeline).

```py
from diffusers import ModularPipeline, ComponentsManager
import torch

manager = ComponentsManager()
pipe = ModularPipeline.from_pretrained("Tongyi-MAI/Z-Image-Turbo", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
```

```py
from diffusers import ModularPipelineBlocks, ComponentsManager
import torch
manager = ComponentsManager()
blocks = ModularPipelineBlocks.from_pretrained("diffusers/Florence2-image-Annotator", trust_remote_code=True)
pipe= blocks.init_pipeline(components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
```

Komponen yang dimuat oleh pipeline secara otomatis didaftarkan di dalam manager. Anda dapat memeriksanya segera.

## Periksa komponen

Cetak [ComponentsManager](/docs/diffusers/main/id/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) untuk melihat semua komponen yang terdaftar, termasuk kelas, penempatan perangkat, dtype, ukuran memori, dan ID pemuatan.

Output di bawah ini sesuai dengan contoh `from_pretrained` di atas.

```py
Components:
=============================================================================================================================
Models:
-----------------------------------------------------------------------------------------------------------------------------
Name_ID                      | Class                    | Device: act(exec) | Dtype          | Size (GB) | Load ID
-----------------------------------------------------------------------------------------------------------------------------
text_encoder_140458257514752 | Qwen3Model               | cpu               | torch.bfloat16 | 7.49      | Tongyi-MAI/Z-Image-Turbo|text_encoder|null|null
vae_140458257515376          | AutoencoderKL            | cpu               | torch.bfloat16 | 0.16      | Tongyi-MAI/Z-Image-Turbo|vae|null|null
transformer_140458257515616  | ZImageTransformer2DModel | cpu               | torch.bfloat16 | 11.46     | Tongyi-MAI/Z-Image-Turbo|transformer|null|null
-----------------------------------------------------------------------------------------------------------------------------

Other Components:
-----------------------------------------------------------------------------------------------------------------------------
ID                           | Class                           | Collection
-----------------------------------------------------------------------------------------------------------------------------
scheduler_140461023555264    | FlowMatchEulerDiscreteScheduler | N/A
tokenizer_140458256346432    | Qwen2Tokenizer                  | N/A
-----------------------------------------------------------------------------------------------------------------------------
```

Tabel menampilkan model (dengan informasi perangkat, dtype, dan memori) secara terpisah dari komponen lain seperti scheduler dan tokenizer. Jika ada model yang memiliki adapter LoRA, IP-Adapter, atau kuantisasi yang diterapkan, informasi tersebut ditampilkan di bagian tambahan di bagian bawah.

## Offloading

Metode [enable_auto_cpu_offload()](/docs/diffusers/main/id/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager.enable_auto_cpu_offload) adalah strategi offloading global yang bekerja di semua model terlepas dari pipeline mana yang menggunakannya. Setelah diaktifkan, Anda tidak perlu khawatir tentang penempatan perangkat jika Anda menambahkan atau menghapus komponen.

```py
manager.enable_auto_cpu_offload(device="cuda")  # or "mps", "xpu", "cpu"
```

Semua model dimulai di CPU dan [ComponentsManager](/docs/diffusers/main/id/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) memindahkannya ke perangkat yang tepat tepat sebelum dibutuhkan, serta memindahkan model lain kembali ke CPU saat memori GPU rendah.

Panggil [disable_auto_cpu_offload()](/docs/diffusers/main/id/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager.disable_auto_cpu_offload) untuk menonaktifkan offloading.

```py
manager.disable_auto_cpu_offload()
```

