Diffusers documentation

Penjadwal

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

Penjadwal

🤗 Diffusers menyediakan banyak fungsi scheduler untuk proses difusi. Scheduler mengambil output model (sampel yang sedang diiterasi oleh proses difusi) dan timestep untuk mengembalikan sampel yang telah dinoise. Timestep penting karena menentukan posisi langkah tersebut dalam proses difusi; data dihasilkan dengan mengiterasi maju sebanyak n timestep dan inferensi terjadi dengan mempropagasikan mundur melalui timestep. Berdasarkan timestep, scheduler dapat bersifat diskrit, di mana timestep berupa int, atau kontinu, di mana timestep berupa float.

Tergantung pada konteksnya, scheduler mendefinisikan cara menambahkan noise secara iteratif ke sebuah gambar atau cara memperbarui sampel berdasarkan output model:

  • selama pelatihan, sebuah scheduler menambahkan noise (ada berbagai algoritma untuk cara menambahkan noise) ke sebuah sampel untuk melatih model difusi
  • selama inference, scheduler mendefinisikan cara memperbarui sampel berdasarkan output dari model pretrained

Banyak scheduler diimplementasikan dari pustaka k-diffusion oleh Katherine Crowson, dan scheduler tersebut juga banyak digunakan di A1111. Untuk membantu Anda memetakan scheduler dari k-diffusion dan A1111 ke scheduler di 🤗 Diffusers, lihat tabel di bawah ini:

A1111/k-diffusion🤗 DiffusersPenggunaan
DPM++ 2MDPMSolverMultistepScheduler
DPM++ 2M KarrasDPMSolverMultistepSchedulerinisialisasi dengan use_karras_sigmas=True
DPM++ 2M SDEDPMSolverMultistepSchedulerinisialisasi dengan algorithm_type="sde-dpmsolver++"
DPM++ 2M SDE KarrasDPMSolverMultistepSchedulerinisialisasi dengan use_karras_sigmas=True dan algorithm_type="sde-dpmsolver++"
DPM++ 2S aN/Asangat mirip dengan DPMSolverSinglestepScheduler
DPM++ 2S a KarrasN/Asangat mirip dengan DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)
DPM++ SDEDPMSolverSinglestepScheduler
DPM++ SDE KarrasDPMSolverSinglestepSchedulerinisialisasi dengan use_karras_sigmas=True
DPM2KDPM2DiscreteScheduler
DPM2 KarrasKDPM2DiscreteSchedulerinisialisasi dengan use_karras_sigmas=True
DPM2 aKDPM2AncestralDiscreteScheduler
DPM2 a KarrasKDPM2AncestralDiscreteSchedulerinisialisasi dengan use_karras_sigmas=True
DPM adaptifN/A
DPM cepatN/A
EulerEulerDiscreteScheduler
Euler aEulerAncestralDiscreteScheduler
HeunHeunDiscreteScheduler
LMSLMSDiscreteScheduler
LMS KarrasLMSDiscreteSchedulerinisialisasi dengan use_karras_sigmas=True
N/ADEISMultistepScheduler
N/AUniPCMultistepScheduler

Jadwal noise dan jenis jadwal

A1111/k-diffusion🤗 Diffusers
Karrasinisialisasi dengan use_karras_sigmas=True
sgm_uniforminisialisasi dengan timestep_spacing="trailing"
sederhanainisialisasi dengan timestep_spacing="trailing"
eksponensialinisialisasi dengan timestep_spacing="linspace", use_exponential_sigmas=True
betainisialisasi dengan timestep_spacing="linspace", use_beta_sigmas=True

Semua scheduler dibangun dari kelas dasar SchedulerMixin yang mengimplementasikan utilitas tingkat rendah yang dibagikan oleh semua scheduler.

SchedulerMixin

kelas diffusers.SchedulerMixin

< >

( )

Kelas dasar untuk semua penjadwal.

SchedulerMixin berisi fungsi-fungsi umum yang dibagikan oleh semua scheduler, seperti fungsionalitas pemuatan dan penyimpanan secara umum.

ConfigMixin menangani penyimpanan atribut konfigurasi (seperti num_train_timesteps) yang diteruskan ke fungsi __init__ scheduler, dan atribut tersebut dapat diakses melalui scheduler.config.num_train_timesteps.

Atribut kelas:

  • _compatibles (list[str]) — Daftar kelas scheduler yang kompatibel dengan kelas scheduler induk. Gunakan from_config() untuk memuat kelas scheduler kompatibel yang berbeda (seharusnya dioverride oleh kelas induk).

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]]

Parameter

  • pretrained_model_name_or_path (str atau os.PathLike, opsional) — Dapat berupa:
    • String, model id (misalnya google/ddpm-celebahq-256) dari model pretrained yang dihosting di Hub.
    • Path ke direktori (misalnya ./my_model_directory) yang berisi konfigurasi scheduler yang disimpan dengan save_pretrained().
  • subfolder (str, opsional) — Lokasi subfolder dari file model di dalam repositori model yang lebih besar di Hub atau secara lokal.
  • return_unused_kwargs (bool, opsional, default False) — Apakah kwargs yang tidak dikonsumsi oleh kelas Python harus dikembalikan atau tidak.
  • cache_dir (str atau os.PathLike, opsional) — Path ke direktori tempat konfigurasi model pretrained yang diunduh di-cache jika cache standar tidak digunakan.
  • force_download (bool, opsional, default False) — Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang sudah di-cache jika ada.
  • proxies (dict[str, str], opsional) — Kamus server proxy yang digunakan berdasarkan protokol atau endpoint, misalnya {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Proxy digunakan pada setiap permintaan.
  • output_loading_info (bool, opsional, default False) — Apakah akan mengembalikan kamus yang berisi kunci yang hilang, kunci yang tidak terduga, dan pesan kesalahan.
  • local_files_only (bool, opsional, default False) — Apakah hanya memuat bobot model dan file konfigurasi lokal atau tidak. Jika diatur ke True, model tidak akan diunduh dari Hub.
  • token (str atau bool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. Jika True, token yang dihasilkan dari diffusers-cli login (disimpan di ~/.huggingface) akan digunakan.
  • revision (str, opsional, default "main") — Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, commit id, atau identifier apa pun yang diizinkan oleh Git.

Mengembalikan

SchedulerMixin atau tuple[SchedulerMixin, dict[str, Any]]

Scheduler yang diinstansiasi dari konfigurasi. Jika return_unused_kwargs adalah True, sebuah tuple dikembalikan di mana elemen kedua adalah kamus dari argumen kata kunci yang tidak digunakan.

Instansiasi scheduler dari file konfigurasi JSON yang sudah ditentukan sebelumnya di direktori lokal atau repositori Hub.

> Untuk menggunakan model privat atau model bergerbang, masuk dengan hf > auth login. Anda juga dapat mengaktifkan mode khusus > “offline-mode” untuk menggunakan metode ini di lingkungan > yang terisolasi oleh firewall.

save_pretrained

< >

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

Parameter

  • save_directory (str atau os.PathLike) — Direktori tempat file konfigurasi JSON akan disimpan (akan dibuat jika belum ada).
  • push_to_hub (bool, opsional, default False) — Apakah model Anda akan didorong ke Hugging Face Hub setelah disimpan. Anda dapat menentukan repositori yang ingin Anda tuju dengan repo_id (defaultnya adalah nama save_directory di namespace Anda).
  • kwargs (dict[str, Any], opsional) — Argumen kata kunci tambahan yang diteruskan ke metode push_to_hub().

Simpan objek konfigurasi scheduler ke sebuah direktori agar dapat dimuat ulang menggunakan metode kelas from_pretrained().

SchedulerOutput

kelas diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

Parameter

  • prev_sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) untuk gambar) — Contoh yang dihitung (x_{t-1}) dari langkah waktu sebelumnya. prev_sample harus digunakan sebagai input model berikutnya dalam loop denoising.

Kelas dasar untuk keluaran dari fungsi step sebuah scheduler.

KarrasDiffusionSchedulers

KarrasDiffusionSchedulers adalah generalisasi luas dari scheduler di 🤗 Diffusers. Scheduler dalam kelas ini dibedakan pada tingkat tinggi oleh strategi sampling noise, jenis jaringan dan scaling, strategi pelatihan, serta cara loss ditimbang.

Berbagai scheduler dalam kelas ini, tergantung pada jenis solver persamaan diferensial biasa (ODE), termasuk dalam taksonomi di atas dan menyediakan abstraksi yang baik untuk desain scheduler utama yang diimplementasikan dalam 🤗 Diffusers. Scheduler dalam kelas ini diberikan di sini.

PushToHubMixin

kelas diffusers.utils.PushToHubMixin

< >

( )

Mixin untuk mendorong model, scheduler, atau pipeline ke 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 )

Parameter

  • repo_id (str) — Nama repositori tempat Anda ingin mendorong file model, scheduler, atau pipeline Anda. Seharusnya mengandung nama organisasi Anda saat mendorong ke organisasi. repo_id juga bisa berupa path ke direktori lokal.
  • commit_message (str, opsional) — Pesan untuk commit saat push. Default ke "Upload {object}".
  • private (bool, opsional) — Apakah membuat repo menjadi privat. Jika None (default), repo akan menjadi publik kecuali default organisasi adalah privat. Nilai ini diabaikan jika repo sudah ada.
  • token (str, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. Token yang dihasilkan saat menjalankan hf auth login (disimpan di ~/.huggingface).
  • create_pr (bool, opsional, default False) — Apakah akan membuat PR dengan file yang diunggah atau langsung melakukan commit.
  • safe_serialization (bool, opsional, defaultnya True) — Apakah akan mengonversi bobot model ke format safetensors.
  • variant (str, opsional) — Jika ditentukan, bobot disimpan dalam format pytorch_model.<variant>.bin.

Unggah file model, scheduler, atau pipeline ke 🤗 Hugging Face Hub.

Contoh:

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