Diffusers documentation
ComponentsManager
ComponentsManager
ComponentsManager sigue en desarrollo activo y su API puede cambiar.
El 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 para gestionar componentes y memoria de dispositivo.
Conectar a un pipeline
Cree un ComponentsManager y páselo a un ModularPipeline mediante from_pretrained() o init_pipeline().
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)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 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.
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() 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 al agregar o eliminar componentes.
manager.enable_auto_cpu_offload(device="cuda") # or "mps", "xpu", "cpu"Todos los modelos comienzan en la CPU y 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() para deshabilitar el offloading.
manager.disable_auto_cpu_offload()