Diffusers documentation

ComponentsManager

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ComponentsManager

ComponentsManager est encore en cours de développement actif et son API peut évoluer.

Le ComponentsManager est un système d’enregistrement et de gestion des modèles pour Modular Diffusers. Il ajoute et suit les modèles, stocke des métadonnées utiles (taille du modèle, placement sur l’appareil, adaptateurs) et prend en charge le déchargement (offloading).

Ce guide vous montre comment utiliser ComponentsManager pour gérer les composants et la mémoire des appareils.

Se connecter à un pipeline

Créez un ComponentsManager et passez-le à un ModularPipeline via from_pretrained() ou 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)

Les composants chargés par le pipeline sont automatiquement enregistrés dans le gestionnaire. Vous pouvez les inspecter immédiatement.

Inspecter les composants

Affichez le ComponentsManager pour voir tous les composants enregistrés, y compris leur classe, leur emplacement sur l'appareil, leur dtype, leur taille mémoire et leur identifiant de chargement.

La sortie ci-dessous correspond à l’exemple from_pretrained ci-dessus.

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

Le tableau présente les modèles (avec les informations sur l’appareil, le dtype et la mémoire) séparément des autres composants tels que les planificateurs et les tokenizers. Si des modèles ont des adaptateurs LoRA, des IP-Adapters ou une quantisation appliquée, ces informations sont affichées dans une section supplémentaire en bas.

Offloading

La méthode enable_auto_cpu_offload() est une stratégie de déchargement globale qui fonctionne sur tous les modèles, quel que soit le pipeline qui les utilise. Une fois activée, vous n’avez plus à vous soucier du placement sur les périphériques si vous ajoutez ou retirez des composants.

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

Tous les modèles démarrent sur le CPU et ComponentsManager les déplace sur l’appareil approprié juste avant qu’ils soient nécessaires, et déplace les autres modèles vers le CPU lorsque la mémoire GPU est faible.

Appel de disable_auto_cpu_offload() pour désactiver le déchargement.

manager.disable_auto_cpu_offload()
Update on GitHub