Diffusers documentation
Penjadwal
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 | 🤗 Diffusers | Penggunaan |
|---|---|---|
| DPM++ 2M | DPMSolverMultistepScheduler | |
| DPM++ 2M Karras | DPMSolverMultistepScheduler | inisialisasi dengan use_karras_sigmas=True |
| DPM++ 2M SDE | DPMSolverMultistepScheduler | inisialisasi dengan algorithm_type="sde-dpmsolver++" |
| DPM++ 2M SDE Karras | DPMSolverMultistepScheduler | inisialisasi dengan use_karras_sigmas=True dan algorithm_type="sde-dpmsolver++" |
| DPM++ 2S a | N/A | sangat mirip dengan DPMSolverSinglestepScheduler |
| DPM++ 2S a Karras | N/A | sangat mirip dengan DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...) |
| DPM++ SDE | DPMSolverSinglestepScheduler | |
| DPM++ SDE Karras | DPMSolverSinglestepScheduler | inisialisasi dengan use_karras_sigmas=True |
| DPM2 | KDPM2DiscreteScheduler | |
| DPM2 Karras | KDPM2DiscreteScheduler | inisialisasi dengan use_karras_sigmas=True |
| DPM2 a | KDPM2AncestralDiscreteScheduler | |
| DPM2 a Karras | KDPM2AncestralDiscreteScheduler | inisialisasi dengan use_karras_sigmas=True |
| DPM adaptif | N/A | |
| DPM cepat | N/A | |
| Euler | EulerDiscreteScheduler | |
| Euler a | EulerAncestralDiscreteScheduler | |
| Heun | HeunDiscreteScheduler | |
| LMS | LMSDiscreteScheduler | |
| LMS Karras | LMSDiscreteScheduler | inisialisasi dengan use_karras_sigmas=True |
| N/A | DEISMultistepScheduler | |
| N/A | UniPCMultistepScheduler |
Jadwal noise dan jenis jadwal
| A1111/k-diffusion | 🤗 Diffusers |
|---|---|
| Karras | inisialisasi dengan use_karras_sigmas=True |
| sgm_uniform | inisialisasi dengan timestep_spacing="trailing" |
| sederhana | inisialisasi dengan timestep_spacing="trailing" |
| eksponensial | inisialisasi dengan timestep_spacing="linspace", use_exponential_sigmas=True |
| beta | inisialisasi 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 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
< source >( 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 (
stratauos.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().
- String, model id (misalnya
- 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, defaultFalse) — Apakah kwargs yang tidak dikonsumsi oleh kelas Python harus dikembalikan atau tidak. - cache_dir (
stratauos.PathLike, opsional) — Path ke direktori tempat konfigurasi model pretrained yang diunduh di-cache jika cache standar tidak digunakan. - force_download (
bool, opsional, defaultFalse) — 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, defaultFalse) — Apakah akan mengembalikan kamus yang berisi kunci yang hilang, kunci yang tidak terduga, dan pesan kesalahan. - local_files_only (
bool, opsional, defaultFalse) — Apakah hanya memuat bobot model dan file konfigurasi lokal atau tidak. Jika diatur keTrue, model tidak akan diunduh dari Hub. - token (
strataubool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue, token yang dihasilkan daridiffusers-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
< source >( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )
Parameter
- save_directory (
stratauos.PathLike) — Direktori tempat file konfigurasi JSON akan disimpan (akan dibuat jika belum ada). - push_to_hub (
bool, opsional, defaultFalse) — Apakah model Anda akan didorong ke Hugging Face Hub setelah disimpan. Anda dapat menentukan repositori yang ingin Anda tuju denganrepo_id(defaultnya adalah namasave_directorydi 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
< source >( prev_sample: Tensor )
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
Mixin untuk mendorong model, scheduler, atau pipeline ke Hugging Face Hub.
push_to_hub
< source >( 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_idjuga 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. JikaNone(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 menjalankanhf auth login(disimpan di~/.huggingface). - create_pr (
bool, opsional, defaultFalse) — Apakah akan membuat PR dengan file yang diunggah atau langsung melakukan commit. - safe_serialization (
bool, opsional, defaultnyaTrue) — Apakah akan mengonversi bobot model ke formatsafetensors. - variant (
str, opsional) — Jika ditentukan, bobot disimpan dalam formatpytorch_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")