Buckets:
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[[diffusers.loaders.UNet2DConditionLoadersMixin]]
diffusers.loaders.UNet2DConditionLoadersMixin[[diffusers.loaders.UNet2DConditionLoadersMixin]]
diffusers.loaders.UNet2DConditionLoadersMixin()
Nạp các lớp LoRA vào UNet2DCondtionModel.
load_attn_procs[[diffusers.loaders.UNet2DConditionLoadersMixin.load_attn_procs]]
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 model (ví dụ google/ddpm-celebahq-256) của một model được huấn luyện trước lưu trên Hub. - Một đường dẫn đến thư mục (ví dụ ./my_model_directory) chứa trọng số model đượ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) : Xác định có nên ép buộc tải lại (re-download) trọng số mô hình và các tệp cấu hình hay không, ghi đè lên các phiên bản đã được lưu trong bộ nhớ đệm nếu chúng tồn tại.
proxies (dict[str, str], tùy 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 đượ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 xem có chỉ tải trọng số và tệp cấu hình của mô hình 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 là 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í của thư mục con chứ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[[diffusers.loaders.UNet2DConditionLoadersMixin.save_attn_procs]]
save_attn_procs(save_directory: str | os.PathLike, is_main_process: bool = True, weight_name: str = None, save_function: typing.Callable = None, safe_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ó 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")
Xet Storage Details
- Size:
- 7.44 kB
- Xet hash:
- 6689369559526902557807a54d35433af35b8f64aaa944f3c81e1e9c78d655c2
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.