Diffusers documentation

UNet

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

and get access to the augmented documentation experience

to get started

UNet

Một số phương pháp huấn luyện - như LoRA và Custom Diffusion - thường nhắm vào các lớp attention của UNet, nhưng các phương pháp huấn luyện này cũng có thể nhắm đến các lớp không phải attention khác. Thay vì huấn luyện tất cả các tham số của mô hình, chỉ một tập con các tham số được huấn luyện, giúp nhanh hơn và hiệu quả hơn. Lớp này hữu ích nếu bạn chỉ nạp trọng số vào một UNet. Nếu bạn cần nạp trọng số vào text encoder hoặc cả text encoder và UNet, hãy thử sử dụng hàm load_lora_weights() thay thế.

Lớp UNet2DConditionLoadersMixin cung cấp các hàm để tải và lưu trọng số, hợp nhất và tách LoRA, vô hiệu hóa và kích hoạt LoRA, cũng như thiết lập và xóa adapter.

Để tìm hiểu thêm về cách tải trọng số LoRA, hãy xem hướng dẫn LoRA.

UNet2DConditionLoadersMixin

lớp diffusers.loaders.UNet2DConditionLoadersMixin

< >

( )

Nạp các lớp LoRA vào UNet2DCondtionModel.

load_attn_procs

< >

( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )

Tham số

  • pretrained_model_name_or_path_or_dict (str hoặc os.PathLike hoặc dict) — Có thể là:
    • Một chuỗi, id của mô hình (ví dụ google/ddpm-celebahq-256) của một mô hình được huấn luyện trước có sẵn trên Hub.
    • Đường dẫn đến một thư mục (ví dụ ./my_model_directory) chứa các trọng số mô hình được lưu bằng ModelMixin.save_pretrained().
    • Một torch state dict.
  • cache_dir (str | os.PathLike, tùy chọn) — Đường dẫn đến thư mục nơi cấu hình mô hình được huấn luyện trước đã tải xuống được lưu đệm nếu không sử dụng bộ lưu đệm tiêu chuẩn.
  • force_download (bool, tùy chọn, mặc định là False) — Có nên buộc tải lại (re-download) trọng số mô hình và các tệp cấu hình, ghi đè lên các phiên bản đã được lưu trong bộ nhớ đệm nếu chúng tồn tại hay không.
  • proxies (dict[str, str], tuỳ chọn) — Một từ điển các máy chủ proxy để sử dụng theo giao thức hoặc điểm cuối, ví dụ, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Các proxy này được sử dụng cho mỗi yêu cầu.
  • local_files_only (bool, tùy chọn, mặc định là False) — Xác định có chỉ tải trọng số và tệp cấu hình của mô hình từ cục bộ hay không. Nếu đặt thành True, mô hình sẽ không được tải xuống từ Hub.
  • token (str hoặc bool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. Nếu True, token được tạo từ diffusers-cli login (được lưu trong ~/.huggingface) sẽ được sử dụng.
  • revision (str, tùy chọn, mặc định là "main") — Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên thẻ, id commit, hoặc bất kỳ định danh nào được Git cho phép.
  • subfolder (str, tùy chọn, mặc định là "") — Vị trí thư mục con của tệp mô hình bên trong một kho lưu trữ mô hình lớn hơn trên Hub hoặc cục bộ.
  • weight_name (str, tùy chọn, mặc định là None) — Tên của tệp state dict đã được serialize.

Tải các lớp attention processor của Custom Diffusion đã được huấn luyện trước vào UNet2DConditionModel. Các lớp attention processor phải được định nghĩa trong attention_processor.py và là một lớp torch.nn.Module. Để tải các lớp LoRA, hãy sử dụng load_lora_adapter() thay thế.

Ví dụ:

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")

save_attn_procs

< >

( save_directory: str | os.PathLikeis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True**kwargs )

Tham số

  • save_directory (str hoặc os.PathLike) — Thư mục để lưu trữ attention processor (sẽ được tạo nếu chưa tồn tại).
  • is_main_process (bool, tùy chọn, mặc định là True) — Xác định xem tiến trình gọi hàm này có phải là tiến trình chính hay không. Hữu ích trong quá trình huấn luyện phân tán khi bạn cần gọi hàm này trên tất cả các tiến trình. Trong trường hợp này, chỉ đặt is_main_process=True trên tiến trình chính để tránh điều kiện đua.
  • save_function (Callable) — Hàm được sử dụng để lưu state dictionary. Hữu ích trong quá trình huấn luyện phân tán khi bạn cần thay thế torch.save bằng một phương pháp khác. Có thể được cấu hình bằng biến môi trường DIFFUSERS_SAVE_MODE.
  • safe_serialization (bool, tùy chọn, mặc định là True) — Có nên lưu mô hình bằng safetensors hay bằng pickle hay không.

Lưu các lớp attention processor của Custom Diffusion vào một thư mục để có thể tải lại bằng phương thức load_attn_procs(). Để lưu các lớp LoRA, hãy sử dụng save_lora_adapter() thay thế.

Ví dụ:

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
pipeline.unet.save_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
Update on GitHub