Diffusers documentation

ComponentsManager

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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_pretrained
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)

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()
Update on GitHub