# ComponentsManager

> [!WARNING]
> [ComponentsManager](/docs/diffusers/main/es/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) sigue en desarrollo activo y su API puede cambiar.

El [ComponentsManager](/docs/diffusers/main/es/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) es un sistema de registro y gestión de modelos para Modular Diffusers. Añade y rastrea modelos, almacena metadatos útiles (tamaño del modelo, ubicación en el dispositivo, adaptadores) y admite la descarga de componentes.

Esta guía le mostrará cómo usar [ComponentsManager](/docs/diffusers/main/es/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) para gestionar componentes y memoria de dispositivo.

## Conectar a un pipeline

Cree un [ComponentsManager](/docs/diffusers/main/es/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) y páselo a un [ModularPipeline](/docs/diffusers/main/es/api/modular_diffusers/pipeline#diffusers.ModularPipeline) mediante [from_pretrained()](/docs/diffusers/main/es/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained) o [init_pipeline()](/docs/diffusers/main/es/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)
```

Los componentes cargados por la pipeline se registran automáticamente en el manager. Puedes inspeccionarlos de inmediato.

## Inspeccionar componentes

Imprima [ComponentsManager](/docs/diffusers/main/es/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) para ver todos los componentes registrados, incluida su clase, ubicación en el dispositivo, dtype, tamaño de memoria e ID de carga.

La salida siguiente corresponde al ejemplo de `from_pretrained` anterior.

```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
-----------------------------------------------------------------------------------------------------------------------------
```

La tabla muestra los modelos (con información sobre el dispositivo, el dtype y la memoria) por separado de otros componentes, como los programadores y los tokenizadores. Si alguno de los modelos tiene adaptadores LoRA, IP-Adapters o cuantización aplicada, esa información se muestra en una sección adicional en la parte inferior.

## Descarga

El método [enable_auto_cpu_offload()](/docs/diffusers/main/es/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager.enable_auto_cpu_offload) es una estrategia de descarga global que funciona en todos los modelos, independientemente del pipeline que los utilice. Una vez habilitado, no es necesario preocuparse por la ubicación en el dispositivo si se añaden o eliminan componentes.

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

Todos los modelos comienzan en la CPU y [ComponentsManager](/docs/diffusers/main/es/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) los mueve al dispositivo adecuado justo antes de que se necesiten, y devuelve otros modelos a la CPU cuando la memoria de la GPU es baja.

Llama a [disable_auto_cpu_offload()](/docs/diffusers/main/es/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager.disable_auto_cpu_offload) para deshabilitar el offloading.

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

