# ComponentsManager

> [!WARNING]
> [ComponentsManager](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) est encore en cours de développement actif et son API peut évoluer.

Le [ComponentsManager](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline_components#diffusers.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](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) pour gérer les composants et la mémoire des appareils.

## Se connecter à un pipeline

Créez un [ComponentsManager](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager) et passez-le à un [ModularPipeline](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline#diffusers.ModularPipeline) via [from_pretrained()](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained) ou [init_pipeline()](/docs/diffusers/v0.43.0/fr/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)
```

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](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline_components#diffusers.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.

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

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()](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager.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.

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

Tous les modèles démarrent sur le CPU et [ComponentsManager](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline_components#diffusers.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()](/docs/diffusers/v0.43.0/fr/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager.disable_auto_cpu_offload) pour désactiver le déchargement.

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

