Buckets:
Trình lập lịch
🤗 Diffusers cung cấp nhiều hàm scheduler cho quá trình khuếch tán. Scheduler nhận đầu ra của mô hình (mẫu mà quá trình khuếch tán đang lặp lại) và một bước thời gian (timestep) để trả về một mẫu đã khử nhiễu. Timestep rất quan trọng vì nó xác định vị trí của bước hiện tại trong quá trình khuếch tán; dữ liệu được tạo ra bằng cách lặp tiến về phía trước n timestep và suy diễn (inference) được thực hiện bằng cách lan truyền ngược lại qua các timestep. Dựa vào timestep, một scheduler có thể là discrete, khi đó timestep là một int, hoặc continuous, khi đó timestep là một float.
Tùy thuộc vào ngữ cảnh, một scheduler định nghĩa cách thêm nhiễu lặp đi lặp lại vào một hình ảnh hoặc cách cập nhật một mẫu dựa trên đầu ra của mô hình:
- trong quá trình training, một scheduler sẽ thêm nhiễu (có các thuật toán khác nhau về cách thêm nhiễu) vào một mẫu để huấn luyện mô hình diffusion
- trong quá trình inference, một scheduler xác định cách cập nhật một mẫu dựa trên đầu ra của mô hình được huấn luyện trước
Nhiều scheduler được triển khai từ thư viện k-diffusion của Katherine Crowson, và chúng cũng được sử dụng rộng rãi trong A1111. Để giúp bạn ánh xạ các scheduler từ k-diffusion và A1111 sang các scheduler trong 🤗 Diffusers, hãy xem bảng dưới đây:
| A1111/k-diffusion | 🤗 Diffusers | Cách sử dụng |
|---|---|---|
| DPM++ 2M | DPMSolverMultistepScheduler | |
| DPM++ 2M Karras | DPMSolverMultistepScheduler | khởi tạo với use_karras_sigmas=True |
| DPM++ 2M SDE | DPMSolverMultistepScheduler | khởi tạo với algorithm_type="sde-dpmsolver++" |
| DPM++ 2M SDE Karras | DPMSolverMultistepScheduler | khởi tạo với use_karras_sigmas=True và algorithm_type="sde-dpmsolver++" |
| DPM++ 2S a | N/A | rất giống với DPMSolverSinglestepScheduler |
| DPM++ 2S a Karras | N/A | rất giống với DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...) |
| DPM++ SDE | DPMSolverSinglestepScheduler | |
| DPM++ SDE Karras | DPMSolverSinglestepScheduler | khởi tạo với use_karras_sigmas=True |
| DPM2 | KDPM2DiscreteScheduler | |
| DPM2 Karras | KDPM2DiscreteScheduler | khởi tạo với use_karras_sigmas=True |
| DPM2 a | KDPM2AncestralDiscreteScheduler | |
| DPM2 a Karras | KDPM2AncestralDiscreteScheduler | khởi tạo với use_karras_sigmas=True |
| DPM thích ứng | N/A | |
| DPM nhanh | N/A | |
| Euler | EulerDiscreteScheduler | |
| Euler a | EulerAncestralDiscreteScheduler | |
| Heun | HeunDiscreteScheduler | |
| LMS | LMSDiscreteScheduler | |
| LMS Karras | LMSDiscreteScheduler | khởi tạo với use_karras_sigmas=True |
| N/A | DEISMultistepScheduler | |
| N/A | UniPCMultistepScheduler |
Lịch trình nhiễu và các loại lịch trình
| A1111/k-diffusion | 🤗 Diffusers |
|---|---|
| Karras | khởi tạo với use_karras_sigmas=True |
| sgm_uniform | khởi tạo với timestep_spacing="trailing" |
| đơn giản | khởi tạo với timestep_spacing="trailing" |
| exponential | khởi tạo với timestep_spacing="linspace", use_exponential_sigmas=True |
| beta | khởi tạo với timestep_spacing="linspace", use_beta_sigmas=True |
Tất cả các trình lập lịch đều được xây dựng từ lớp cơ sở SchedulerMixin, trong đó triển khai các tiện ích cấp thấp được chia sẻ bởi tất cả các trình lập lịch.
SchedulerMixin[[diffusers.SchedulerMixin]]
diffusers.SchedulerMixin[[diffusers.SchedulerMixin]]
diffusers.SchedulerMixin()
Lớp cơ sở cho tất cả các trình lập lịch.
SchedulerMixin chứa các hàm dùng chung cho tất cả các scheduler, chẳng hạn như các chức năng tải và lưu trữ chung.
ConfigMixin chịu trách nhiệm lưu trữ các thuộc tính cấu hình (như num_train_timesteps) được truyền vào hàm __init__ của scheduler, và các thuộc tính này có thể được truy cập bằng scheduler.config.num_train_timesteps.
Thuộc tính lớp:
- _compatibles (
list[str]) -- Một danh sách các lớp scheduler tương thích với lớp scheduler cha. Sử dụng from_config() để nạp một lớp scheduler tương thích khác (nên được ghi đè bởi lớp cha).
from_pretrained[[diffusers.SchedulerMixin.from_pretrained]]
from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None = None, subfolder: str | None = None, return_unused_kwargs: bool = False, **kwargs: Any)
Tham số:
pretrained_model_name_or_path (str hoặc os.PathLike, tùy chọn) : Có thể là: - Một chuỗi, model id (ví dụ google/ddpm-celebahq-256) của một model được huấn luyện trước lưu trên Hub. - Đường dẫn đến một thư mục (ví dụ ./my_model_directory) chứa cấu hình scheduler được lưu bằng save_pretrained().
subfolder (str, tùy chọn) : Vị trí thư mục con của tệp mô hình trong kho mô hình lớn hơn trên Hub hoặc cục bộ.
return_unused_kwargs (bool, tuỳ chọn, mặc định là False) : Xác định xem các kwargs không được lớp Python sử dụng có nên được trả về hay không.
cache_dir (str hoặc 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.
output_loading_info (bool, tùy chọn, mặc định là False) : Có nên trả về một từ điển chứa các khóa bị thiếu, các khóa không mong đợi và các thông báo lỗi hay không.
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.
Trả về: SchedulerMixin hoặc tuple[SchedulerMixin, dict[str, Any]]
Trình lập lịch được khởi tạo từ cấu hình. Nếu return_unused_kwargs là True, một tuple sẽ được trả về, trong đó phần tử thứ hai là một từ điển chứa các đối số từ khóa không được sử dụng.
Tạo một scheduler từ tệp cấu hình JSON có sẵn trong thư mục cục bộ hoặc kho Hub.
> Để sử dụng các mô hình riêng tư hoặc gated models, hãy đăng nhập với
hf > auth login. Bạn cũng có thể kích hoạt chế độ đặc biệt > "offline-mode" để sử dụng phương pháp này trong môi trường > có tường lửa.
save_pretrained[[diffusers.SchedulerMixin.save_pretrained]]
save_pretrained(save_directory: str | os.PathLike, push_to_hub: bool = False, **kwargs: Any)
Tham số:
save_directory (str hoặc os.PathLike) : Thư mục nơi tệp cấu hình JSON sẽ được lưu (sẽ được tạo nếu chưa tồn tại).
push_to_hub (bool, tùy chọn, mặc định là False) : Có đẩy mô hình của bạn lên Hugging Face Hub sau khi lưu hay không. Bạn có thể chỉ định kho lưu trữ muốn đẩy đến bằng repo_id (mặc định sẽ là tên của save_directory trong không gian tên của bạn).
kwargs (dict[str, Any], tùy chọn) : Các đối số từ khóa bổ sung được truyền đến phương thức push_to_hub().
Lưu một đối tượng cấu hình scheduler vào một thư mục để có thể tải lại bằng phương thức lớp from_pretrained().
SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]
diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]
diffusers.schedulers.scheduling_utils.SchedulerOutput(prev_sample: Tensor)
Tham số:
prev_sample (torch.Tensor có shape (batch_size, num_channels, height, width) đối với ảnh) : Mẫu (x_{t-1}) đã tính của bước thời gian trước đó. prev_sample nên được dùng làm đầu vào mô hình tiếp theo trong vòng lặp khử nhiễu.
Lớp cơ sở cho kết quả của hàm step của một trình lập lịch.
KarrasDiffusionSchedulers
KarrasDiffusionSchedulers là một khái quát hóa rộng rãi của các scheduler trong 🤗 Diffusers. Các scheduler trong lớp này được phân biệt ở cấp độ cao bởi chiến lược lấy mẫu nhiễu, loại mạng và phép quy mô hóa, chiến lược huấn luyện, và cách trọng số hóa loss.
Các scheduler khác nhau trong lớp này, tùy thuộc vào loại bộ giải phương trình vi phân thường (ODE), thuộc về phân loại nêu trên và cung cấp một sự trừu tượng hóa tốt cho thiết kế của các scheduler chính được triển khai trong 🤗 Diffusers. Các scheduler trong lớp này được liệt kê tại đây.
PushToHubMixin[[diffusers.utils.PushToHubMixin]]
diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]
diffusers.utils.PushToHubMixin()
Một Mixin để đẩy mô hình, bộ lập lịch hoặc pipeline lên Hugging Face Hub.
push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]
push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)
Tham số:
repo_id (str) : Tên của kho mà bạn muốn đẩy các tệp mô hình, trình lập lịch hoặc pipeline của mình đến. Nó phải chứa tên tổ chức của bạn khi đẩy đến một tổ chức. repo_id cũng có thể là đường dẫn đến một thư mục cục bộ.
commit_message (str, tùy chọn) : Thông điệp để commit khi đẩy. Mặc định là "Upload {object}".
private (bool, tuỳ chọn) : Có nên đặt kho thành riêng tư hay không. Nếu là None (mặc định), kho sẽ là công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại.
token (str, tùy chọn) : Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. Token được tạo ra khi chạy hf auth login (được lưu trong ~/.huggingface).
create_pr (bool, tùy chọn, mặc định là False) : Có tạo PR với các tệp đã tải lên hoặc commit trực tiếp hay không.
safe_serialization (bool, tùy chọn, mặc định là True) : Có chuyển đổi trọng số mô hình sang định dạng safetensors hay không.
variant (str, tùy chọn) : Nếu được chỉ định, trọng số sẽ được lưu ở định dạng pytorch_model.<variant>.bin.
Tải tệp mô hình, trình lập lịch hoặc pipeline lên 🤗 Hugging Face Hub.
Ví dụ:
from diffusers import UNet2DConditionModel
unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")
# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")
# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")
Xet Storage Details
- Size:
- 19 kB
- Xet hash:
- 842d50646a4413f18dbfb75b0281c3ba4b95f7edd435a8d7757d7273dffd9952
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.