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 всё ещё активно разрабатывается, и его API может измениться.

ComponentsManager — это система реестра и управления моделями для Modular Diffusers. Он добавляет и отслеживает модели, хранит полезную метаданные (размер модели, размещение на устройстве, адаптеры) и поддерживает выгрузку (offloading).

В этом руководстве показано, как использовать ComponentsManager для управления компонентами и памятью устройства.

Подключение к конвейеру

Create a ComponentsManager and pass it to a ModularPipeline with either from_pretrained() or 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)

Компоненты, загруженные с помощью pipeline, автоматически регистрируются в менеджере. Вы можете сразу же их проверить.

Осмотр компонентов

Выведите ComponentsManager, чтобы увидеть все зарегистрированные компоненты, включая их класс, расположение на устройстве, dtype, размер памяти и идентификатор загрузки.

Результат, приведённый ниже, соответствует примеру from_pretrained выше.

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

Таблица отображает модели (с информацией об устройстве, типе данных и памяти) отдельно от других компонентов, таких как планировщики и токенизаторы. Если к каким-либо моделям применены адаптеры LoRA, IP-Adapters или квантование, эта информация выводится в дополнительном разделе внизу.

Выгрузка

Метод enable_auto_cpu_offload() представляет собой глобальную стратегию выгрузки, которая работает со всеми моделями независимо от того, какой пайплайн их использует. После включения вам не нужно беспокоиться о размещении на устройствах при добавлении или удалении компонентов.

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

Все модели изначально загружаются на CPU, а ComponentsManager перемещает их на соответствующее устройство непосредственно перед использованием и возвращает другие модели на CPU при нехватке памяти GPU.

Вызовите disable_auto_cpu_offload(), чтобы отключить выгрузку.

manager.disable_auto_cpu_offload()
Update on GitHub