Diffusers documentation
ComponentsManager
ComponentsManager
ComponentsManager vẫn đang trong quá trình phát triển tích cực và API của nó có thể thay đổi.
ComponentsManager là hệ thống đăng ký và quản lý mô hình cho Modular Diffusers. Nó thêm và theo dõi các mô hình, lưu trữ các siêu dữ liệu hữu ích (kích thước mô hình, vị trí thiết bị, adapter) và hỗ trợ offloading.
Hướng dẫn này sẽ cho bạn thấy cách sử dụng ComponentsManager để quản lý các thành phần và bộ nhớ thiết bị.
Kết nối với một pipeline
Tạo một ComponentsManager và truyền nó vào một ModularPipeline bằng cách sử dụng from_pretrained() hoặc 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)Các thành phần được nạp bởi pipeline sẽ được đăng ký tự động trong manager. Bạn có thể kiểm tra chúng ngay lập tức.
Kiểm tra các thành phần
In ComponentsManager để xem tất cả các thành phần đã đăng ký, bao gồm lớp, vị trí thiết bị, dtype, kích thước bộ nhớ và ID tải.
Đầu ra bên dưới tương ứng với ví dụ from_pretrained ở trên.
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
-----------------------------------------------------------------------------------------------------------------------------Bảng hiển thị các model (kèm thông tin về device, dtype và bộ nhớ) tách biệt với các thành phần khác như scheduler và tokenizer. Nếu bất kỳ model nào có áp dụng LoRA adapters, IP-Adapters hoặc lượng tử hóa, thông tin đó sẽ được hiển thị trong một phần bổ sung ở cuối.
Offloading
Phương thức enable_auto_cpu_offload() là một chiến lược offload toàn cục, hoạt động trên tất cả các mô hình bất kể pipeline nào đang sử dụng chúng. Một khi đã được bật, bạn không cần lo lắng về việc đặt thiết bị nếu thêm hoặc xóa các thành phần.
manager.enable_auto_cpu_offload(device="cuda") # or "mps", "xpu", "cpu"Tất cả các model bắt đầu trên CPU và ComponentsManager sẽ di chuyển chúng sang thiết bị phù hợp ngay trước khi cần dùng, đồng thời di chuyển các model khác trở lại CPU khi bộ nhớ GPU thấp.
Gọi disable_auto_cpu_offload() để tắt offloading.
manager.disable_auto_cpu_offload()