Diffusers documentation

Trình lập lịch

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

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ột 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🤗 DiffusersCách sử dụng
DPM++ 2MDPMSolverMultistepScheduler
DPM++ 2M KarrasDPMSolverMultistepSchedulerkhởi tạo với use_karras_sigmas=True
DPM++ 2M SDEDPMSolverMultistepSchedulerkhởi tạo với algorithm_type="sde-dpmsolver++"
DPM++ 2M SDE KarrasDPMSolverMultistepSchedulerkhởi tạo với use_karras_sigmas=True và algorithm_type="sde-dpmsolver++"
DPM++ 2S aN/Arất giống với DPMSolverSinglestepScheduler
DPM++ 2S a KarrasN/Arất giống với DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)
DPM++ SDEDPMSolverSinglestepScheduler
DPM++ SDE KarrasDPMSolverSinglestepSchedulerkhởi tạo với use_karras_sigmas=True
DPM2KDPM2DiscreteScheduler
DPM2 KarrasKDPM2DiscreteSchedulerkhởi tạo với use_karras_sigmas=True
DPM2 aKDPM2AncestralDiscreteScheduler
DPM2 a KarrasKDPM2AncestralDiscreteSchedulerkhởi tạo với use_karras_sigmas=True
DPM thích ứngN/A
DPM nhanhN/A
EulerEulerDiscreteScheduler
Euler aEulerAncestralDiscreteScheduler
HeunHeunDiscreteScheduler
LMSLMSDiscreteScheduler
LMS KarrasLMSDiscreteSchedulerkhởi tạo với use_karras_sigmas=True
N/ADEISMultistepScheduler
N/AUniPCMultistepScheduler

Lịch trình nhiễu và các loại lịch trình

A1111/k-diffusion🤗 Diffusers
Karraskhởi tạo với use_karras_sigmas=True
sgm_uniformkhởi tạo với timestep_spacing="trailing"
đơn giảnkhởi tạo với timestep_spacing="trailing"
exponentialkhởi tạo với timestep_spacing="linspace", use_exponential_sigmas=True
betakhở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

lớp 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 trình lập lịch, 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

< >

( pretrained_model_name_or_path: str | os.PathLike | None = Nonesubfolder: str | None = Nonereturn_unused_kwargs: bool = False**kwargs: Any ) → SchedulerMixin or tuple[SchedulerMixin, dict[str, 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 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ấ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 bên trong một kho lưu trữ mô hình lớn hơn trên Hub hoặc cục bộ.
  • return_unused_kwargs (bool, tùy chọn, mặc định là False) — Liệu 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) — 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.
  • 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à 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 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 xác thực HTTP bearer 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.

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 có kiểm soát truy cập, hãy đăng nhập bằng 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

< >

( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )

Tham số

  • save_directory (str hoặc os.PathLike) — Thư mục nơi tệp JSON cấu hình 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 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

lớp 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 đã tính (x_{t-1}) của bước thời gian trước đó. prev_sample nên được sử 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

lớp 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

< >

( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )

Tham số

  • repo_id (str) — Tên của kho mà bạn muốn đẩy tệp mô hình, trình lập lịch hoặc pipeline của mình đến. Nó nên 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, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu là None (mặc định), kho sẽ ở chế độ 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 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 hay 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")
Update on GitHub